标准粒子群算法(PSO)matlab实现

标准PSO算法的核心公式如下:
标准粒子群算法(PSO)matlab实现
其中,w,c1,c2是预置好的:
w称为惯性权重,大小一般在[0.5,1.5]。
c1,c2称为学习因子,一般取值[1,4],通常设置的c1=c2,但是c1与c2不必完全相同。

此实验是在二维空间寻找最小值,设置多峰函数:
z = x^2 + y-7cos(pix)-8cos(2pi*y);
它的图像如下所示,我们要找的是z的最小值,也是z轴的最低点。
标准粒子群算法(PSO)matlab实现

下面是一些参数设置的变化对粒子收敛情况的影响
本次实验中,种群规模为100,迭代次数为100,其他参数进行不断的变化
(1)w=0.8 , c1=1.4 , c2=1.4 这是一般情况下参数的设置。
标准粒子群算法(PSO)matlab实现
上图是粒子群在三维图上的变化,可以看出粒子的分布越来越集中,由于寻找的是最小值,后期的分布很难看出,以下是x-y的一个俯视图,看出粒子越来越集中。
标准粒子群算法(PSO)matlab实现
后面为了更加直观的了解粒子的收敛情况,只给出粒子在二维平面(x,y)的一个运动情况。
标准粒子群算法(PSO)matlab实现

(2)w=1.2 , c1=1.4 , c2=1.4 惯性权重变大,使得粒子对上一代的速度继承了更多,可能会导致粒子收敛困难。

标准粒子群算法(PSO)matlab实现

(3)w=0.8 , c1=3 , c2=1.4。这里将w继续设置为0.8,个体学习因子c1变大,对收敛会有部分影响,通过多次实验发现它会导致最终寻找的最优解的变化范围变大。(仅个人观点)
标准粒子群算法(PSO)matlab实现

(4)w=0.8 , c1=1.4 , c2=3。群体学习因子c2变大,对收敛会有部分影响,但是影响程度没有w剧烈。
标准粒子群算法(PSO)matlab实现

以上就是PSO的简单总结,初次更博,可能存在很多不足。matlab代码放出可能重复率较高,若有读者感兴趣可私信。