SCI1区TOP:自适应学习粒子群算法SLPSO,深度解析+性能实测
目录
- 1.摘要
- 2.改进策略
- 3.自适应学习粒子群算法
- 4.结果展示
- 5.参考文献
- 6.获取代码
1.摘要
粒子群算法(PSO)是一种基于种群的随机搜索方法,广泛应用于科学和工程领域的连续空间优化问题,并已证明其高效性和有效性。许多实际问题的往往未知,因此依赖试错法寻找最合适PSO变体会导致较高的计算成本。本文提出了一种自适应学习粒子群算法(SLPSO),SLPSO结合了四种不同的PSO搜索策略,并通过概率模型描述每种策略被选择以更新粒子的概率,该模型能够根据策略在过去几代中的表现,自动调整用来提升搜索效率和优化结果。
2.改进策略
基于差分速度更新策略(DbV)
在许多速度更新策略中,PSO生成的速度向量通常被视为对旧速度向量的适度修改,受邻域粒子影响。这种方法导致其难以快速适应病态问题的不同优化阶段。因此, 采用差分进化策略(DE/current-to-rand/1):
U
i
d
←
X
i
d
+
K
×
(
X
k
d
−
X
i
d
)
+
F
×
(
X
j
d
−
X
h
d
)
U_{i}^{d}\leftarrow X_{i}^{d}+K\times\left(X_{k}^{d}-X_{i}^{d}\right)+F\times\left(X_{j}^{d}-X_{h}^{d}\right)
Uid←Xid+K×(Xkd−Xid)+F×(Xjd−Xhd)
受DE/current-to-rand/1策略的启发,DbV策略通过完全基于差异信息重新组合速度,避免了逐步调整速度的方式。与DE/current-to-rand/1不同,DbV不仅利用差异信息来更新速度向量,还将pbest作为吸引子,指导粒子的飞行方向:
V
i
a
d
i
d
←
X
k
d
−
X
j
d
,
c
=
N
(
0.5
,
0.2
)
.
V
i
d
←
c
×
V
i
a
d
i
d
+
c
×
(
p
b
e
s
t
i
d
−
X
i
d
)
.
V
i
d
=
min
(
V
max
d
,
max
(
V
i
d
,
V
min
d
)
)
,
\begin{aligned} & Viad_i^d\leftarrow X_k^d-X_j^d, \\ & c=N(0.5,0.2). \\ & V_i^d\leftarrow c\times Viad_i^d+c\times\left(pbest_i^d-X_i^d\right). \\ & V_i^d=\min\left(V_{\max}^d,\max\left(V_i^d,V_{\min}^d\right)\right), \end{aligned}
Viadid←Xkd−Xjd,c=N(0.5,0.2).Vid←c×Viadid+c×(pbestid−Xid).Vid=min(Vmaxd,max(Vid,Vmind)),
基于估计速度更新策略(EbV)
PSO的一个显著特点是其较高的收敛速度,但全局精英
g
b
e
s
t
gbest
gbest的使用会对整个种群产生强烈的影响 ,容易导致搜索过程陷入局部最优解。在复杂的多峰问题中,PSO算法通常在初期表现出快速的收敛速度,但这种收敛仅持续几个世代,随后便会被困于局部最优解。估计分布算法(EDA)是一种基于模型的优化方法,EDA的更新操作通过学习个体分布的概率模型来调整整个种群的分布。本文提出了一种速度更新策略,基于三个位置的局部分布估计进一步提升搜索效率:
C
=
(
D
−
1
)
N
(
0
,
1
)
D
+
C
(
0
,
1
)
D
.
V
i
d
←
(
m
e
a
n
i
d
−
X
i
d
)
+
C
3
(
p
b
e
s
t
i
d
−
m
e
a
n
i
d
)
2
+
(
X
i
d
−
m
e
a
n
i
d
)
2
+
(
X
k
d
−
m
e
a
n
i
d
)
2
.
V
i
d
=
min
(
V
max
d
,
max
(
V
i
d
,
V
min
d
)
)
,
\begin{aligned} \mathcal{C}= & \frac{(D-1)N(0,1)}{D}+\frac{\mathcal{C}(0,1)}{D}. \\ V_{i}^{d}\leftarrow & \left(mean_{i}^{d}-X_{i}^{d}\right)+\frac{\mathcal{C}}{\sqrt{3}}\sqrt{\left(pbest_{i}^{d}-mean_{i}^{d}\right)^{2}+\left(X_{i}^{d}-mean_{i}^{d}\right)^{2}+\left(X_{k}^{d}-mean_{i}^{d}\right)^{2}}. \\ V_{i}^{d}= & \min\left(V_{\max}^{d},\max\left(V_{i}^{d},V_{\min}^{d}\right)\right), \end{aligned}
C=Vid←Vid=D(D−1)N(0,1)+DC(0,1).(meanid−Xid)+3C(pbestid−meanid)2+(Xid−meanid)2+(Xkd−meanid)2.min(Vmaxd,max(Vid,Vmind)),
CLPSO and PSO-CL-pbest
在CLPSO中,每个粒子每个分量的速度都有可能受到其他粒子
p
b
e
s
t
pbest
pbest的影响。这种策略促进了种群的多样性,从而能够有效解决多峰问题。
V
i
d
←
w
×
V
i
d
+
c
×
r
a
n
d
i
d
×
(
p
b
e
s
t
f
i
(
d
)
d
−
X
i
d
)
.
V
i
d
=
min
(
V
max
d
,
max
(
V
i
d
,
V
min
d
)
)
,
\begin{aligned} & V_{i}^{d}\leftarrow w\times V_{i}^{d}+c\times rand_{i}^{d}\times\left(pbest_{f_{i}(d)}^{d}-X_{i}^{d}\right). \\ & V_{i}^{d}=\min\left(V_{\max}^{d},\max\left(V_{i}^{d},V_{\min}^{d}\right)\right), \end{aligned}
Vid←w×Vid+c×randid×(pbestfi(d)d−Xid).Vid=min(Vmaxd,max(Vid,Vmind)),
CLPSO在大多数问题中具有非常大的搜索范围,本文提出了一种新的变种——PSO-CL-pbest,该变种在相对较小的区域内进行搜索:
V
i
d
←
w
×
V
i
d
+
0.5
×
c
×
r
a
n
d
i
×
(
p
b
e
s
t
f
i
(
d
)
d
−
X
i
d
+
p
b
e
s
t
i
d
−
X
i
d
)
.
V
i
d
=
min
(
V
max
d
,
max
(
V
i
d
,
V
min
d
)
)
.
\begin{aligned} V_{i}^{d} & \leftarrow w\times V_{i}^{d}+0.5\times c\times rand_{i}\times\left(pbest_{f_{i}(d)}^{d}-X_{i}^{d}+pbest_{i}^{d}-X_{i}^{d}\right). \\ V_{i}^{d} & =\min\left(V_{\max}^{d},\max\left(V_{i}^{d},V_{\min}^{d}\right)\right). \end{aligned}
VidVid←w×Vid+0.5×c×randi×(pbestfi(d)d−Xid+pbestid−Xid).=min(Vmaxd,max(Vid,Vmind)).
3.自适应学习粒子群算法
在SLPSO中,每个策略都有一个执行概率
p
r
o
S
T
R
i
proSTR_i
proSTRi,用于确定第
i
i
i个策略在更新粒子时被选中的概率。初始时,所有策略的执行概率相等(0.25),并且四个策略的累加器
S
i
S_i
Si都初始化为0。在每一代中,粒子会根据适应度值进行排序,然后为每个粒子分配一个权重:
w
j
=
l
o
g
(
p
s
−
j
+
1
)
l
o
g
(
1
)
+
⋯
+
l
o
g
(
p
s
)
w_j=\frac{log(ps-j+1)}{log(1)+\cdots+log(ps)}
wj=log(1)+⋯+log(ps)log(ps−j+1)
这些权重会被加到与其对应的更新策略的累加器中。经过一定数量的代数(Gs)后,通过一定的规则更新每个更新策略的执行概率,以动态调整策略的使用频率:
p
r
o
S
T
R
j
′
=
(
1
−
α
)
p
r
o
S
T
R
j
+
α
S
j
G
s
,
p
r
o
S
T
R
j
=
p
r
o
S
T
R
j
′
/
(
p
r
o
S
T
R
1
′
+
⋯
+
p
r
o
S
T
R
4
′
)
,
\begin{aligned} & proSTR_{j}^{\prime}=(1-\alpha)proSTR_{j}+\alpha\frac{S_{j}}{Gs}, \\ & proSTR_{j}=proSTR_{j}^{\prime}/(proSTR_{1}^{\prime}+\cdots+proSTR_{4}^{\prime}), \end{aligned}
proSTRj′=(1−α)proSTRj+αGsSj,proSTRj=proSTRj′/(proSTR1′+⋯+proSTR4′),
伪代码
4.结果展示
5.参考文献
[1] Wang Y, Li B, Weise T, et al. Self-adaptive learning based particle swarm optimization[J]. Information Sciences, 2011, 181(20): 4515-4538.