集成随机惯性权重和差分变异操作的樽海鞘群算法-附代码
基于衰减因子和动态学习的改进樽海鞘群算法
文章目录
- 基于衰减因子和动态学习的改进樽海鞘群算法
- 1.樽海鞘群算法
- 2.改进樽海鞘群算法
- 2.1 PSO算法随机惯性权重的引入
- 2.2 集成DE算法的变异操作
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.python代码
摘要:为了提高樽海鞘群算法(Salp Swarm Algorithm,SSA)的收敛速度、计算精度和全局优化能力,在分析总结粒子群优化(Particle Swarm Optimization,PSO)和差分进化(Differential Evolution,DE)算法相关研究成果后,提出了一种集成PSO算法随机惯性权重和DE算法差分变异操作的改进SSA算法——iSSA。首先,将PSO算法的随机惯性权重引入SSA算法的追随者位置更新公式中,用于增强和平衡SSA算法的勘探与开发能力;其次,用DE算法的变异操作替代SSA算法的领导者位置更新操作,以提高SSA算法的收敛速度和计算精度。
1.樽海鞘群算法
基础樽海鞘群算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107767869
2.改进樽海鞘群算法
2.1 PSO算法随机惯性权重的引入
由 SSA 算法中的式 (3) 可知, 追随者 i i i 的第 j j j 维位置 x j i x_j^i xji 的更新操作直接受前一个追随者 i − 1 i-1 i−1 的第 j j j 维位置 x j i − 1 x_j^{i-1} xji−1 的 影响。然而, 在大多数情况下, 追随者 i − 1 i-1 i−1 的位置对应的解 通常较差, 从而导致 S S A \mathrm{SSA} SSA 算法易陷入局部最优, 收敛速度慢 且计算精度低。
在 PSO 算法中, 粒子速度更新直接决定着粒子位置更 新。惯性权重是 PSO 算法粒子速度更新公式中的重要参数, 它体现了上一代粒子对当前粒子速度更新的影响力, 用于平 衡 PSO 算法的勘探与开发
[
6
]
{ }^{[6]}
[6] 。尽管迄今为止已有大量学者 提出了各种 PSO 算法惯性权重控制策略, 但文献
[
15
]
[15]
[15] 的研究 表明, 在总计 18 种 PSO 算法惯性权重控制策略中, 除了随机 惯性权重以外, 常数项惯性权重优于其他所有的惯性权重控 制策略。
常数项惯性权重需要繁琐的算法参数调校, 因此本文将
P
S
O
\mathrm{PSO}
PSO 算法的随机惯性权重引入 SSA 算法追随者位置更新操 作中, 从而得到追随者位置更新公式:
x
j
i
=
1
2
(
x
j
i
+
w
×
x
j
i
−
1
)
(4)
x_j^i=\frac{1}{2}\left(x_j^i+w \times x_j^{i-1}\right)\tag{4}
xji=21(xji+w×xji−1)(4)
其中,
w
w
w 为随机惯性权重系数, 其取值方法如式 (5) 1 [16] 所示:
w
=
0.5
+
Random
(
0
,
1
)
/
2
(5)
w=0.5+\text { Random }(0,1) / 2 \tag{5}
w=0.5+ Random (0,1)/2(5)
其中, Random
(
0
,
1
)
(0,1)
(0,1) 表示均匀分布于
(
0
,
1
)
(0,1)
(0,1) 内的随机数, 故
w
w
w 的取值范围为
(
0.5
,
1
)
(0.5,1)
(0.5,1) 。显然, 此处引入的随机惯性权重没有 改变 SSA 算法的时间复杂度。
2.2 集成DE算法的变异操作
根据 SSA 算法的式(1), 在领导者位置更新操作中, 参与 者是食物源且没有追随者, 缺乏樽海鞘之间的协作和信息共 享, 容易导致 SSA算法过早收敛于较差的局部最优解。
变异操作是 DE 算法的重要组成部分, 它一般通过 3 个 不同的个体来为种群内每一个个体生成一个新个体, 通过比 例因子可以调节算法开发和勘探之间的平衡 。目前
D
E
\mathrm{DE}
DE 算法研究中最典型的变异操作有 5 种, 其中与 SSA 算法的式 (1)一样包含最优解且形式最简单的变异操作一般简称为:“DE/best/1”
D
E
\mathrm{DE}
DE / 。
综上所述, 本文提出用
D
E
\mathrm{DE}
DE 算法的上述变异操作来替代
S
S
A
\mathrm{SSA}
SSA 算法领导者的位置更新操作, 从而得到如式 (6) 所示的 领导者位置更新操作:
x
j
i
=
F
k
+
r
×
(
x
j
m
−
x
j
n
)
(6)
x_j^i=F_k+r \times\left(x_j^m-x_j^n\right) \tag{6}
xji=Fk+r×(xjm−xjn)(6)
3.实验结果
4.参考文献
[1]张志强,鲁晓锋,隋连升,李军怀.集成随机惯性权重和差分变异操作的樽海鞘群算法[J].计算机科学,2020,47(08):297-301.