一、理论基础
1、麻雀搜索算法
请参考这里。
2、改进的麻雀搜索算法
(1)改进发现者搜索机制
发现者负责搜索具有丰富食物的区域,并为其他个体提供搜索方向,是整个种群运作的核心,因此发现者的搜索能力在一定程度上对整个算法的收敛起着重要影响。当搜索范围内没有出现捕食者时,发现者的位置更新算子存在一定的随机性,这种随机性可能会导致算法稳定性降低,收敛速度变慢。针对上述问题,本文改进了SSA发现者的搜索机制,改进的发现者位置更新数学模型描述如式(1)所示:
X
i
,
d
t
+
1
=
{
X
i
,
d
t
⋅
(
exp
(
T
max
−
t
T
max
−
1
)
⋅
1
e
−
1
)
k
,
R
2
<
S
T
X
i
,
d
t
+
Q
⋅
L
,
R
2
≥
S
T
(1)
X_{i,d}^{t+1}=\begin{dcases}X_{i,d}^t\cdot\left(\exp(\frac{T_{\max}-t}{T_{\max}}-1)\cdot\frac1{e-1}\right)^k,\quad R_2<ST\\X_{i,d}^t+Q\cdot L,\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\, R_2\geq ST\end{dcases}\tag{1}
Xi,dt+1=⎩⎪⎨⎪⎧Xi,dt⋅(exp(TmaxTmax−t−1)⋅e−11)k,R2<STXi,dt+Q⋅L,R2≥ST(1)其中,
t
t
t为当前迭代次数,
k
k
k为调节因子,通过
k
k
k值可以自适应调节发现者位置更新算子下降速率,
k
k
k值越大,算子下降速率越大。
由式(1)可知,改进的位置更新公式中引入了迭代次数
t
t
t,使发现者位置更新算子随迭代次数增加呈非线性变化,增加了算法的多样性;同时,结合调节因子
k
k
k,可自适应调节位置更新算子的下降速率,平衡了算法的搜索能力;最后,发现者位置更新脱离了随机因子
α
\alpha
α的影响,算法更加稳定。
(2)改进侦察机制
在原始SSA中,当侦察者预警到危险(即意识到有陷入局部极值的风险)时,对于处于种群中心的侦察者,SSA选择让其靠近邻居减少被捕食的风险,这样会导致算法陷入局部最优值而停止搜索;对于处在种群边缘的侦察者,SSA利用随机步长控制侦察者向安全区域靠近,而这种随机步长可能会导致算法收敛速度变慢。
综上所述,针对SSA侦察机制存在的局限性,本文通过引入新的侦察因子
Φ
\it\Phi
Φ改进SSA的侦察机制,对于处于种群中心的侦察者,通过非线性递增的侦察因子
Φ
1
{\it\Phi}_1
Φ1使其逐步远离当前位置,防止算法陷入局部最优值;对于处在种群边缘的侦察者,采用非线性递减的侦察因子
Φ
2
{\it\Phi}_2
Φ2代替随机步长因子,在保证侦察者安全的同时使其逐步靠近最优位置,加快算法收敛。
Φ
1
{\it\Phi}_1
Φ1和
Φ
2
{\it\Phi}_2
Φ2的数学模型描述如式(2)所示:
{
Φ
1
(
t
)
=
Φ
i
+
(
Φ
f
−
Φ
i
)
⋅
(
1
−
t
T
max
)
n
Φ
2
(
t
)
=
Φ
i
−
(
Φ
f
−
Φ
i
)
⋅
(
1
−
t
T
max
)
n
(2)
\begin{dcases}{\it\Phi}_1(t)={\it{\Phi_i+(\Phi_f-\Phi_i)}}\cdot(1-\frac{t}{T_{\max}})^n\\\\{\it\Phi}_2(t)={\it{\Phi_i-(\Phi_f-\Phi_i)}}\cdot(1-\frac{t}{T_{\max}})^n\end{dcases}\tag{2}
⎩⎪⎪⎪⎨⎪⎪⎪⎧Φ1(t)=Φi+(Φf−Φi)⋅(1−Tmaxt)nΦ2(t)=Φi−(Φf−Φi)⋅(1−Tmaxt)n(2)其中,
Φ
i
\it\Phi_i
Φi和
Φ
f
\it\Phi_f
Φf分别表示
Φ
\it\Phi
Φ的初始值和最终值,
T
max
T_{\max}
Tmax为最大迭代次数,
n
n
n为非线性调节系数。
(3)单纯形法策略
单纯形法在多维优化问题中表现出色,具有鲁棒性高、局部优化能力强和参数简单等优点。单纯形法通过对适应度较差的个体进行反射、扩张和收缩等操作来改变个体位置,其中反射操作能使个体反方向搜索,增加个体搜索空间;扩张操作使个体远离最优解,防止算法陷入局部极小值点;压缩操作能使个体更加接近最优位置。其具体实现步骤如下所示:
Step1 初始化种群,计算个体适应度并排序,记录全局最优个体
X
b
X_b
Xb和次优个体
X
t
X_t
Xt以及它们的适应度值
f
b
f_b
fb和
f
t
f_t
ft,
X
c
X_c
Xc定义为
X
c
=
(
X
b
+
X
t
)
/
2
X_c=(X_b+X_t)/2
Xc=(Xb+Xt)/2。
Step2 对
m
m
m个位置较差的点
w
w
w进行反射操作,
X
r
=
X
c
+
α
(
X
c
−
X
w
)
X_r=X_c+\alpha(X_c-X_w)
Xr=Xc+α(Xc−Xw),其中
α
\alpha
α表示反射系数。
Step3 判断,如果
f
r
<
f
b
f_r<f_b
fr<fb,则进行扩张操作,
X
y
=
X
c
+
β
(
X
r
−
X
c
)
X_y=X_c+\beta(X_r-X_c)
Xy=Xc+β(Xr−Xc),
β
\beta
β为扩张系数;如果
f
y
<
f
b
f_y<f_b
fy<fb,则
w
=
X
y
w=X_y
w=Xy,反之
w
=
X
r
w=X_r
w=Xr。
Step4 判断,如果
f
r
<
f
w
f_r<f_w
fr<fw,则进行压缩操作,
X
z
=
X
c
−
γ
(
X
r
−
X
c
)
X_z=X_c-\gamma(X_r-X_c)
Xz=Xc−γ(Xr−Xc),
γ
\gamma
γ为压缩系数;如果
f
z
<
f
w
f_z<f_w
fz<fw,则
w
=
X
z
w=X_z
w=Xz,反之
w
=
X
r
w=X_r
w=Xr。
Step5 判断,如果
f
w
>
f
r
>
f
t
f_w>f_r>f_t
fw>fr>ft,则进行收缩操作,
X
s
=
X
c
−
σ
(
X
w
−
X
c
)
X_s=X_c-\sigma(X_w-X_c)
Xs=Xc−σ(Xw−Xc),
σ
\sigma
σ为收缩系数,且
σ
=
γ
\sigma=\gamma
σ=γ;如果
f
s
<
f
w
f_s<f_w
fs<fw,则
w
=
X
s
w=X_s
w=Xs,反之
w
=
X
r
w=X_r
w=Xr。
为了改善SSA求解速度慢、精度不高的问题,本文在算法每次迭代结束时,对位置较差的
m
m
m个麻雀个体进行单纯形法操作,增强SSA的搜索能力。
(4)SMSSA伪代码
SMSSA实现伪代码如下所示:
初始化种群并设定参数
计算个体适应度并排序
记录最优、次优和最差个体位置及适应度
For t=1:Tmax
for i=1:pNum
按式(1)更新发现者位置
end
for i=pNum+1:pop
按原始公式更新加入者位置
end
for i=1:round(pop*P)
按式(2)更新侦察者位置
end
利用单纯形法更新适应度较差m个个体
end
算法结束,返回最优位置及适应度
二、仿真实验与结果分析
为了检验SMSSA的性能,本文选取基本粒子群优化(PSO)算法、灰狼优化(GWO)算法、鲸鱼优化算法(WOA)和麻雀搜索算法(SSA)与SMSSA 进行寻优对比,基本参数设置为:最大迭代次数
T
max
=
500
T_{\max}=500
Tmax=500,种群规模
N
=
30
N=30
N=30,维度
d
=
200
d=200
d=200,各算法内部参数设置如文献[1]中表1所示。为了测试SMSSA在对于基准函数上的寻优效果,采用文献[1]中表2的8个基准测试函数进行仿真实验,每个实验进行30次,结果显示如下:
函数:F1
SSA:最差值: 9.5428e-66, 最优值: 0, 平均值: 3.8662e-67, 标准差: 1.7695e-66, 秩和检验: 1.6572e-11
PSO:最差值: 7165.1363, 最优值: 3448.7122, 平均值: 5367.4426, 标准差: 848.1916, 秩和检验: 1.2118e-12
WOA:最差值: 2.1555e-69, 最优值: 8.9098e-85, 平均值: 1.2986e-70, 标准差: 4.5278e-70, 秩和检验: 1.2118e-12
GWO:最差值: 3.6769e-07, 最优值: 2.2778e-08, 平均值: 1.2772e-07, 标准差: 7.2788e-08, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F2
SSA:最差值: 3.8985e-29, 最优值: 5.7924e-175, 平均值: 1.6299e-30, 标准差: 7.2164e-30, 秩和检验: 1.2118e-12
PSO:最差值: 462.7717, 最优值: 242.4231, 平均值: 311.8446, 标准差: 53.0066, 秩和检验: 1.2118e-12
WOA:最差值: 9.9064e-49, 最优值: 7.0457e-57, 平均值: 8.6268e-50, 标准差: 2.3725e-49, 秩和检验: 1.2118e-12
GWO:最差值: 4.9634e-05, 最优值: 2.2765e-05, 平均值: 3.1881e-05, 标准差: 6.975e-06, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F3
SSA:最差值: 6.0012e-45, 最优值: 0, 平均值: 2.6e-46, 标准差: 1.1329e-45, 秩和检验: 4.5736e-12
PSO:最差值: 264819.8408, 最优值: 71167.7784, 平均值: 142174.4306, 标准差: 46594.5147, 秩和检验: 1.2118e-12
WOA:最差值: 7904199.1066, 最优值: 1927503.4587, 平均值: 4223853.8308, 标准差: 1375007.1531, 秩和检验: 1.2118e-12
GWO:最差值: 50628.9379, 最优值: 7041.4824, 平均值: 24479.0052, 标准差: 11159.7076, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F4
SSA:最差值: 3.5608e-35, 最优值: 1.3344e-105, 平均值: 1.5743e-36, 标准差: 6.7513e-36, 秩和检验: 1.2118e-12
PSO:最差值: 22.3442, 最优值: 15.1623, 平均值: 18.2354, 标准差: 1.7874, 秩和检验: 1.2118e-12
WOA:最差值: 98.3616, 最优值: 21.1337, 平均值: 78.6, 标准差: 22.9002, 秩和检验: 1.2118e-12
GWO:最差值: 45.0736, 最优值: 14.0973, 平均值: 27.4643, 标准差: 8.1054, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F5
SSA:最差值: 0.0045499, 最优值: 3.741e-05, 平均值: 0.00081416, 标准差: 0.0010033, 秩和检验: 9.2113e-05
PSO:最差值: 1203.6928, 最优值: 19.3009, 平均值: 397.6049, 标准差: 332.104, 秩和检验: 3.0199e-11
WOA:最差值: 0.018584, 最优值: 0.00024793, 平均值: 0.0041121, 标准差: 0.0052125, 秩和检验: 1.2057e-10
GWO:最差值: 0.024201, 最优值: 0.006823, 平均值: 0.013978, 标准差: 0.0043161, 秩和检验: 3.0199e-11
SMSSA:最差值: 0.00057954, 最优值: 4.5032e-06, 平均值: 0.00016684, 标准差: 0.0001404, 秩和检验: 1
函数:F6
SSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
PSO:最差值: 1992.922, 最优值: 1501.9365, 平均值: 1734.55, 标准差: 92.9977, 秩和检验: 1.2118e-12
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GWO:最差值: 41.1646, 最优值: 3.8714e-05, 平均值: 21.3616, 标准差: 11.272, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F7
SSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
PSO:最差值: 145.9599, 最优值: 100.8943, 平均值: 127.3103, 标准差: 11.2942, 秩和检验: 1.2118e-12
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GWO:最差值: 0.052205, 最优值: 8.9418e-09, 平均值: 0.0070764, 标准差: 0.016303, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F8
SSA:最差值: 1.3176e-07, 最优值: 1.9733e-11, 平均值: 1.5154e-08, 标准差: 2.6397e-08, 秩和检验: 0.065671
PSO:最差值: 45.5286, 最优值: 13.596, 平均值: 24.9901, 标准差: 7.8267, 秩和检验: 3.0199e-11
WOA:最差值: 0.1629, 最优值: 0.032262, 平均值: 0.064249, 标准差: 0.032276, 秩和检验: 3.0199e-11
GWO:最差值: 0.65455, 最优值: 0.40283, 平均值: 0.53259, 标准差: 0.059422, 秩和检验: 3.0199e-11
SMSSA:最差值: 4.9299e-08, 最优值: 2.3597e-11, 平均值: 6.822e-09, 标准差: 1.2238e-08, 秩和检验: 1
实验结果表明:SMSSA与其余4种算法相比,具有更快的收敛速度、更高的收敛精度以及更强的稳定性。
三、参考文献
[1] 刘成汉, 何庆. 改进搜索机制的单纯形法引导麻雀搜索算法[J/OL]. 计算机工程与科学: 1-9 [2021-12-24].