文章目录
一、理论基础
1、麻雀搜索算法
请参考这里。
2、基于迭代局部搜索的麻雀搜索算法(ISSA)
2.1 可变螺旋因子
可变螺旋因子的计算公式如下所示:
H
=
a
⋅
cos
(
k
⋅
l
⋅
π
)
(1)
H=a\cdot\cos(k\cdot l\cdot\pi)\tag{1}
H=a⋅cos(k⋅l⋅π)(1)
a
=
{
1
,
t
<
M
2
e
5
⋅
l
,
otherwise
(2)
a=\begin{dcases}1,\quad\,\,\,\,\, t<\frac M2\\[2ex]e^{5\cdot l},\quad\text{otherwise}\end{dcases}\tag{2}
a=⎩⎪⎨⎪⎧1,t<2Me5⋅l,otherwise(2)
l
=
1
−
2
⋅
t
M
(3)
l=1-2\cdot\frac tM\tag{3}
l=1−2⋅Mt(3)其中,
H
H
H表示可变螺旋因子;
a
a
a是用于控制螺旋的参数,迭代早期值接近1,后期迭代值逐渐减少;
k
k
k是表示螺旋循环的参数,取值为
M
/
10
M/10
M/10;
l
l
l是一个随着迭代次数增加从1线性减少到-1的参数。
对跟随者广泛搜索的改进使跟随者能够充分利用整个搜索空间,更容易摆脱局部最优解的吸引,加强对整个空间的搜索,保持种群的多样性,增强早期算法探索能力,提高后期算法开发能力。基于此,跟随者公式更新如下:
x
i
,
j
t
+
1
=
{
cos
(
a
⋅
l
⋅
π
)
⋅
exp
(
x
worst
t
−
x
i
,
j
t
i
2
)
,
i
>
N
2
and
t
<
M
2
e
5
⋅
l
⋅
cos
(
a
⋅
l
⋅
π
)
⋅
exp
(
x
worst
t
−
x
i
,
j
t
i
2
)
,
i
>
N
2
and
t
>
M
2
(4)
x_{i,j}^{t+1}=\begin{dcases}\cos(a\cdot l\cdot\pi)\cdot\exp\left(\frac{x_{\text{worst}}^t-x_{i,j}^t}{i^2}\right),\quad\quad\quad i>\frac N2\,\,\text{and}\,\,t<\frac M2\\[2ex]e^{5\cdot l}\cdot\cos(a\cdot l\cdot\pi)\cdot\exp\left(\frac{x_{\text{worst}}^t-x_{i,j}^t}{i^2}\right),\quad i>\frac N2\,\,\text{and}\,\,t>\frac M2\end{dcases}\tag{4}
xi,jt+1=⎩⎪⎪⎪⎨⎪⎪⎪⎧cos(a⋅l⋅π)⋅exp(i2xworstt−xi,jt),i>2Nandt<2Me5⋅l⋅cos(a⋅l⋅π)⋅exp(i2xworstt−xi,jt),i>2Nandt>2M(4)
2.2 改进的迭代局部搜索
局部搜索(Local search, LS)算法是一种简单的贪婪搜索算法,是对爬山法的改进。局部搜索从初始解开始,然后搜索该解的邻域,如果有更好的解或返回到当前解,则更新该解。迭代局部搜索(Iterative local search, ILS)是一种探索性的方法,它对通过局部搜索得到的局部最优解进行扰动,然后重新搜索局部解。
改进的迭代局部搜索首先在初始解附近执行局部搜索,然后通过更新跟随者靠近发现者的位置来干扰初始解,然后再次搜索更新后的位置。 它充分利用了当前个体的位置信息和当前最优解的位置信息,使搜索更加灵活。第一种改进采用用跟随者接近发现者进行干扰的机制,使个体跳到当前全局最优位置附近,跳出局部最优位置;第二种改进采用局部搜索,以获得稳定的优化结果,提高局部搜索的准确性;第三种改进是利用局部搜索结果来获得最优的局部搜索结果,以保证解的质量。
2.2.1 第一种改进(SSA方法)
改进的迭代局部搜索策略比原迭代局部搜索更适合该算法。它的工作原理是首先干扰初始解以获得中间解(当
i
<
N
/
2
i<N/2
i<N/2时,SSA的跟随者会受到一种独特的更新机制的干扰,该机制会迅速接近搜索者的最优解);然后再次搜索初始解和中间解,寻找更好的解。第一种改进用于解决SSA容易陷入局部最优解的问题,其流程如下:
Step 1. 初始解
X
∗
X^*
X∗被当前最优解
X
best
X_{\text{best}}
Xbest扰动,得到中间解
X
∗
∗
X^{**}
X∗∗,扰动公式如下:
X
∗
∗
=
X
best
+
∣
X
∗
−
X
best
∣
⋅
A
+
⋅
L
(5)
X^{**}=X_{\text{best}}+\left|X^*-X_{\text{best}}\right|\cdot A^+\cdot L\tag{5}
X∗∗=Xbest+∣X∗−Xbest∣⋅A+⋅L(5)原始追随者的公式如下:
x
i
,
j
t
+
1
=
x
P
t
+
1
+
∣
x
i
,
j
t
−
x
P
t
+
1
∣
⋅
A
+
⋅
L
,
i
<
N
2
(6)
x_{i,j}^{t+1}=x_P^{t+1}+\left|x_{i,j}^t-x_P^{t+1}\right|\cdot A^+\cdot L,\quad i<\frac N2\tag{6}
xi,jt+1=xPt+1+∣∣xi,jt−xPt+1∣∣⋅A+⋅L,i<2N(6)其中,
X
best
=
x
P
t
+
1
X_{\text{best}}=x_P^{t+1}
Xbest=xPt+1,表示发现者当前占据的最佳位置;
X
∗
=
x
i
,
j
t
X^*=x_{i,j}^t
X∗=xi,jt,表示当前位置;
X
∗
∗
=
x
i
,
j
t
+
1
X^{**}=x_{i,j}^{t+1}
X∗∗=xi,jt+1,表示更新后的位置。
2.2.2 第二种改进(ILS算法)
第二种改进解决了SSA优化结果不稳定和不准确的问题。ILS算法代表ILS算法中的局部搜索阶段。它通过局部搜索初始解和中间解来获得更好的解,并有效地利用初始解的当前位置,防止个体在直接跳到当前最优解的过程中错过更好的解。同时,在当前最优解附近进行局部搜索有助于提高解的精度,并在小范围内跳出局部最优。算法流程如下:
Step 2. 初始解
X
∗
X^*
X∗开始局部搜索,公式如下:
X
1
=
X
∗
⋅
rand
(
)
(7)
X^1=X^*\cdot\text{rand}()\tag{7}
X1=X∗⋅rand()(7)其中,
rand
(
)
\text{rand}()
rand()是介于0和1之间的随机数。
Step 3. 中间解
X
∗
∗
X^{**}
X∗∗开始局部搜索,公式如下:
X
2
=
X
∗
∗
⋅
rand()
(8)
X^2=X^{**}\cdot\text{rand()}\tag{8}
X2=X∗∗⋅rand()(8)
2.2.3 第三种改进
第三种改进是优化局部搜索结果,以确保解的质量。其工作原理是使用贪婪策略比较初始解和中间解的局部搜索结果,并选择更好的值作为最终解
X
X
X。算法流程如下:
Step 4. 计算
X
1
X^1
X1的适应度值
f
(
X
1
)
f(X^1)
f(X1)。
Step 5. 计算
X
2
X^2
X2的适应度值
f
(
X
2
)
f(X^2)
f(X2)。
Step 6. 比较
f
(
X
1
)
f(X^1)
f(X1)和
f
(
X
2
)
f(X^2)
f(X2)以选择位置更新的最佳个体,即:
X
=
{
X
1
,
f
(
X
1
)
≤
f
(
X
2
)
X
2
,
f
(
X
1
)
>
f
(
X
2
)
(9)
X=\begin{dcases}X^1,\quad f(X^1)\leq f(X^2)\\[2ex]X^2,\quad f(X^1)>f(X^2)\end{dcases}\tag{9}
X=⎩⎨⎧X1,f(X1)≤f(X2)X2,f(X1)>f(X2)(9)基于SSA和上述三种改进,SSA中的跟随者公式(
i
<
N
/
2
i<N/2
i<N/2)更新如下:
x
i
,
j
t
+
1
=
{
x
i
,
j
t
⋅
rand()
,
i
<
N
2
and
f
(
X
1
)
≤
f
(
X
2
)
(
x
P
t
+
1
+
∣
x
i
,
j
t
−
x
P
t
+
1
∣
⋅
A
+
⋅
L
)
⋅
rand
(
)
,
i
<
N
2
and
f
(
X
1
)
>
f
(
X
2
)
(10)
x_{i,j}^{t+1}=\begin{dcases}x_{i,j}^t\cdot\text{rand()},\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad i<\frac N2\,\,\text{and}\,\,f(X^1)\leq f(X^2)\\[2ex]\left(x_P^{t+1}+\left|x_{i,j}^t-x_P^{t+1}\right|\cdot A^+\cdot L\right)\cdot\text{rand}(),\quad i<\frac N2\,\,\text{and}\,\,f(X^1)>f(X^2)\end{dcases}\tag{10}
xi,jt+1=⎩⎪⎪⎨⎪⎪⎧xi,jt⋅rand(),i<2Nandf(X1)≤f(X2)(xPt+1+∣∣xi,jt−xPt+1∣∣⋅A+⋅L)⋅rand(),i<2Nandf(X1)>f(X2)(10)
2.3 逐维透镜成像学习
逐维透镜成像学习的具体数学模型请参考这里。通过结合逐维透镜成像学习策略,对警戒者个体逐维求反向解,使得算法获得摆脱局部极值的能力,公式如下: x i , j t + 1 = { a j t + b j t 2 + a j t + b j t 2 k − x i , j t k , f ( x ∗ ) < f ( x ) x i , j t + 1 , otherwise (11) x_{i,j}^{t+1}=\begin{dcases}\frac{a_j^t+b_j^t}{2}+\frac{a_j^t+b_j^t}{2k}-\frac{x_{i,j}^t}{k},\quad f(x^*)<f(x)\\[2ex]x_{i,j}^{t+1},\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\,\,\,\text{otherwise}\end{dcases}\tag{11} xi,jt+1=⎩⎪⎨⎪⎧2ajt+bjt+2kajt+bjt−kxi,jt,f(x∗)<f(x)xi,jt+1,otherwise(11) a j t = min ( x j t ) , b j t = max ( x j t ) (12) a_j^t=\min(x_j^t),\,\,b_j^t=\max(x_j^t)\tag{12} ajt=min(xjt),bjt=max(xjt)(12)
2.4 ISSA算法伪代码
ISSA算法伪代码如图1所示。
二、仿真实验与结果分析
将ISSA与SCA、GWO、WOA和SSA进行对比,以文献[1]中表4的F1、F3(单峰函数/30维)、F10、F11(多峰函数/30维)和CEC2017测试函数的F4、F5、F6、F7(30维)为例,实验设置种群规模为30,最大迭代次数为500,每种算法独立运算30次,结果显示如下:
函数:F1
SCA:最差值: 127.8983, 最优值: 0.0029965, 平均值: 11.1, 标准差: 26.4269, 秩和检验: 1.2118e-12
GWO:最差值: 4.5342e-27, 最优值: 2.4445e-29, 平均值: 9.8541e-28, 标准差: 1.2152e-27, 秩和检验: 1.2118e-12
WOA:最差值: 4.5006e-74, 最优值: 4.4266e-88, 平均值: 3.0538e-75, 标准差: 9.2689e-75, 秩和检验: 1.2118e-12
SSA:最差值: 4.8189e-61, 最优值: 0, 平均值: 1.6063e-62, 标准差: 8.7981e-62, 秩和检验: 1.6572e-11
ISSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F3
SCA:最差值: 20406.2059, 最优值: 580.6606, 平均值: 9039.7533, 标准差: 5481.5995, 秩和检验: 1.2118e-12
GWO:最差值: 0.0013915, 最优值: 1.0518e-07, 平均值: 7.7938e-05, 标准差: 0.00026342, 秩和检验: 1.2118e-12
WOA:最差值: 77786.6357, 最优值: 20896.7915, 平均值: 45211.7571, 标准差: 15648.6145, 秩和检验: 1.2118e-12
SSA:最差值: 1.6172e-48, 最优值: 0, 平均值: 5.4018e-50, 标准差: 2.9524e-49, 秩和检验: 5.772e-11
ISSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F10
SCA:最差值: 20.2749, 最优值: 0.060749, 平均值: 12.2864, 标准差: 9.2365, 秩和检验: 1.2118e-12
GWO:最差值: 1.3589e-13, 最优值: 7.1942e-14, 平均值: 9.8943e-14, 标准差: 1.6913e-14, 秩和检验: 1.1518e-12
WOA:最差值: 7.9936e-15, 最优值: 8.8818e-16, 平均值: 5.033e-15, 标准差: 2.3012e-15, 秩和检验: 9.793e-11
SSA:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0, 秩和检验: NaN
ISSA:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0, 秩和检验: NaN
函数:F11
SCA:最差值: 4.6582, 最优值: 0.10245, 平均值: 1.0034, 标准差: 0.78568, 秩和检验: 1.2118e-12
GWO:最差值: 0.042753, 最优值: 0, 平均值: 0.0048496, 标准差: 0.010694, 秩和检验: 0.0055843
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
SSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
ISSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:CEC2017-F4
SCA:最差值: 5959.358, 最优值: 1937.1608, 平均值: 2960.8422, 标准差: 804.4288, 秩和检验: 3.0199e-11
GWO:最差值: 1015.9201, 最优值: 506.9553, 平均值: 647.3663, 标准差: 122.7164, 秩和检验: 6.5183e-09
WOA:最差值: 2478.5053, 最优值: 862.384, 平均值: 1337.5376, 标准差: 390.4546, 秩和检验: 3.0199e-11
SSA:最差值: 549.8065, 最优值: 478.0609, 平均值: 519.5645, 标准差: 17.8028, 秩和检验: 0.19579
ISSA:最差值: 635.9567, 最优值: 425.6829, 平均值: 515.1179, 标准差: 36.1515, 秩和检验: 1
函数:CEC2017-F5
SCA:最差值: 858.9995, 最优值: 755.311, 平均值: 823.1868, 标准差: 24.4414, 秩和检验: 3.0199e-11
GWO:最差值: 769.9697, 最优值: 591.6235, 平均值: 629.9967, 标准差: 40.5488, 秩和检验: 1.4294e-08
WOA:最差值: 1084.1067, 最优值: 779.6149, 平均值: 865.1956, 标准差: 73.2638, 秩和检验: 3.0199e-11
SSA:最差值: 833.3823, 最优值: 656.3704, 平均值: 767.7253, 标准差: 48.7735, 秩和检验: 3.0199e-11
ISSA:最差值: 629.0811, 最优值: 555.4263, 平均值: 584.472, 标准差: 18.5942, 秩和检验: 1
函数:CEC2017-F6
SCA:最差值: 675.4046, 最优值: 650.8959, 平均值: 667.0082, 标准差: 5.735, 秩和检验: 3.0199e-11
GWO:最差值: 628.9682, 最优值: 604.8662, 平均值: 612.9524, 标准差: 4.9723, 秩和检验: 8.1014e-10
WOA:最差值: 698.7486, 最优值: 662.9606, 平均值: 683.2703, 标准差: 10.7632, 秩和检验: 3.0199e-11
SSA:最差值: 675.7633, 最优值: 638.337, 平均值: 660.3945, 标准差: 7.9643, 秩和检验: 3.0199e-11
ISSA:最差值: 611.1908, 最优值: 602.1199, 平均值: 604.8902, 标准差: 2.1366, 秩和检验: 1
函数:CEC2017-F7
SCA:最差值: 1375.452, 最优值: 1136.2978, 平均值: 1255.7792, 标准差: 57.3738, 秩和检验: 3.0199e-11
GWO:最差值: 1031.5176, 最优值: 837.1289, 平均值: 915.5511, 标准差: 52.8347, 秩和检验: 2.6015e-08
WOA:最差值: 1420.6498, 最优值: 1142.9176, 平均值: 1312.0402, 标准差: 59.3775, 秩和检验: 3.0199e-11
SSA:最差值: 1347.4496, 最优值: 1064.3226, 平均值: 1303.2511, 标准差: 53.6125, 秩和检验: 3.0199e-11
ISSA:最差值: 892.3099, 最优值: 811.7036, 平均值: 847.2751, 标准差: 21.8937, 秩和检验: 1
实验结果表明:ISSA算法具有更高的收敛精度和更快的收敛速度,其优化性能大大增强。
三、参考文献
[1] Shaoqiang Yan, Ping Yang, Donglin Zhu, et al. Improved Sparrow Search Algorithm Based on Iterative Local Search[J]. Computational Intelligence and Neuroscience, 2021, 2021: 6860503.