文章目录

  • 一、理论基础
    • 1、麻雀搜索算法
    • 2、HSSA搜索算法
      • 2.1 Piecewise map初始化种群
      • 2.2 自适应警戒者策略
      • 2.3 多策略学习机制
        • 2.3.1 排序配对学习策略
        • 2.3.2 竞争学习策略
      • 2.4 多策略边界处理
      • 2.5 HSSA算法流程
  • 二、仿真实验和结果分析
  • 三、参考文献

一、理论基础

1、麻雀搜索算法

请参考这里。

2、HSSA搜索算法

2.1 Piecewise map初始化种群

为了改善SSA通过后续寻优方式产生的解的质量,一个优良的初始种群分布是整个算法的基础。本文采用分段映射Piecewise map来对算法的初始化阶段进行混沌变换。Piecewise map作为分段线性映射的一种,和Liebovitch map、伯努利移位映射Bernoulli shift map一样,其对分布在不同位置的初始值设置了不同的变换公式。具体的数学表达式为xn+1={xnd,0≤xn<dxn−d0.5−d,d≤xn<0.51−d−xn0.5−d,0.5≤xn<1−d1−xnd,1−d≤xn<1(1)x_{n+1}=\begin{dcases}\frac{x_n}{d},\quad\quad\quad\quad\,\,\, 0\leq x_n<d\\[2ex]\frac{x_n-d}{0.5-d},\quad\quad\,\,\, d\leq x_n<0.5\\[2ex]\frac{1-d-x_n}{0.5-d},\quad 0.5\leq x_n<1-d\\[2ex]\frac{1-x_n}{d},\quad\quad\,\,\,\,\, 1-d\leq x_n<1\end{dcases}\tag{1}xn+1​=⎩⎨⎧​dxn​​,0≤xn​<d0.5−dxn​−d​,d≤xn​<0.50.5−d1−d−xn​​,0.5≤xn​<1−dd1−xn​​,1−d≤xn​<1​(1)其中,ddd为一个控制参数,用于决定四段式的分段范围使他们之间无重叠的部分。实验证明,d=0.3d=0.3d=0.3时效果最佳,故本文实验中ddd均取0.3。
图1(a)为随机初始化生成的种群分布图(2维),图1(b)为使用Piecewise map后的种群分布情况。可以看出映射后的初始化分布中群体的分散程度更高,且在边界上的个体和重合的个体数量更少。在初始化阶段分布的广度较大能够保证种群的多样性,且减少局部最优的吸引。

(a) 随机初始化
(b) Piecewise map初始化 图1 初始种群分布

2.2 自适应警戒者策略

固定不变的警戒者数量并不能够最大化其在整个过程中的作用。实际上,在觅食行为的初期,全局搜索的要求更高,需要更多的警戒者去尝试竞争最优位置,迫使领头的个体能够提高自身的勘探能力;而随着迭代的进行,少量的警戒者既能够保留一定的跳出机制,又不会频繁的干扰对于最优解的开发。因此,本文对警戒者的数量占全体数量的比例SDSDSD进行动态的改变,最大化警戒者的作用,公式如下:SD={20×eaea+1a=Tt−1(2)SD=\begin{dcases}20\times\frac{e^a}{e^a+1}\\[2ex]a=\frac Tt-1\end{dcases}\tag{2}SD=⎩⎨⎧​20×ea+1ea​a=tT​−1​(2)通过上述数学公式可以看出,SDSDSD初期占据整个种群的20%,随着迭代的进行,逐渐减小到10%附近,有效增大了警戒者机制在全局的发挥。

2.3 多策略学习机制

2.3.1 排序配对学习策略

将最优和最差的学习进行配对学习不能够实现个体之间的最佳辅导效率。而如果将学生的能力进行排序,并分成前半部分和后半部分,再分别由后半部分的学生对应向前面部分的同序号学生进行学习,这样可以实现辅导效率的最大化。在 SSA中,麻雀类比学生,而适应度值就代表成绩。基于上述原则,提出了一种全新的学习策略:排序配对学习(Ranking paired learning, RPL)。其基本思想描述如下:将种群中的全部的MMM个个体按照适应度大小进行排序,平均分成两个自然组,组内个体位置占优的组称为范例组(Group of exemplars, GE),个体记为xiEx_i^ExiE​;个体位置差的组称为学习组(Group of learners, GL),个体称为xiLx_i^LxiL​,两组均有M/2M/2M/2个个体。图2展示了RPL的核心思想。通过上述描述可知,RPL应满足:GE∩GL=∅(3)GE\cap GL=\varnothing\tag{3}GE∩GL=∅(3)∀xiE∈GEand∀xiL∈GL,f(xiE)<f(xiL)(4)\forall x_i^E\in GE\,\,and\,\,\forall x_i^L\in GL,\,\,f(x_i^E)<f(x_i^L)\tag{4}∀xiE​∈GEand∀xiL​∈GL,f(xiE​)<f(xiL​)(4)f(xiE)<f(xi+1E)andf(xiL)<f(xi+1L)(5)f(x_i^E)<f(x_{i+1}^E)\,\,and\,\,f(x_i^L)<f(x_{i+1}^L)\tag{5}f(xiE​)<f(xi+1E​)andf(xiL​)<f(xi+1L​)(5)排序完成之后,LLL组按照如下方案开始向EEE组进行配对学习:x1L→x1E⋯xM/2L→xM/2E(6)x_1^L\to x_1^E\,\,\cdots\,\,x_{M/2}^L\to x_{M/2}^E\tag{6}x1L​→x1E​⋯xM/2L​→xM/2E​(6)RPL之所以被提出是为了将位置较差的个体通过学习机制往好的方向移动,并在不改变优势群体适应度的前提下使得整个麻雀种群都能够整体成长。

图2 排序配对学习示意图

定义参数DDD表示学习者xiLx_i^LxiL​与被学习者xiEx_i^ExiE​的差值,改进后的DDD满足:D={f(xiE)−f(xiL)f(xiL),D≠0cos⁡(π(T−t)2T),D=0(7)D=\begin{dcases}\frac{f(x_i^E)-f(x_i^L)}{f(x_i^L)},\quad\,\,\,\, D\neq0\\[2ex]\cos\left(\frac{\pi(T-t)}{2T}\right),\quad D=0\end{dcases}\tag{7}D=⎩⎨⎧​f(xiL​)f(xiE​)−f(xiL​)​,D=0cos(2Tπ(T−t)​),D=0​(7)当DDD的值不为0,满足括号内的上面式子;反之,DDD按照下面的式子得到一个(0,1)(0,1)(0,1)的随机值。xiLx_i^LxiL​的学习公式满足:xi′L=(D+1)⋯xiL(8)x_i'^L=(D+1)\cdots x_i^L\tag{8}xi′L​=(D+1)⋯xiL​(8)在跟随者阶段将学习后得到的解和之前的解进行比较,通过贪婪原则保留更优的位置。贪婪选择的数学表达式如下:xi={xi′L,f(xi′L)≤f(xiL)xiL,f(xi′L)>f(xiL)(9)x_i=\begin{dcases}x_i'^L,\quad f(x_i'^L)\leq f(x_i^L)\\[2ex]x_i^L,\quad\, f(x_i'^L)> f(x_i^L)\end{dcases}\tag{9}xi​=⎩⎨⎧​xi′L​,f(xi′L​)≤f(xiL​)xiL​,f(xi′L​)>f(xiL​)​(9)

2.3.2 竞争学习策略

为了在进入下一次循环之前能够对解的质量有所保证,保持较优解的存在以及将给予较差的解学习机会可以很好地解决较优解丢失的问题,同时保证下一次输入的精度。在该思想的基础上提出了一种竞争学习的策略,其思想可描述为:在每一次迭代中,将该阶段种群中的所有个体都进行两两组队。本文设置个体数目为MMM,则拥有M/2M/2M/2个小组。对于每个小组中的两个个体,都进行适应度的比较。将适应度好的直接保存并进入下一次迭代,而对于适应度差的个体,则要采取相应的学习机制(式(10))来更新自己的位置:xi,j′t=xi,j′t+λ(xb′−xi,j′t)(10)x_{i,j}'^t=x_{i,j}'^t+\lambda(x_b'-x_{i,j}'^t)\tag{10}xi,j′t​=xi,j′t​+λ(xb′​−xi,j′t​)(10)其中,λ\lambdaλ为服从正态分布的随机数;xb′x_b'xb′​为当前迭代中竞争学习策略开始前排序时的最优解。每一次竞争学习之后,半数的个体位置会得到更新并以新值传递至下一次迭代中。图 3展示了竞争学习的主要思想。

图3 竞争学习示意图

结合竞争学习的策略提出了将随机匹配的两个个体进行比较之后再更新较差的个体,胜出者直接晋级下一次迭代的方法。这样不仅不会使得较优的个体位置丢失,最大程度地运用了优秀个体的信息。同时,随机选择竞争个体的机制也保留了群智能算法的随机性这一特点,便于验证算法的鲁棒性。

2.4 多策略边界处理

在发现者阶段,整个种群应当致力于寻找新的食物,当前最优即是潜在的最合适觅食点。但是觅食的初期伴随着最优位置的不确定性,故个体的边界处理应当保留一定的随机性。同理,在警戒者更新之后,紧接着就会是下一次迭代的开始,初始化的种群越分散,相应阶段的策略开展获取最优解的可能性就越大。随机性较强的处理方法赋予了种群的一定几率的跳出局部最优的能力。下面给出该阶段处理方法:xi′=ub−(ub−lb)⋅rand,x>uborx<lb(11)x_i'=ub-(ub-lb)\cdot rand,\,\,x>ub\,\,or\,\,x<lb\tag{11}xi′​=ub−(ub−lb)⋅rand,x>uborx<lb(11)在跟随者更新阶段,由于这一部分的麻雀数量最多,竞争也最为激烈,故超出边界的潜在数量达到三个阶段最多。在原来的跟随者机制中,适应度较好的跟随者已经向当前全局最优附近移动,保证了潜在最优区域的搜索。因此,该阶段超出边界的个体处理方式也应当围绕当前最优位置xbx_bxb​展开。
考虑到原来的SSA中,跟随者阶段的更新操作会产生两种情况,其一维示意图如图4所示。图(a)的情况是个体更新之后的位置超出上边界,图(b)则是更新后的位置超出下边界。为了使处理后的麻雀个体重回既定边界内,又能够充分运用到几个重要位置(当前全局最优xbx_bxb​、更新前的位置xix_ixi​、更新后的跟随者位置xix_ixi​、函数的上下界lblblb和ububub)的信息。同时,为了和原始跟随者的更新方向保持一致(如图4中箭头所示),按照超出边界的两种不同情况提出如下公式。
超出上边界:xi′′=xb+∣ub−xb∣⋅∣xi−ub∣∣xi′−xi∣(12)x_i''=x_b+|ub-x_b|\cdot\frac{|x_i-ub|}{|x_i'-x_i|}\tag{12}xi′′​=xb​+∣ub−xb​∣⋅∣xi′​−xi​∣∣xi​−ub∣​(12)超出下边界:xi′′=xb−∣lb−xb∣⋅∣xi−lb∣∣xi′−xi∣(13)x_i''=x_b-|lb-x_b|\cdot\frac{|x_i-lb|}{|x_i'-x_i|}\tag{13}xi′′​=xb​−∣lb−xb​∣⋅∣xi′​−xi​∣∣xi​−lb∣​(13)不难看出,∣lb−xb∣|lb-x_b|∣lb−xb​∣和∣ub−xb∣|ub-x_b|∣ub−xb​∣控制了步长的单位距离,而后面的分式控制了单位数。两者的结合实现了对于位置更新的步长控制,能够保证处理后的位置在预设的范围内。

(a) 超出上边界
(b) 超出下边界 图4 跟随者阶段边界处理示意图

2.5 HSSA算法流程

HSSA算法利用Piecewise map初始化种群,在跟随者和警戒者的位置更新完成后分别加入排序配对学习和竞争学习,最大化每一次迭代中较优的部分解的信息以此来更新差解,并保证将最优解群传递至下一代中。此外,自适应警戒者的处理使得警戒者群体的重要性被强调。同时,根据不同阶段的更新意义制定多策略边界处理机制,使得种群分布更合理,并保证了种群的多样性。具体实现步骤如下:
步骤1:设置初始化种群及各参数,包括种群规模NNN,发现者比例PDPDPD、警戒者比例SDSDSD,目标函
数的维度设置为DDD、初始值的上下界分别设定为lblblb、ububub,最大迭代次数TTT,报警阈值STSTST,求解精度ε\varepsilonε。
步骤2:使用式(1)中的Piecewise map初始化种群。
步骤3:计算每只麻雀的适应度fif_ifi​,选出当前最优适应度fbf_bfb​和其所对应的位置xbx_bxb​,以及当前最劣适应度fwf_wfw​和其对应的位置xwx_wxw​。
步骤4:根据设置的比例PDPDPD随机选取适应度最优的pNumpNumpNum个麻雀作为发现者,剩下的作为加入者,并更新发现者的位置。按照式(11)进行边界处理。
步骤5:确定跟随者群体,并更新加入者的位置。
步骤6:对当前种群按照适应度值再次排序,并根据式(7)~式(9)再次更新种群。按式(12)和式(13)进行边界处理。
步骤7:从种群中按照比例SDSDSD随机生成sNumsNumsNum个警戒者,并根据式(2)对SDSDSD进行更新。同时,根
据原始更新公式和式(10)进行警戒者位置更新操作,按照式(11)进行边界处理。
步骤8:根据麻雀种群当前的状态,更新整个种群在整个觅食过程中的最优位置xbx_bxb​,最佳适应度值fbf_bfb​,以及最差位置xwx_wxw​和最坏适应度值fwf_wfw​。
步骤9:判断迭代是否结束。若算法达到最大迭代次数或者求解精度达到设定值,则判定循环结束,并输出寻优结果;否则返回步骤3继续下一次迭代操作,且当前迭代次数t=t+1t=t+1t=t+1。

二、仿真实验和结果分析

将HSSA与PSO、WOA、GWO、BOA、TLBO和SSA进行对比,以常用23个测试函数中的F3、F4(单峰函数/30维)、F9、F10(多峰函数/30维)、F17、F21(固定维度多峰函数/2维、4维)为例,实验设置种群规模为100,最大迭代次数为500,每种算法独立运算30次,结果显示如下:

函数:F3
PSO:最差值: 33.9207, 最优值: 8.7797, 平均值: 16.7741, 标准差: 5.2392
WOA:最差值: 31922.8302, 最优值: 2508.57, 平均值: 15799.5452, 标准差: 7058.7466
GWO:最差值: 1.169e-10, 最优值: 6.8858e-15, 平均值: 9.7034e-12, 标准差: 2.2982e-11
BOA:最差值: 6.5804e-11, 最优值: 4.1646e-11, 平均值: 5.1567e-11, 标准差: 5.6942e-12
TLBO:最差值: 3.1395e-106, 最优值: 7.4825e-109, 平均值: 2.3791e-107, 标准差: 5.6521e-107
SSA:最差值: 1.7252e-200, 最优值: 0, 平均值: 5.7507e-202, 标准差: 0
HSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F4
PSO:最差值: 4.9114, 最优值: 0.61414, 平均值: 1.2679, 标准差: 0.8108
WOA:最差值: 88.4229, 最优值: 0.0004186, 平均值: 19.7548, 标准差: 25.3745
GWO:最差值: 4.8926e-10, 最优值: 1.892e-11, 平均值: 1.4902e-10, 标准差: 1.1752e-10
BOA:最差值: 3.5817e-08, 最优值: 2.5204e-08, 平均值: 3.0567e-08, 标准差: 2.9036e-09
TLBO:最差值: 1.2704e-50, 最优值: 1.5968e-52, 平均值: 1.4124e-51, 标准差: 2.3148e-51
SSA:最差值: 1.6516e-174, 最优值: 0, 平均值: 5.5052e-176, 标准差: 0
HSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F9
PSO:最差值: 120.4211, 最优值: 54.2795, 平均值: 80.4849, 标准差: 17.7901
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
GWO:最差值: 10.6532, 最优值: 0, 平均值: 0.81471, 标准差: 2.3041
BOA:最差值: 3.626e-08, 最优值: 0, 平均值: 1.274e-09, 标准差: 6.617e-09
TLBO:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
SSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
HSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F10
PSO:最差值: 3.6955, 最优值: 1.3211, 平均值: 2.5288, 标准差: 0.58737
WOA:最差值: 7.9936e-15, 最优值: 8.8818e-16, 平均值: 4.0856e-15, 标准差: 2.5294e-15
GWO:最差值: 3.2863e-14, 最优值: 2.2204e-14, 平均值: 2.7297e-14, 标准差: 3.4512e-15
BOA:最差值: 2.9301e-08, 最优值: 1.3931e-08, 平均值: 2.1611e-08, 标准差: 3.1866e-09
TLBO:最差值: 4.4409e-15, 最优值: 4.4409e-15, 平均值: 4.4409e-15, 标准差: 0
SSA:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0
HSSA:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0
函数:F17
PSO:最差值: 0.39796, 最优值: 0.39789, 平均值: 0.3979, 标准差: 2.1312e-05
WOA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 3.2544e-07
GWO:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 6.6983e-07
BOA:最差值: 0.39851, 最优值: 0.39789, 平均值: 0.39803, 标准差: 0.00014701
TLBO:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0
SSA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0
HSSA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0
函数:F21
PSO:最差值: -2.6303, 最优值: -10.1532, 平均值: -8.562, 标准差: 2.9831
WOA:最差值: -2.6305, 最优值: -10.1532, 平均值: -9.311, 标准差: 2.2275
GWO:最差值: -5.0552, 最优值: -10.1531, 平均值: -9.644, 标准差: 1.5507
BOA:最差值: -4.5488, 最优值: -7.0364, 平均值: -5.1356, 标准差: 0.68189
TLBO:最差值: -5.0552, 最优值: -10.1532, 平均值: -9.3035, 标准差: 1.9324
SSA:最差值: -5.0552, 最优值: -10.1532, 平均值: -9.9833, 标准差: 0.93076
HSSA:最差值: -10.1532, 最优值: -10.1532, 平均值: -10.1532, 标准差: 6.4471e-15

实验结果证明了HSSA在收敛速度上的稳定性和寻优的高效性。

三、参考文献

[1] 王子恺, 黄学雨, 朱东林, 等. 融合边界处理机制的学习型麻雀搜索算法[J/OL]. 北京航空航天大学学报: 1-16 [2022-08-16].

融合边界处理机制的学习型麻雀搜索算法相关推荐

  1. 融合正余弦和柯西变异的麻雀搜索算法

    文章目录 一.理论基础 1.麻雀搜索算法 2.融合正余弦和柯西变异的麻雀搜索算法 (1)折射(小孔成像)反向学习策略 (2)正余弦策略 (3)柯西变异策略 (4)SCSSA算法流程 二.仿真实验与分析 ...

  2. 麻雀搜索算法(Sparrow Search Algorithm,SSA)

    文章目录 1 算法思想 2 算法步骤 3 求解函数最值(Python实现) 4 算法进阶 直接改进SSA 融合别的智能优化算法来改进SSA SMA及其改进的应用 原论文: [1]薛建凯. 一种新型的群 ...

  3. 融合柯西变异和反向学习的改进麻雀算法

    文章目录 一.理论基础 1.基本麻雀搜索算法 2.融合柯西变异和反向学习的麻雀搜索算法 (1)Sin混沌初始化种群 (2)动态自适应权重 (3)改进的侦查预警麻雀更新公式 (4)融合柯西变异和反向学习 ...

  4. 让绵羊变成狮子---创造学习型营销团队[转]

        睁 开眼看看市场,你看到的.听见的.闻到的.摸到的可能都是商品社会竞争的硝烟,市场竞争的激烈己达到了前所未有的强度.企业在市场竞争中重中之重是市场营 销,企业营销团队就好比阵地战强攻中的冲锋队 ...

  5. 智能优化算法:麻雀搜索算法-附代码

    2020智能优化算法:麻雀搜索算法 文章目录 2020智能优化算法:麻雀搜索算法 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 5.Python代码 摘要:麻雀搜索算法(Sparro ...

  6. 融合柯西变异和反向学习的改进麻雀算法-附代码

    融合柯西变异和反向学习的改进麻雀算法 文章目录 融合柯西变异和反向学习的改进麻雀算法 1.麻雀搜索算法 2.融合柯西变异和反向学习的改进麻雀算法(ISA) 2.1 Sine 初始化种群 2.2 动态自 ...

  7. 知识管理:营建学习型团队

    知识管理:营建学习型团队 作者:齐岭    转贴自:软件工程师 首先让我们看看什么是学习型的团队.按照曼彻斯特商学院研究人员对两千多个团队的调查研究,把团队分为三种类型:创造性团队.常规型团队和糟糕的 ...

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

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

  9. 医疗大数据在学习型健康医疗系统中的应用

    点击上方蓝字关注我们 医疗大数据在学习型健康医疗系统中的应用 柴扬帆1,2, 孔桂兰1, 张路霞1 1 北京大学健康医疗大数据国家研究院,北京 100191 2 北京大学公共卫生学院,北京 10019 ...

最新文章

  1. Asp.net读取AD域信息的方法(一)
  2. 史上最具体Android集成QQ,微信,微博分享(不用第三方)持续更新中
  3. 编译 / __attribute__(constructor)和__attribute__(destructor)
  4. GBin1分享的10个吸引眼球的jQuery插件
  5. Python安装、使用MySQL数据库
  6. 感动 ∣她养我长大,我陪她到老!90后女孩带痴呆症养母读研
  7. Nginx(四):负载均衡Load balancing
  8. 云计算仿真框架CloudSim介绍(截图版)
  9. ArcGIS:ArcToolBox工具使用——提取DEM/DSM中的高程点
  10. SLF4J源码解析-LoggerFactory(二)
  11. iOS底层探索之多线程(八)—GCD源码分析(函数的同步性、异步性、单例)
  12. 用Rufus 3.0.1304把Windows 10 装入移动硬盘
  13. 机器学习二分类模型评价指标详述
  14. 多层线性模型和面板数据模型笔记(待完善,持续更)
  15. C# winForm 软件自动升级实现方式
  16. 一元函数积分学之3__绝对值函数的定积分的解法
  17. IDA报错Unexpected fatal error while intitailizing Python runtime
  18. GTA5最新线上小助手
  19. VS2005错误 error PRJ0003 生成 cmd.exe 时出错
  20. 树莓派 摄像头mjpg-streamer视频推流+开机自启动

热门文章

  1. elasticsearch 学习笔记3
  2. java 学习网站_Java学习必不可少的十大网站
  3. 将已写好页面的px转化为rem(px to rem)
  4. T149基于51单片机4层电梯控制器Proteus设计、keil程序、c语言、源码
  5. 建造者模式(Builder Pattern)【创建型】
  6. ArcBlock 分享 | OCAP Playground让区块链开发变得更友好
  7. 通达OA web页面与精灵显示内容更新后不一致的问题
  8. 情人节主题微信红包封面序列号免费领取!
  9. 【浅墨Unity3D Shader编程】之中的一个 夏威夷篇:游戏场景的创建 amp; 第一个Shader的书写...
  10. [运维] proxmox ve 与 vSphere 对比