文章目录

  • 一、理论基础
    • 1、麻雀搜索算法
    • 2、基于迭代局部搜索的麻雀搜索算法(ISSA)
      • 2.1 可变螺旋因子
      • 2.2 改进的迭代局部搜索
        • 2.2.1 第一种改进(SSA方法)
        • 2.2.2 第二种改进(ILS算法)
        • 2.2.3 第三种改进
      • 2.3 逐维透镜成像学习
      • 2.4 ISSA算法伪代码
  • 二、仿真实验与结果分析
  • 三、参考文献

一、理论基础

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<M2e5⋅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<2M​e5⋅l,otherwise​(2)l=1−2⋅tM(3)l=1-2\cdot\frac tM\tag{3}l=1−2⋅Mt​(3)其中,HHH表示可变螺旋因子;aaa是用于控制螺旋的参数,迭代早期值接近1,后期迭代值逐渐减少;kkk是表示螺旋循环的参数,取值为M/10M/10M/10;lll是一个随着迭代次数增加从1线性减少到-1的参数。
对跟随者广泛搜索的改进使跟随者能够充分利用整个搜索空间,更容易摆脱局部最优解的吸引,加强对整个空间的搜索,保持种群的多样性,增强早期算法探索能力,提高后期算法开发能力。基于此,跟随者公式更新如下:xi,jt+1={cos⁡(a⋅l⋅π)⋅exp⁡(xworstt−xi,jti2),i>N2andt<M2e5⋅l⋅cos⁡(a⋅l⋅π)⋅exp⁡(xworstt−xi,jti2),i>N2andt>M2(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>2N​andt<2M​e5⋅l⋅cos(a⋅l⋅π)⋅exp(i2xworstt​−xi,jt​​),i>2N​andt>2M​​(4)

2.2 改进的迭代局部搜索

局部搜索(Local search, LS)算法是一种简单的贪婪搜索算法,是对爬山法的改进。局部搜索从初始解开始,然后搜索该解的邻域,如果有更好的解或返回到当前解,则更新该解。迭代局部搜索(Iterative local search, ILS)是一种探索性的方法,它对通过局部搜索得到的局部最优解进行扰动,然后重新搜索局部解。
改进的迭代局部搜索首先在初始解附近执行局部搜索,然后通过更新跟随者靠近发现者的位置来干扰初始解,然后再次搜索更新后的位置。 它充分利用了当前个体的位置信息和当前最优解的位置信息,使搜索更加灵活。第一种改进采用用跟随者接近发现者进行干扰的机制,使个体跳到当前全局最优位置附近,跳出局部最优位置;第二种改进采用局部搜索,以获得稳定的优化结果,提高局部搜索的准确性;第三种改进是利用局部搜索结果来获得最优的局部搜索结果,以保证解的质量。

2.2.1 第一种改进(SSA方法)

改进的迭代局部搜索策略比原迭代局部搜索更适合该算法。它的工作原理是首先干扰初始解以获得中间解(当i<N/2i<N/2i<N/2时,SSA的跟随者会受到一种独特的更新机制的干扰,该机制会迅速接近搜索者的最优解);然后再次搜索初始解和中间解,寻找更好的解。第一种改进用于解决SSA容易陷入局部最优解的问题,其流程如下:
Step 1. 初始解X∗X^*X∗被当前最优解XbestX_{\text{best}}Xbest​扰动,得到中间解X∗∗X^{**}X∗∗,扰动公式如下:X∗∗=Xbest+∣X∗−Xbest∣⋅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)原始追随者的公式如下:xi,jt+1=xPt+1+∣xi,jt−xPt+1∣⋅A+⋅L,i<N2(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)其中,Xbest=xPt+1X_{\text{best}}=x_P^{t+1}Xbest​=xPt+1​,表示发现者当前占据的最佳位置;X∗=xi,jtX^*=x_{i,j}^tX∗=xi,jt​,表示当前位置;X∗∗=xi,jt+1X^{**}=x_{i,j}^{t+1}X∗∗=xi,jt+1​,表示更新后的位置。

2.2.2 第二种改进(ILS算法)

第二种改进解决了SSA优化结果不稳定和不准确的问题。ILS算法代表ILS算法中的局部搜索阶段。它通过局部搜索初始解和中间解来获得更好的解,并有效地利用初始解的当前位置,防止个体在直接跳到当前最优解的过程中错过更好的解。同时,在当前最优解附近进行局部搜索有助于提高解的精度,并在小范围内跳出局部最优。算法流程如下:
Step 2. 初始解X∗X^*X∗开始局部搜索,公式如下:X1=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∗∗开始局部搜索,公式如下:X2=X∗∗⋅rand()(8)X^2=X^{**}\cdot\text{rand()}\tag{8}X2=X∗∗⋅rand()(8)

2.2.3 第三种改进

第三种改进是优化局部搜索结果,以确保解的质量。其工作原理是使用贪婪策略比较初始解和中间解的局部搜索结果,并选择更好的值作为最终解XXX。算法流程如下:
Step 4. 计算X1X^1X1的适应度值f(X1)f(X^1)f(X1)。
Step 5. 计算X2X^2X2的适应度值f(X2)f(X^2)f(X2)。
Step 6. 比较f(X1)f(X^1)f(X1)和f(X2)f(X^2)f(X2)以选择位置更新的最佳个体,即:X={X1,f(X1)≤f(X2)X2,f(X1)>f(X2)(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/2i<N/2i<N/2)更新如下:xi,jt+1={xi,jt⋅rand(),i<N2andf(X1)≤f(X2)(xPt+1+∣xi,jt−xPt+1∣⋅A+⋅L)⋅rand(),i<N2andf(X1)>f(X2)(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<2N​andf(X1)≤f(X2)(xPt+1​+∣∣​xi,jt​−xPt+1​∣∣​⋅A+⋅L)⋅rand(),i<2N​andf(X1)>f(X2)​(10)

2.3 逐维透镜成像学习

逐维透镜成像学习的具体数学模型请参考这里。通过结合逐维透镜成像学习策略,对警戒者个体逐维求反向解,使得算法获得摆脱局部极值的能力,公式如下:xi,jt+1={ajt+bjt2+ajt+bjt2k−xi,jtk,f(x∗)<f(x)xi,jt+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)ajt=min⁡(xjt),bjt=max⁡(xjt)(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.

基于迭代局部搜索的改进麻雀搜索算法相关推荐

  1. 基于正交对立学习的改进麻雀搜索算法-附代码

    基于正交对立学习的改进麻雀搜索算法 文章目录 基于正交对立学习的改进麻雀搜索算法 1.麻雀优化算法 2. 改进麻雀算法 2.1 正态变异扰动 2.2 对立学习 2.3 正交对立学习 3.实验结果 4. ...

  2. 基于佳点集的改进麻雀搜索算法

    文章目录 一.理论基础 1.麻雀搜索算法 2.GSSA搜索算法 (1)佳点集 (2)改进的迭代局部搜索 (3)逐维透镜反向学习 (4)GSSA算法流程 二.仿真实验和结果分析 三.参考文献 一.理论基 ...

  3. 基于莱维飞行扰动策略的麻雀搜索算法-附代码

    基于莱维飞行扰动策略的麻雀搜索算法 文章目录 基于莱维飞行扰动策略的麻雀搜索算法 1.麻雀优化算法 2. 改进麻雀算法 2.1 莱维飞行搜索机制 2.2 莱维飞行扰动策略 2.3 初始化混沌搜索机制 ...

  4. 局部邻域搜索-爬山法,模拟退火,禁忌,迭代局部搜索,变邻域局部搜索的简单阐释

    原文来源: 局部搜索算法 - JiePro - 博客园 https://www.cnblogs.com/JiePro/p/Metaheuristics_0.html 局部搜索算法 目录: 1.数学定义 ...

  5. 【智能算法】迭代局部搜索(Iterated Local Search, ILS)详解

    更多精彩尽在微信公众号[程序猿声] 迭代局部搜索(Iterated Local Search, ILS) 00 目录 局部搜索算法 简单局部搜索 迭代局部搜索 01 局部搜索算法 1.1 什么是局部搜 ...

  6. 融合多策略的改进麻雀搜索算法-附代码

    融合多策略的改进麻雀搜索算法 文章目录 融合多策略的改进麻雀搜索算法 1.麻雀优化算法 2. 改进麻雀算法 2.1 正弦搜索策略 2.2 多样性变异处理 3.实验结果 4.参考文献 5.Matlab代 ...

  7. 多策略融合的改进麻雀搜索算法

    文章目录 一.理论基础 1.麻雀搜索算法 2.改进麻雀搜索算法 2.1 种群初始化的改进 2.1.1 初始种群多样化 2.1.2 初始种群精英化 2.2 跟随者位置更新的改进 2.3 引入柯西高斯变异 ...

  8. 模拟退火算法 java_转 | 模拟退火算法(SA)和迭代局部搜索(ILS)求解TSP的Java代码分享...

    以下文章来源于数据魔术师 ,作者周航 前言 大家好呀!我们你们好久不见的...咳咳,初次见面的小编! 之前重新整理了ILS的代码,有人留言问能不能提供java版. 正好最近在学启发式算法和java,为 ...

  9. 基于麻雀搜索算法优化的支持向量机回归预测-附代码

    基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 文章目录 基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 1. 基于麻雀搜索算法优化的支持向量机预测简介 1.1 支持向量机 ...

最新文章

  1. Linux Grep 命令说明
  2. 秒杀多线程第十五篇 关键段,事件,互斥量,信号量的“遗弃”问题
  3. 性能测试常用的软件有哪些,常用的正经CPU测试软件有哪些
  4. 【OpenGL从入门到精通(三)】第一个点的理论
  5. ajax将响应结果显示到iframe,JavaScript:iframe / Ajax / JSON
  6. 【计算机组成原理】CPU
  7. Node.js之------模块篇
  8. 为什么你设计的网页不够惊艳?
  9. tnsnames.ora配置未生效_一文了解网络交换机的6种命令配置模式
  10. 申作军海通机器人_青岛海通机器人系统有限公司
  11. Atitit btree 搜索原理 目录 第一节 左边小右边大 的有序树 1 第二节 平衡算法 1 第三节 层次高度一般3--4层 3 第四节 类似索引 3 第二章 Ref 5 第一节 左边小右
  12. 微信公众号封面一键生成器
  13. SMCJ系列TVS瞬态抑制二极管型号参数表
  14. ActiveMQ 反序列化漏洞 (CVE-2015-5254)复现
  15. unity中向量夹角
  16. docx文件转pdf,使用aspose words 转pdf,并且解决表格格式错乱
  17. 关于微信小程序授权登陆之后需要在个人信息页展示信息,如微信头像,昵称这件事
  18. WiFi大师终极版4.1.8独立源码
  19. dxp全称_DXP企业标志logo设计,品牌vi设计策划
  20. 设置Sysctl conf用以提高Linux的性能 最完整的sysctl conf优化方案

热门文章

  1. 粮食行业视频监控系统互联互通技术规范
  2. 学习笔记——web网页庐山旅游网
  3. 开发工具快速下载地址
  4. tl494c封装区别_TL494的特点与引脚功能
  5. 略谈狄利克雷卷积和数论函数基础
  6. 免费刷题!初级软件测试面试题目和答案这个小程序很全
  7. 可以精准解析国内外网站的DNS
  8. php 运行命令行,命令行运行php报错
  9. 交叉编译-15::libmpc.so.3: cannot open shared object file解决方法
  10. jupyter notebook 用PPT展示代码 +插入图片