PSO算法
粒子群算法(Particle,Swarm Optimization,PSO)由Kennedy和Eberhart于1995年提出,算法模仿鸟群觅食行为对优化问题进行求解。
粒子群算法中每个粒子包含位置和速度两个属性,其中,位置代表了待求问题的一个候选解,速度决定了粒子飞行的方向和距离。
- 位置向量
X
i
t
=
(
x
i
1
t
,
x
i
2
t
,
⋯
x
i
,
D
t
)
(1)
X_i^t = (x_{i1}^t,x_{i2}^t,cdots x_{i,D}^t) tag{1}
- 速度向量
V
i
t
=
(
v
i
1
t
,
v
i
2
t
,
⋯
v
i
,
D
t
)
(2)
V_i^t = (v_{i1}^t,v_{i2}^t,cdots v_{i,D}^t) tag{2}
算法超参数
-
w
w
-
c
1
c_1
-
c
2
c_2
- NP:种群大小;
- Gmax:最大迭代数。
寻优公式
PSO通过粒子追随自己当前找到的个体最优解(pbest)和群体最优解(gbest)来完成优化。
- 速度更新:
V
i
t
+
1
=
w
V
i
t
+
c
1
r
1
(
p
b
e
s
t
i
t
−
x
i
t
)
+
c
2
r
2
(
g
b
e
s
t
t
−
x
i
t
)
(3)
V_i^{t+1}=wV_i^t+c_1 r_1(pbest_i^t-x_i^t) + c_2 r_2(gbest^t-x_i^t) tag{3}
其中,p
b
e
s
t
i
t
pbest_i^t
t
t
i
i
g
b
e
s
t
t
gbest^t
t
t
r
1
,
r
2
r_1,r_2
- 位置更新
X
i
t
+
1
=
X
i
t
+
V
i
t
+
1
(4)
X_i^{t+1}=X_i^t+V_i^{t+1} tag{4}
初始化
初始解应当覆盖整个搜索空间,一般采用均匀分布随机生成初始解。
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
)
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.
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net