4) 对每个微粒,将其适应值与其经历过得最好位置作比较,如果较好,将其作为当前的最好位置;
5) 比较当前所有pbest个gbest的值,更新gbest;
6) 若满足停止条件(通常为预设的运算精度或迭代次数),搜索停止,输出结果否侧返回3)继续搜索。
使用matlab软件编程实现的基本粒子群优化函数为:PSO
功能:用基本粒子群算法求解无约束优化问题。
调用格式:[xm,fv]=PSO(fitness,N,c1,c2,w,M,D)
其中,fitness:待优化的目标函数:
N:粒子数目;
c1:学习因子1;
c2:学习因子2;
w:惯性权重;
M:最大迭代次数;
D:自变量的个数;
xm:目标函数取最小值时的自变量值;
fv:目标函数的最小值。
3.2.2 带压缩因子的粒子群算法YSPSO
学习因子c1和c2决定了粒子本身经验信息和其他粒子的经验信息对粒子运行轨迹的影响,反映了粒子群之间的信息交流。设置c1较大的值,会使粒子过多的在局部范围内徘徊,而较大的c2值,则又会促使粒子过早收敛到局部最小值。
于是为了有效控制粒子群飞行速度达到全局探测与局部开采两者之间的有效平衡,便引入了收缩因子的PSO算法。
其速度更新公式为:
为保证算法的顺利求解,c1和c2必须大于4,典型的取法有:
(1) c1=c2=2.05,此时C为4.1收缩因子为0.729,这在形式上就等于w=0.729,c1=c2=1.49556的基本PSO算法;
(2) 微粒规模N=30,c1=2.8,c2=1.3,此时C为4.1,收缩因子为0.729
带压缩因子的粒子群算法的基本步骤如下:
1) 随机初始化种群中各微粒的位置和速度;
2) 评价每个微粒的适应度,将当前各微粒的位置和适应值存储在各微粒的
pbest中,将左右的pbest中适应值最优个体的位置和适应值存储于gbest中;
3) 用下式更新粒子的速度和位移:
其中
4) 对每个微粒,将其适应值与其经历过的最好位置作比较,如果较好,将
其作为当前最好的位置;
5) 比较当前所有的pbest和gbest的值,更新gbest;
6) 若满足停止条件(通常为预设的运算精度或迭代次数),搜索停止,输
出结果,否则返回3)继续搜索。
使用matlab软件编程实现带压缩因子的粒子群优化函数为:YSPSO
功能:用带压缩因子的粒子群算法求解无约束优化问题。
调用格式:[xm,fv]=YSPSO(fitness,N,c1,c2,w,M,D)
其中,fitness:待优化的目标函数:
N:粒子数目;
c1:学习因子1;
c2:学习因子2;
w:惯性权重;
M:最大迭代次数;
D:自变量的个数;
xm:目标函数取最小值时的自变量值;
fv:目标函数的最小值。
3.2.3权重改进的粒子群算法
在微粒群算法的可调整参数中,惯性权重w是最重要的参数,较大的w有利于提高算法的全局搜索能力,而较小的w会增强算法的局部搜索能力,根据不同的权重变化公式,可得到不同的PSO算法,常见的有线性递减权重法,自适应权重法,随即权重法等。
1. 线性递减的权重法(LinWPSO)
由于较大的惯性因子有利于跳出局部极小点,便于全局搜索,而较小的惯性因子则有利于对当前的搜索区域进行精确局部搜索,以利于算法收敛,因此正对PSO算法容易早熟以及算法后期在全局最优解附近产生震荡现象,可以采用线性变化的权重,让惯性权重从最大值 线性减小到 ,w随算法迭代次数的变化公式为: Matlab的粒子群算法的仿真研究 (6):http://www.youerw.com/tongxin/lunwen_9916.html