目录
- 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.