一、理论基础
1、樽海鞘群算法
请参考这里。
2、改进的樽海鞘群算法
(1)加权重心学习策略
本文提出了加权重心,根据个体的优劣状况使用不同的权重来计算重心,可以在不忽略较差个体的同时向更多优秀个体学习,合理利用了种群的信息,同时避免了只向最优个体学习陷入早熟。
定义1 重心。设
(
x
1
,
x
2
,
⋯
,
x
n
)
(x^1,x^2,\cdots,x^n)
(x1,x2,⋯,xn)是
D
D
D维空间中的
n
n
n个点,则整体重心为
M
=
x
1
+
x
2
+
⋯
+
x
n
n
(1)
M=\frac{x^1+x^2+\cdots+x^n}{n}\tag{1}
M=nx1+x2+⋯+xn(1)加权重心公式为
M
W
=
∑
i
=
1
n
x
i
(
f
b
a
d
−
f
x
i
α
)
+
F
(
f
b
a
d
−
f
F
α
)
n
+
1
(2)
M_W=\frac{\displaystyle\sum_{i=1}^nx^i(\frac{f_{bad}-f_{x^i}}{\alpha})+F(\frac{f_{bad}-f_F}{\alpha})}{n+1}\tag{2}
MW=n+1i=1∑nxi(αfbad−fxi)+F(αfbad−fF)(2)
α
=
∑
i
=
1
n
(
f
b
a
d
−
f
x
i
)
+
(
f
b
a
d
−
f
F
)
(3)
\alpha=\sum_{i=1}^n(f_{bad}-f_{x^i})+(f_{bad}-f_F)\tag{3}
α=i=1∑n(fbad−fxi)+(fbad−fF)(3)其中,
M
W
M_W
MW为加权重心;
f
b
a
d
f_{bad}
fbad为当前种群中最差个体适应度值;
f
F
f_F
fF为食物源适应度值;
f
x
i
f_{x^i}
fxi为当前种群
x
i
x^i
xi个体适应度值;
F
F
F为食物源位置;
(
f
b
a
d
−
f
)
/
α
(f_{bad}-f)/\alpha
(fbad−f)/α是个体的权重,越优秀的个体其权重越大,在加权重心中占比也就越大,同时在加权重心引入食物源的位置和权重,可以更加充分地利用全局种群信息。
修改后的领导者公式为
x
i
=
w
x
i
+
r
a
n
d
×
(
M
W
−
x
i
)
,
w
=
(
l
/
l
max
)
2
(4)
x^i=wx^i+rand×(M_W-x^i),w=(l/l_{\max})^2\tag{4}
xi=wxi+rand×(MW−xi),w=(l/lmax)2(4)修改后的公式可以在向最优解逐渐学习的同时没有过多丢失种群多样性。
w
w
w用来调节个体在搜索过程中对自身位置的依赖,搜索前期较低的
w
w
w可以降低个体对自身的依赖,从而增大了搜索的范围,算法的全局搜索能力得到增强。搜索后期
w
w
w逐渐向1靠拢,不影响算法寻优。
(2)自适应惯性权重
自适应惯性权重在很多群体智能优化算法中被使用,搜索前期权重较大,可以增强全局搜索能力,搜索后期自适应权重较小,可以增强局部寻优能力。使用的自适应惯性权重公式为 w = λ − φ × t / T × cos ( π t ) (5) w=\lambda^{-\varphi×t/T}×\cos(\pi t)\tag{5} w=λ−φ×t/T×cos(πt)(5)将式(5)应用到旧的追随者更新公式中,新的追随者更新公式为 x j i = 1 2 ( x j i + w x j i − 1 ) (6) x_j^i=\frac12(x_j^i+wx_j^{i-1})\tag{6} xji=21(xji+wxji−1)(6)当 λ = 2 , φ = 4 / 3 \lambda=2,\varphi=4/3 λ=2,φ=4/3时,式(5)的值逐渐为从-1和1逐渐向-0.4和0.4收敛,能够提高计算复杂度的同时提高算法前期的搜索范围,增加种群多样性。
(3)逐维随机差分变异
使用随机差分变异进行逐维变异,通过该变异得到一个新的个体的维度,具体公式为 x j i = r 1 × ( F j − x j i ) + r 2 × ( x j ′ − x j i ) (7) x_j^i=r_1×(F_j-x_j^i)+r_2×(x_j'-x_j^i)\tag{7} xji=r1×(Fj−xji)+r2×(xj′−xji)(7)其中, x j i x_j^i xji为樽海鞘群中的第 i i i个个体的第 j j j维; F j F_j Fj为食物源位置的第 j j j维; x j ′ x_j' xj′为种群中随机的一个个体的第 j j j维; r 1 r_1 r1和 r 2 r_2 r2为 [ 0 , 1 ] [0,1] [0,1]的随机数。在种群位置更新完成后,使用逐维随机差分变异对个体的每个维度进行变异,某一维度进行变异后对其进行评价,如果优秀,则保留变异后的解,如果变异后评价结果变差,则舍弃较差的维度信息,减少了各个维度间的干扰,同时增大了搜索的范围。由于变异操作具有一定的盲目性,将所有个体都进行逐维随机差分变异势必会导致算法的搜索效率下降和计算量大幅的增加,所以仅挑选种群中最优秀和最差个体进行变异,对最优个体变异可以提高搜索效率,对最差个体变异可以提高搜索范围,跳出局部最优解。
(4)改进后的算法步骤
为了算法在迭代的前期能够有较强的全局搜索能力,选取种群中前一半的个体作为领导者,增多领导者可以增强算法的随机性。算法具体步骤如下:
a)初始种群和参数。初始化种群个体数量
N
N
N,最大迭代次数
T
T
T,随机初始化种群位置。
b)计算种群每个个体的适应度,最优的个体作为食物位置。
c)根据位置更新公式更新个体位置。前一半个体为领导者使用式(4)进行更新,后一半个体为追随者使用式(6)进行更新。
d)对更新完的个体选择最优和最差个体,对其通过式(7)进行逐维随机差分变异,将更新的维度与其余维度组成新的个体,比较变异前后个体适应度值的变化,如果好则保留。
e)找出最优个体适应度值更新食物位置。
f)判断是否满足迭代次数要求或精度要求,若是转步骤g),否则返回步骤c)。
g)输出最优个体的适应度值。
二、实验仿真及分析
实验中所有算法均设置参数:种群规模为30,最大迭代次数为500。选取了基本樽海鞘群算法(SSA)和六个改进的樽海鞘群算法,分别为基于疯狂自适应的樽海鞘群算法(CASSA)[2]、改进的樽海鞘群算法(ISSA)[3]、基于Lévy飞行策略条件化更新的樽海鞘群算法(LECUSSA)[4]、集成随机惯性权重和差分变异操作的樽海鞘群算法(iSSA)[5]、基于衰减因子和动态学习的改进樽海鞘群算法(RDSSA)[6]、面向全局搜索的自适应领导者樽海鞘群算法(ALSSA)[7]与本文改进的樽海鞘群算法(MSSA)[1]进行对比实验。使用MATLAB分别进行独立的30次仿真实验,其中MSSA、CASSA 和 ISSA 单独设置参数,如文献[1]中的表3所示。以文献[1]中的F1(30维)、F5(10维)、F6(50维)、F8(100维)为例。
结果显示如下:
函数:F1
SSA:最差值: 1.4257e-06,最优值:3.6611e-08,平均值:1.9868e-07,标准差:3.5126e-07
CASSA:最差值: 2.121e-82,最优值:1.2182e-92,平均值:7.0701e-84,标准差:3.8723e-83
LECUSSA:最差值: 5.2128e-12,最优值:2.1717e-15,平均值:7.0647e-13,标准差:1.136e-12
ISSA:最差值: 4.9076e-85,最优值:3.2109e-104,平均值:1.6378e-86,标准差:8.9596e-86
iSSA:最差值: 4.7231e-93,最优值:8.6338e-111,平均值:5.0594e-94,标准差:1.0098e-93
RDSSA:最差值: 1.4739e-42,最优值:5.8758e-44,平均值:5.8375e-43,标准差:3.9649e-43
ALSSA:最差值: 1.1028e-81,最优值:1.4971e-93,平均值:3.9106e-83,标准差:2.0131e-82
MSSA:最差值: 1.4746e-292,最优值:4.8313e-295,平均值:1.2518e-293,标准差:0
函数:F5
SSA:最差值: 323.7262,最优值:0.035276,平均值:45.5137,标准差:78.5525
CASSA:最差值: 9,最优值:8.8098,平均值:8.9683,标准差:0.039024
LECUSSA:最差值: 9,最优值:8.9963,平均值:8.9998,标准差:0.00073805
ISSA:最差值: 6.0819,最优值:4.4772,平均值:5.2447,标准差:0.4189
iSSA:最差值: 9,最优值:8.9318,平均值:8.9897,标准差:0.016029
RDSSA:最差值: 8.9633,最优值:8.7538,平均值:8.8913,标准差:0.049118
ALSSA:最差值: 8.9997,最优值:8.846,平均值:8.9578,标准差:0.043024
MSSA:最差值: 8.7577,最优值:8.2762,平均值:8.5251,标准差:0.14199
函数:F6
SSA:最差值: 135.0256,最优值:48.9865,平均值:86.343,标准差:23.8528
CASSA:最差值: 0,最优值:0,平均值:0,标准差:0
LECUSSA:最差值: 2.7853e-12,最优值:0,平均值:3.9601e-13,标准差:7.53e-13
ISSA:最差值: 0,最优值:0,平均值:0,标准差:0
iSSA:最差值: 0,最优值:0,平均值:0,标准差:0
RDSSA:最差值: 0,最优值:0,平均值:0,标准差:0
ALSSA:最差值: 0,最优值:0,平均值:0,标准差:0
MSSA:最差值: 0,最优值:0,平均值:0,标准差:0
函数:F8
SSA:最差值: 23.9605,最优值:8.203,平均值:13.3885,标准差:3.4043
CASSA:最差值: 0,最优值:0,平均值:0,标准差:0
LECUSSA:最差值: 8.6403e-12,最优值:0,平均值:1.2075e-12,标准差:1.919e-12
ISSA:最差值: 0.073737,最优值:0,平均值:0.0092238,标准差:0.02158
iSSA:最差值: 0,最优值:0,平均值:0,标准差:0
RDSSA:最差值: 0,最优值:0,平均值:0,标准差:0
ALSSA:最差值: 0,最优值:0,平均值:0,标准差:0
MSSA:最差值: 0,最优值:0,平均值:0,标准差:0
实验结果表明,三个改进的策略均是有效的,且改进后收敛精度和算法稳定性上优于基本樽海鞘群算法和其他改进的算法,收敛速度优于大多数的改进算法。
三、参考文献
[1] 陈连兴, 牟永敏. 一种改进的樽海鞘群算法[J]. 计算机应用研究, 2021, 38(6): 1648-1652.
[2] 张达敏, 陈忠云, 辛梓芸, 等. 基于疯狂自适应的樽海鞘群算法[J]. 控制与决策, 2020, 35(9): 2112-2120.
[3] 王彦军, 王秋萍, 王晓峰. 改进的樽海鞘群算法及在焊接梁问题中的应用[J]. 西安理工大学学报, 2019, 35(4): 484-493.
[4] 张严, 秦亮曦. 基于Levy飞行策略的改进樽海鞘群算法[J]. 计算机科学, 2020, 47(7): 154-160.
[5] 张志强, 鲁晓锋, 隋连升, 等. 集成随机惯性权重和差分变异操作的樽海鞘群算法[J]. 计算机科学, 2020, 47(8): 297-301.
[6] 陈雷, 蔺悦, 康志龙. 基于衰减因子和动态学习的改进樽海鞘群算法[J]. 控制理论与应用, 2020, 37(8): 1766-1780.
[7] 刘景森, 袁蒙蒙, 左方. 面向全局搜索的自适应领导者樽海鞘群算法[J]. 控制与决策, 2021, 36(9): 2152-2160.