一、理论基础
1、樽海鞘群算法
请参考这里。
2、基于衰减因子和动态学习的改进樽海鞘群算法
通过研究SSA的原理发现,由于位置更新搜索范围无约束,且精英个体的影响权重小,导致SSA在迭代后期不能进行很精确的搜索,跟随者不能很好的协助个体位置更新。因此,本文的改进思路从两个方面考虑:针对SSA在领导者更新阶段搜索范围不受限的问题,添加衰减因子,增强迭代后期的局部开发能力;针对跟随者位置更新的局限性,引入动态学习策略,提高全局探索能力。
(1)添加衰减因子
本文提出将衰减因子引入SSA,得到添加衰减因子的樽海鞘群算法(reduction factor salp swarm algorithm, RSSA),使得领导者位置更新范围随着迭代次数的增加而逐渐减小,收敛前期避免陷入局部极值,收敛后期越来越逼近最优值,达到更高的求解精度。
添加衰减因子的领导者位置更新公式(1)如下:
x
j
1
=
{
A
(
l
)
[
F
j
+
c
1
(
(
u
b
j
−
l
b
j
)
c
2
+
l
b
j
)
]
,
c
3
≥
0.5
A
(
l
)
[
F
j
−
c
1
(
(
u
b
j
−
l
b
j
)
c
2
+
l
b
j
)
]
,
c
3
<
0.5
(1)
x_j^1=\begin{dcases}A(l)[F_j+c_1((ub_j-lb_j)c_2+lb_j)],\quad c_3≥0.5\\A(l)[F_j-c_1((ub_j-lb_j)c_2+lb_j)],\quad c_3<0.5\end{dcases}\tag{1}
xj1={A(l)[Fj+c1((ubj−lbj)c2+lbj)],c3≥0.5A(l)[Fj−c1((ubj−lbj)c2+lbj)],c3<0.5(1)其中控制搜索范围的衰减因子
A
(
l
)
A(l)
A(l)是一个非线性递减函数,定义如下:
A
(
l
)
=
e
−
30
(
l
L
)
(2)
A(l)=\text e^{-30(\frac lL)}\tag{2}
A(l)=e−30(Ll)(2)收敛前期,搜索范围不受限,个体可以充分在全局移动,充分发挥算法的全局搜索能力,避免陷入局部极值;收敛后期,随着个体越来越逼近最优值,搜索范围也逐渐减小,个体在限制范围内进行精确搜索,增强局部搜索能力,以达到更高的求解精度。
(2)引入动态学习
为了增强精英个体的影响权重,本文将动态学习策略引入SSA,得到引入动态学习的樽海鞘群算法(dynamic learning salp swarm algorithm, DSSA),先比较
x
j
i
x_j^i
xji与
x
j
i
−
1
x_j^{i-1}
xji−1的适应值,在适应值较大的位置(即离最优值距离较远的位置)上添加削弱因子
k
k
k,以削弱较差位置个体的影响权重,增强较优位置个体的影响权重。
引入动态学习策略的跟随者位置更新公式如下:
x
j
i
=
{
1
2
(
k
×
x
j
i
+
x
j
i
−
1
)
,
f
(
x
j
i
)
≥
f
(
x
j
i
−
1
)
1
2
(
x
j
i
+
k
×
x
j
i
−
1
)
,
f
(
x
j
i
)
<
f
(
x
j
i
−
1
)
,
i
≥
2
(3)
x_j^i=\begin{dcases}\frac12(k×x_j^i+x_j^{i-1}),\quad f(x_j^i)≥f(x_j^{i-1})\\\frac12(x_j^i+k×x_j^{i-1}),\quad f(x_j^i)<f(x_j^{i-1})\end{dcases},i≥2\tag{3}
xji=⎩⎪⎨⎪⎧21(k×xji+xji−1),f(xji)≥f(xji−1)21(xji+k×xji−1),f(xji)<f(xji−1),i≥2(3)其中,
f
(
x
j
i
)
f(x_j^i)
f(xji)和
f
(
x
j
i
−
1
)
f(x_j^{i-1})
f(xji−1)分别表示两位置的适应值,
k
k
k是服从参数为0.5的指数分布随机数。
在收敛过程中,精英个体能更好的发挥协助作用,帮助领导者做决策,不断向食物源逼近,提高寻优效率。
(3)RDSSA的实现流程
将RSSA和DSSA结合,同时改变领导者和跟随者的位置更新公式,可以得到新的优化算法RDSSA,提高领导者局部开发能力,增强跟随者的协助作用,以提高收敛速度,获得更好的优化效果。RDSSA的实现流程如下所示:
Step 1 设定种群规模
N
N
N、迭代次数
I
t
e
r
a
t
i
o
n
Iteration
Iteration、维数
D
D
D和上下界;
Step 2 初始化樽海鞘群个体的位置,并计算各个体的适应值
F
i
t
n
e
s
s
Fitness
Fitness,将最小适应值个体的位置确定为食物源位置
F
o
o
d
P
o
s
i
t
i
o
n
FoodPosition
FoodPosition;
Step 3 生成衰减因子
A
(
l
)
A(l)
A(l),根据式(1)更新领导者位置;
Step 4 生成随机数
k
k
k,根据式(3)更新跟随者位置;
Step 5 计算更新位置后的个体适应值,若小于当前
F
o
o
d
P
o
s
i
t
i
o
n
FoodPosition
FoodPosition,则更新
F
o
o
d
P
o
s
i
t
i
o
n
FoodPosition
FoodPosition;
Step 6 判断当前迭代次数是否达到预设迭代次数,若已达到,结束迭代,否则返回执行Step 3;
Step 7 输出
F
o
o
d
P
o
s
i
t
i
o
n
FoodPosition
FoodPosition位置及该位置上的适应值
F
i
t
n
e
s
s
Fitness
Fitness。
RDSSA的伪代码如下图所示:
二、测试实验分析
本文将RDSSA与SSA、RSSA、DSSA进行对比,测试函数为文献[1]中的f1~f4(单峰函数)、f13~f16(多峰函数)。为了遵循实验公平性原则,实验基本参数保持一致:种群数量
N
N
N设为50,函数维数
D
D
D设为45,迭代次数
I
t
e
r
a
t
i
o
n
Iteration
Iteration设为500,每次实验结果为独立运行30次的平均值。
结果显示如下:
函数:F1
SSA:最差值: 3524.9065,最优值:998.8546,平均值:1973.4763,标准差:582.9121
RSSA:最差值: 2.4903e-35,最优值:1.0959e-35,平均值:1.6129e-35,标准差:2.811e-36
DSSA:最差值: 6.9699e-41,最优值:3.4148e-46,平均值:3.1646e-42,标准差:1.2662e-41
RDSSA:最差值: 4.9458e-64,最优值:4.6386e-69,平均值:3.8904e-65,标准差:1.0147e-64
函数:F2
SSA:最差值: 32.3036,最优值:17.566,平均值:25.5322,标准差:3.8434
RSSA:最差值: 2.565e-18,最优值:1.85e-18,平均值:2.1873e-18,标准差:1.9092e-19
DSSA:最差值: 2.4503e-21,最优值:2.7966e-23,平均值:5.5804e-22,标准差:7.2559e-22
RDSSA:最差值: 1.3688e-32,最优值:3.4198e-35,平均值:1.7116e-33,标准差:2.8507e-33
函数:F3
SSA:最差值: 21595.011,最优值:2401.204,平均值:8614.5134,标准差:4872.8367
RSSA:最差值: 2.0317e-34,最优值:2.5577e-35,平均值:8.0167e-35,标准差:4.1236e-35
DSSA:最差值: 9.5259e-41,最优值:1.3566e-44,平均值:1.2344e-41,标准差:2.2173e-41
RDSSA:最差值: 1.7051e-63,最优值:6.9384e-68,平均值:1.9419e-64,标准差:4.0834e-64
函数:F4
SSA:最差值: 21.8,最优值:13.3484,平均值:17.419,标准差:1.9018
RSSA:最差值: 1.7379e-18,最优值:9.8417e-19,平均值:1.3292e-18,标准差:1.8175e-19
DSSA:最差值: 6.9331e-22,最优值:1.5417e-23,平均值:2.0608e-22,标准差:1.6876e-22
RDSSA:最差值: 4.5634e-33,最优值:2.0181e-35,平均值:1.0902e-33,标准差:1.2728e-33
函数:F13
SSA:最差值: 312.019,最优值:179.0085,平均值:253.6474,标准差:43.6681
RSSA:最差值: 0,最优值:0,平均值:0,标准差:0
DSSA:最差值: 0,最优值:0,平均值:0,标准差:0
RDSSA:最差值: 0,最优值:0,平均值:0,标准差:0
函数:F14
SSA:最差值: 7.2999,最优值:4.7999,平均值:6.1065,标准差:0.69428
RSSA:最差值: 0,最优值:0,平均值:0,标准差:0
DSSA:最差值: 0,最优值:0,平均值:0,标准差:0
RDSSA:最差值: 0,最优值:0,平均值:0,标准差:0
函数:F15
SSA:最差值: 199.4559,最优值:30.7942,平均值:94.9727,标准差:36.4916
RSSA:最差值: 1.7068e-36,最优值:3.0966e-37,平均值:9.8005e-37,标准差:3.8859e-37
DSSA:最差值: 1.3726e-42,最优值:3.5218e-46,平均值:1.4833e-43,标准差:3.5428e-43
RDSSA:最差值: 2.8864e-65,最优值:1.2069e-69,平均值:1.1872e-66,标准差:5.2416e-66
函数:F16
SSA:最差值: 1072.8803,最优值:330.2378,平均值:632.5687,标准差:168.8757
RSSA:最差值: 2.2621e-36,最优值:1.1537e-37,平均值:4.1213e-37,标准差:3.8945e-37
DSSA:最差值: 2.017e-42,最优值:3.048e-47,平均值:1.4334e-43,标准差:3.9035e-43
RDSSA:最差值: 3.958e-66,最优值:1.2899e-69,平均值:6.9684e-67,标准差:1.03e-66
结果表明,本文提出的改进算法在收敛精度和收敛速度方面有较大提升,具有良好的优化性能。
三、参考文献
[1] 陈雷, 蔺悦, 康志龙. 基于衰减因子和动态学习的改进樽海鞘群算法[J]. 控制理论与应用, 2020, 37(8): 1766-1780.