粒子群算法基本公式:
xi为粒子当前位置,vi为粒子当前速度;
ω是惯性权重,ω越大,越容易扩展搜索空间,有搜索新空间的能力越强,粒子达到最优解后可能还会继续进化!
c1,c2是学习因子,通常取2,有时候需要根据实际情况考虑速度限制!(比如离散PSO时需要定好vmax以避免函数值太过靠近0或1,从而不具备随机性)
r1,r2是随机值,取值为[0,1];
pi为个体当前的最优解,gi为群体当前最优解;
xi为当前位置。
PSO算法参数分析
- ω是惯性权重,ω为0时,当粒子处在全局最优解时该粒子就静止了(这会造成各个子粒子的全局搜索能力减弱,局部搜索能力增强)
- c1,c2为学习因子,ω为惯性权重,这三者会影响运动惯性,使其具有全局搜索的能力,这三者的值越大,适应度较大的可能会冲出适应度高的区域,适应度低的有机会冲向适应度高的区域,整体可能呈现剧烈振荡的状态。
- 当c1=0时,该PSO为全局PSO
当c2=0时,该PSO为局部PSO
4.群体规模越大,群体计算的准确度越高,但是计算的速度明显会下降!一般取种群密度为20-40
5.当PSO不收敛时,可以考虑引入收敛因子K来保证收敛性,此时式子中可以不用ω
6.离散二进制PSO,也就是位置函数xi的取值是0,1,引入sigmoid函数(类似神经网络中常用的激活函数)