基于迭代局部搜索的改进麻雀搜索算法

一、理论基础

1、麻雀搜索算法

请参考这里

2、基于迭代局部搜索的麻雀搜索算法(ISSA)

2.1 可变螺旋因子

可变螺旋因子的计算公式如下所示: H = a ⋅ cos ⁡ ( k ⋅ l ⋅ π ) (1) H=a\cdot\cos(k\cdot l\cdot\pi)\tag{1} H=acos(klπ)(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<2Me5l,otherwise(2) l = 1 − 2 ⋅ t M (3) l=1-2\cdot\frac tM\tag{3} l=12Mt(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(alπ)exp(i2xworsttxi,jt),i>2Nandt<2Me5lcos(alπ)exp(i2xworsttxi,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+XXbestA+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,jtxPt+1A+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=Xrand()(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=Xrand()(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 2 ) f(X^2) f(X2) 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,jtrand(),i<2Nandf(X1)f(X2)(xPt+1+xi,jtxPt+1A+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+bjtkxi,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所示。
在这里插入图片描述

图1 ISSA算法伪代码

二、仿真实验与结果分析

将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.

猜你喜欢

转载自blog.csdn.net/weixin_43821559/article/details/124516629
今日推荐