其中, , 分别表示w的最大值和最小值,t表示当前迭代步数, 表示最大迭代步数,通常取 =0.9, =0.4。
线性递减粒子群算法的基本步骤如下:
1)随机初始化种群中各微粒的位置和初始速度;
2)评价每个微粒的适应度,将当前各微粒的位置和适应值存储在各微粒的pbest中,将所有pbest中适应值最优个体的位置和适应值存储于gbest中;
3)用下式更新粒子的速度和位移:
4)跟更新惯性权重 ;
5)比较当前所有的pbest和gbest的值,更新gbest;
6)若满足停止条件(通常为预设的运算精度或迭代次数),搜索停止,输出结果,否则返回3)继续搜索。
使用matlab软件编程实现线性递减权重粒子群优化函数为:LinWPSO
功能:用线性递减权重粒子群优化算法求解无约束优化问题。
调用格式:[xm,fv]= LinWPSO (fitness,N,c1,c2,w,M,D)
其中,fitness:待优化的目标函数:
N:粒子数目;
c1:学习因子1;
c2:学习因子2;
w:惯性权重;
M:最大迭代次数;
D:自变量的个数;
xm:目标函数取最小值时的自变量值;
fv:目标函数的最小值
2. 自适应权重法(SAPSO)
为了平衡PSO算法的全局搜索能力和局部改良能力,还可采用非线性的动态惯性权重系数公式,其表达式如下:
其中, , 分别表示w的最大值和最小值,f表示粒子当前的目标函数值,favg和fmin分别表示当前所有微粒的平均目标值和最小目标值。在上式中,惯性权重最小微粒的目标函数值而自动改变,因此称为自适应权重。
当各微粒的目标值趋于或者局部趋于最优时,将是惯性权重增加,而各微粒的目标值比较分散时,将使惯性权重减小,同时对于目标函数值优于平均目标的微粒,其对应的惯性权重因子较小,从而保护了该微粒,反之对于目标函数值差于平均目标值的微粒,其对应的惯性权重因子较大,是的该微粒向较好的搜索区域靠拢。
自适应权重粒子群算法的基本步骤如下。
1)随机初始化种群中各微粒的位置和初始速度;
2)评价每个微粒的适应度,将当前各微粒的位置和适应值存储在各微粒的pbest中,将所有pbest中适应值最优个体的位置和适应值存储于gbest中;
3)用下式更新粒子的速度和位移:
4)更新权重 ;
5)比较当前所有的pbest和gbest的值,更新gbest;
6)若满足停止条件(通常为预设的运算精度或迭代次数),搜索停止,输出结果,否则返回3)继续搜索。
使用matlab软件编程实现自适应减权重粒子群优化算法优化函数为:SAWPSO
功能:用自适应权重法求解无约束优化问题。
调用格式:[xm,fv]= SAPSO (fitness,N,c1,c2,w,M,D)
其中,fitness:待优化的目标函数:
N:粒子数目;
c1:学习因子1;
c2:学习因子2;
w:惯性权重;
M:最大迭代次数;
D:自变量的个数;
xm:目标函数取最小值时的自变量值;
fv:目标函数的最小值。
3.2.4二阶振荡粒子群算法
二阶微粒群算法是渐渐收敛的,为了进一步提高群体的多样性,可考虑在二阶微粒群算法中引入一个震荡环节,来改善算法全局的收敛性。其速度更新方程为:
其中 使得算法具有较强的全局搜索能力,算法后期(指的是进化数大于进化代数的一半)取 ,使得算法能够渐渐收敛。
二阶振荡微粒群算法的具体实现步骤如下。
1)随机初始化群中各微粒的位置和速度; Matlab的粒子群算法的仿真研究 (7):http://www.751com.cn/tongxin/lunwen_9916.html