请参考这里。
请参考这里。
针对SSA算法容易陷入局部最优的缺陷,本文提出“阶梯式”惯性权值调整策略,惯性权值在算法前期取固定最大值用于提高算法的全局探索能力,在算法后期取固定最小值用来提高算法的局部开发能力,其表达式为:
x
j
i
=
1
2
(
x
j
i
+
ω
(
t
)
x
j
i
−
1
)
(1)
x_j^i=\frac12\left(x_j^i+\omega(t)x_j^{i-1}\right)\tag{1}
xji=21(xji+ω(t)xji−1)(1)
ω
(
t
)
=
{
ω
max
,
t
/
T
max
≤
λ
ω
min
,
t
/
T
max
>
λ
(2)
\omega(t)=
模拟退火算法的特点为在一定的概率情况下保留劣质群体,增加种群的多样性,在一定程度上提高了跳出局部最优的能力。在全局寻优方面,本文采取模拟退火算法与SSA算法结合的方式,在SSA算法求出食物源位置之后再进行模拟退火处理,对食物源位置进行调整,其接受劣质群体概率的公式为:
P
=
{
1
,
f
new
(
X
j
)
<
f
(
X
j
)
exp
(
−
(
f
new
(
X
j
)
−
f
(
X
j
)
)
/
T
)
,
f
new
(
X
j
)
≥
f
(
X
j
)
(3)
P=
改进的SSA算法(STSA-SSA)具体实现步骤如下:
(1)设置算法参数并初始化种群:种群个数
N
N
N,最大迭代次数
T
max
T_{\max}
Tmax,可调参数
λ
\lambda
λ,惯性权值
ω
max
\omega_{\max}
ωmax和
ω
min
\omega_{\min}
ωmin;引入Tent混沌映射序列初始化种群,生成一个
N
×
d
N\times d
N×d维的矩阵。
(2)计算适应度值:计算每个樽海鞘个体的适应度值,选取适应度值最小的个体位置作为食物源位置。
(3)领导者和追随者位置更新:选取一半的樽海鞘个体更新领导者位置,可调参数
λ
\lambda
λ的变化,选定不同的惯性权值根据式(1)更新追随者位置。
(4)食物源位置更新:根据更新后的樽海鞘群个体计算适应度值,若小于原食物源位置的适应度值,则更新食物源位置。
(5)引入模拟退火算法:在原食物源位置周围随机产生一个新的种群,计算新种群个体的适应度值 .若新种群中樽海鞘个体适应度值小于食物源适应度值,则更新食物源位置,否则以式(3)中的概率
P
P
P接受新种群中樽海鞘个体的位置,进行退温操作
t
=
t
×
0.99
t=t\times0.99
t=t×0.99,记录下整个迭代过程中适应度值最小的食物源位置及其适应度值。
(6)若当前迭代次数小于最大迭代次数,重复步骤3~5的迭代过程,直到达到设定的精度要求或最大迭代次数,输出最优个体位置及其适应度值。
将STSA-SSA与MVO、MFO和SSA进行对比,以文献[1]中表1和表2的F1、F2、F3(单峰函数/30维)、F10、F11、F12(多峰函数/30维)为例,实验设置种群规模为100,最大迭代次数为1000,每种算法独立运算30次,结果显示如下:






函数:F1
MVO:最差值: 0.16708, 最优值: 0.029536, 平均值: 0.10159, 标准差: 0.025637
MFO:最差值: 10000, 最优值: 2.6301e-06, 平均值: 1333.3333, 标准差: 3457.459
SSA:最差值: 9.5666e-09, 最优值: 4.4115e-09, 平均值: 6.5361e-09, 标准差: 1.4628e-09
STSA-SSA:最差值: 2.6884e-92, 最优值: 1.2088e-98, 平均值: 9.0129e-94, 标准差: 4.9075e-93
函数:F2
MVO:最差值: 0.035861, 最优值: 0.006563, 平均值: 0.011629, 标准差: 0.0055055
MFO:最差值: 1.2383e-18, 最优值: 4.235e-21, 平均值: 2.3603e-19, 标准差: 3.1721e-19
SSA:最差值: 1.5893e-05, 最优值: 4.4389e-06, 平均值: 6.5287e-06, 标准差: 2.214e-06
STSA-SSA:最差值: 8.9203e-15, 最优值: 4.6592e-21, 平均值: 3.6398e-16, 标准差: 1.6493e-15
函数:F3
MVO:最差值: 15.0338, 最优值: 1.855, 平均值: 6.0894, 标准差: 2.7983
MFO:最差值: 38335.8903, 最优值: 171.7988, 平均值: 17000.3493, 标准差: 10693.5973
SSA:最差值: 4.8528, 最优值: 0.0021096, 平均值: 1.1182, 标准差: 1.2449
STSA-SSA:最差值: 5.045e-97, 最优值: 1.4767e-98, 平均值: 8.6227e-98, 标准差: 9.4178e-98
函数:F10
MVO:最差值: 0.050032, 最优值: 0.0044728, 平均值: 0.025348, 标准差: 0.012522
MFO:最差值: 5.4708, 最优值: 9.2939e-08, 平均值: 0.31057, 标准差: 1.1632
SSA:最差值: 0.049064, 最优值: 3.2022e-10, 平均值: 0.0082862, 标准差: 0.01157
STSA-SSA:最差值: 6.1288e-09, 最优值: 0, 平均值: 3.3234e-10, 标准差: 1.2586e-09
函数:F11
MVO:最差值: 2.7289, 最优值: 0.0017116, 平均值: 1.0302, 标准差: 0.93786
MFO:最差值: 1.7121, 最优值: 3.5278e-06, 平均值: 0.18911, 标准差: 0.35454
SSA:最差值: 10.749, 最优值: 6.4423e-11, 平均值: 3.3794, 标准差: 2.7545
STSA-SSA:最差值: 1.9876e-10, 最优值: 7.5058e-11, 平均值: 1.157e-10, 标准差: 2.9888e-11
函数:F12
MVO:最差值: 0.019505, 最优值: 0.0013189, 平均值: 0.006964, 标准差: 0.0058636
MFO:最差值: 1.5975, 最优值: 1.0127e-06, 平均值: 0.058764, 标准差: 0.29075
SSA:最差值: 0.021024, 最优值: 7.8156e-11, 平均值: 0.0068636, 标准差: 0.007149
STSA-SSA:最差值: 2.9661, 最优值: 8.1418e-11, 平均值: 0.39841, 标准差: 1.0244
实验结果表明:对于单峰和多峰测试函数,改进后的樽海鞘群算法具有更快的收敛速度和更强的全局寻优能力。
[1] 周鹏, 董朝轶, 陈晓艳, 等. 基于阶梯式Tent混沌和模拟退火的樽海鞘群算法[J]. 电子学报, 2021, 49(9): 1724-1735.