粒子群算法(Particle,Swarm Optimization,PSO)由Kennedy和Eberhart于1995年提出,算法模仿鸟群觅食行为对优化问题进行求解。
粒子群算法中每个粒子包含位置和速度两个属性,其中,位置代表了待求问题的一个候选解,速度决定了粒子飞行的方向和距离。
PSO通过粒子追随自己当前找到的个体最优解(pbest)和群体最优解(gbest)来完成优化。
初始解应当覆盖整个搜索空间,一般采用均匀分布随机生成初始解。
x i j 0 = x i , j m i n + r a n d ( 0 , 1 ) ⋅ ( x i , j m a x − x i , j m i n ) (5) x_{ij}^0=x_{i,j}^{min}+rand(0,1) \cdot (x_{i,j}^{max} - x_{i,j}^{min}) \tag{5} xij0=xi,jmin+rand(0,1)⋅(xi,jmax−xi,jmin)(5)
其中,rand(0,1)表示0-1之间的随机数, x i j m a x x_{ij}^{max} xijmax和 x i j m i n x_{ij}^{min} xijmin分别表示该问题第j个维度变量的上下界。
输入:超参数 ( w , c 1 , c 2 , N P , G m a x ) (w,c_1,c_2,NP,Gmax) (w,c1,c2,NP,Gmax)和搜索边界 X m i n X_{min} Xmin, X m a x X_{max} Xmax
输出:最优解
1:初始化
2:根据式(5)初始化位置种群X和速度种群V
3:记录个体最优pbest和群体最优gbest
4:优化搜索
5:For G = 1:Gmax
6: \qquad For i = 1:NP
7: \qquad \qquad 根据式(3)更新速度向量 V i G V_i^G ViG
8: \qquad \qquad 根据式(4)更新位置向量 X i G X_i^G XiG
9: \qquad \qquad If f ( X i G ) < p b e s t i f(X_i^G) < pbest_i f(XiG)<pbesti
10: \qquad \qquad \qquad p b e s t i = f ( X i G ) pbest_i = f(X_i^G) pbesti=f(XiG)
11: \qquad \qquad End
12: \qquad End
13: \qquad 更新群体最优 g b e s t gbest gbest
14:End
注:优化算法并不保证能够得到问题的最优解,因此,算法输出的最优解并非问题的整体最优解,而是搜索过程中最好的一个解。
实验选取二维的平方和函数,函数的最小值在点(a,b)取得,最小值为0。
f ( x 1 , x 2 ) = ( x 1 − a ) 2 + ( x 2 − b ) 2 (6) f(x_1,x_2) = (x_1 - a)^2 + (x_2-b)^2 \tag{6} f(x1,x2)=(x1−a)2+(x2−b)2(6)
实验参数如下:
参数 | 值 |
---|---|
问题维度D | 2 |
种群数NP | 30 |
最大进化次数Gmax | 50 |
惯性系数 w w w | 0.5 |
个体学习因子 c 1 c_1 c1 | 1 |
社会学习因子 c 2 c_2 c2 | 1 |
取值范围 | (-100,100) |
最优值 | 最差值 | 平均值 | 标准差 |
---|---|---|---|
6.663e-14 | 4.767e-12 | 6.490e-13 | 9.266e-13 |
关注微信公众号数学模型与算法回复 粒子群算法
获取python代码
[1] Storn R , Price K .Differential Evolution – A Simple and Efficient Heuristic for global Optimization over Continuous Spaces[J].Journal of Global Optimization, 1997, 11:341-359.DOI:10.1023/A:1008202821328.
[2] Das S , Abraham A , Chakraborty U K ,et al.Differential Evolution Using a Neighborhood-Based Mutation Operator[J].IEEE Transactions on Evolutionary Computation, 2009, 13(3):526-553.DOI:10.1109/TEVC.2008.2009457.