请参考这里。
请参考这里。
针对麻雀算法易陷入局部最优这一现象,本文在麻雀搜索算法发现者的位置更新公式中引入正弦余弦算法(Sine cosine algorithm, SCA),通过利用正余弦模型震荡变化特性对发现者位置进行作用,维持发现者个体多样性,进而提高SSA的全局搜索能力。SCA的中心思想是根据正余弦模型的振荡变化对整体和局部寻优,获取整体最优值。
针对基本的正余弦算法的步长搜索因子 r 1 = a − a t / I t e r max r_1=a-at/Iter_{\max} r1=a−at/Itermax( a a a为常数, t t t为当前迭代次数,本文设置 a = 1 a=1 a=1)呈线性递减趋势,不利于进一步平衡SSA的全局搜索和局部开发能力,于是对步长搜索因子进行改进,变换曲线如图1所示,新的非线性递减搜索因子如式(1),在前期权重较大,递减速度慢,利于提高全局寻优能力,在权重因子较小时,增强算法在局部开发的优势,加快获取最优解的速度。
r 1 ′ = a × ( 1 − ( t I t e r max ) η ) 1 / η (1) r_1'=a×\left(1-\left(\frac{t}{Iter_{\max}}\right)^\eta\right)^{1/\eta}\tag{1} r1′=a×(1−(Itermaxt)η)1/η(1)其中, η \eta η为调节系数, η ≥ 1 \eta≥1 η≥1; a = 1 a=1 a=1。
考虑到SSA算法在整个搜索过程中,种群个体位置更新常受到当前位置影响。因此引进式(2)的非线性权重因子用于调整种群个体位置更新对此时个体信息的依赖度。在寻优前期,较小的降低了寻优个体位置更新对当前解位置影响,提升了算法全局寻优能力。在后期较大的利用当前位置信息与个体位置更新的高度依赖性,加快了算法的收敛速度,变化曲线如图1所示。则得到新的发现者位置更新公式如式(3)。 ω = e t I t e r max − 1 e − 1 (2) \omega=\frac{e^{\frac{t}{Iter_{\max}}}-1}{e-1}\tag{2} ω=e−1eItermaxt−1(2) X i , j t + 1 = { ω ⋅ X i , j t + r 1 ′ ⋅ sin ( r 2 ) ⋅ ∣ r 3 ⋅ X best − X i , j t ∣ R 2 < S T ω ⋅ X i , j t + r 1 ′ ⋅ cos ( r 2 ) ⋅ ∣ r 3 ⋅ X best − X i , j t ∣ R 2 ≥ S T (3) X_{i,j}^{t+1}=\begin{dcases}\omega\cdot X_{i,j}^t+r_1'\cdot\sin(r_2)\cdot|r_3\cdot X_{\text{best}}-X_{i,j}^t|\quad R_2
在觅食过程中,跟随者经常围绕最好的发现者周围进行觅食,其间也有可能发生食物的争夺,使其自己变成发现者,为避免算法陷入局部最优,在跟随者更新公式中引入柯西变异策略,提升全局寻优能力。新的跟随者位置更新如下: X i , j t + 1 = X best ( t ) + c a u c h y ( 0 , 1 ) ⊕ X best ( t ) (4) X_{i,j}^{t+1}=X_{\text{best}}(t)+cauchy(0,1)\oplus X_{\text{best}}(t)\tag{4} Xi,jt+1=Xbest(t)+cauchy(0,1)⊕Xbest(t)(4)其中, c a u c h y ( 0 , 1 ) cauchy(0,1) cauchy(0,1)为标准柯西分布函数, ⊕ \oplus ⊕表示相乘含义。
柯西分布与标准的正态分布相似,为连续的概率分布,在原点处值较小,两端较为扁长,逼近零速率较慢,因而相比于正态分布能产生更大的扰动。因此,利用柯西变异对麻雀位置更新中的个体进行扰动,从而扩大麻雀算法的搜索规模,进而提升算法跳出局部最优能力。
步骤1 设置种群大小 N N N,最大迭代次数 I t e r max Iter_{\max} Itermax,发现者比例 P D PD PD,侦察者比例 S D SD SD,警戒阈值 R 2 R_2 R2,安全阈值 S T ST ST等;
步骤2 执行折射反向学习策略对麻雀种群初始化;
步骤3 计算每只麻雀的适应度值幵排序,确定当前最优、最差适应度个体;
步骤4 根据式(3)对发现者位置更新;
步骤5 根据式(4)对跟随者位置更新;
步骤6 根据原始算法公式对警戒者位置更新;
步骤7 判断当前迭代次数是否达到结束条件,若满足,则进行下一步,否则跳转步骤3;
步骤8 程序结束,输出最优适应度值和最佳位置。
为验证SCSSA算法的性能,选取了飞蛾扑火算法(MFO)、正余弦算法(SCA)、多元宇宙算法(MVO),以及基本麻雀算法(SSA)共4种算法,以文献[1]中表1列出的测试函数为例。为了对各种算法的收敛性进行详细描述,将用收敛曲线图来实现。保证对比的公平性,设置5种算法的种群数为30,维度 d i m = 30 dim=30 dim=30,最大迭代次数为500,得到了独立运行100次的收敛曲线,以及这100次实验的最优值、最差值、平均值、标准差和与SCSSA对比的Wilcoxon秩和检验。
结果显示如下:
函数:F1
MFO:最差值: 20002.2915,最优值:0.32718,平均值:1804.7456,标准差:4113.241,秩和检验:5.64e-39
SCA:最差值: 97.1133,最优值:0.0015906,平均值:7.1271,标准差:12.4893,秩和检验:5.64e-39
MVO:最差值: 2.228,最优值:0.57317,平均值:1.2453,标准差:0.33182,秩和检验:5.64e-39
SSA:最差值: 3.4157e-60,最优值:0,平均值:3.4157e-62,标准差:3.4157e-61,秩和检验:6.3043e-34
SCSSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F2
MFO:最差值: 80.045,最优值:0.1595,平均值:34.0545,标准差:18.5754,秩和检验:5.64e-39
SCA:最差值: 0.15554,最优值:0.00015768,平均值:0.016807,标准差:0.02411,秩和检验:5.64e-39
MVO:最差值: 122.2766,最优值:0.39159,平均值:5.7702,标准差:21.2631,秩和检验:5.64e-39
SSA:最差值: 5.9025e-28,最优值:0,平均值:6.1599e-30,标准差:5.9055e-29,秩和检验:1.1187e-36
SCSSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F3
MFO:最差值: 76618.8803,最优值:2473.0495,平均值:21173.9591,标准差:14570.3724,秩和检验:5.64e-39
SCA:最差值: 30964.7549,最优值:241.6888,平均值:9122.0706,标准差:6072.7588,秩和检验:5.64e-39
MVO:最差值: 621.471,最优值:86.284,平均值:224.4893,标准差:96.6182,秩和检验:5.64e-39
SSA:最差值: 1.5791e-49,最优值:0,平均值:2.0451e-51,标准差:1.6416e-50,秩和检验:3.0378e-37
SCSSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F4
MFO:最差值: 9976161118.6334,最优值:1013.7082,平均值:299521423.8552,标准差:1710161502.5775,秩和检验:2.5621e-34
SCA:最差值: 195970330.5576,最优值:63.27,平均值:6487312.6747,标准差:22536453.8572,秩和检验:2.5621e-34
MVO:最差值: 307603.0407,最优值:166.8625,平均值:32592.1575,标准差:66615.0472,秩和检验:2.5621e-34
SSA:最差值: 0.0023462,最优值:2.8732e-08,平均值:0.00016001,标准差:0.00034636,秩和检验:2.5621e-34
SCSSA:最差值: 28.7785,最优值:25.0818,平均值:26.6673,标准差:1.0607,秩和检验:1
函数:F5
MFO:最差值: 264.0209,最优值:69.1146,平均值:167.1552,标准差:37.028,秩和检验:5.64e-39
SCA:最差值: 149.8501,最优值:0.027875,平均值:42.3982,标准差:34.8931,秩和检验:5.64e-39
MVO:最差值: 210.4823,最优值:63.4417,平均值:122.6496,标准差:32.0364,秩和检验:5.64e-39
SSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
SCSSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F6
MFO:最差值: 19.963,最优值:1.2747,平均值:14.9257,标准差:6.9062,秩和检验:5.64e-39
SCA:最差值: 20.3961,最优值:0.018723,平均值:13.8423,标准差:8.6714,秩和检验:5.64e-39
MVO:最差值: 3.4943,最优值:0.39431,平均值:1.7179,标准差:0.56273,秩和检验:5.64e-39
SSA:最差值: 8.8818e-16,最优值:8.8818e-16,平均值:8.8818e-16,标准差:0,秩和检验:NaN
SCSSA:最差值: 8.8818e-16,最优值:8.8818e-16,平均值:8.8818e-16,标准差:0,秩和检验:NaN
函数:F7
MFO:最差值: 181.0802,最优值:0.27103,平均值:15.0466,标准差:35.0191,秩和检验:5.64e-39
SCA:最差值: 4.8051,最优值:0.064426,平均值:1.0011,标准差:0.58926,秩和检验:5.64e-39
MVO:最差值: 0.99368,最优值:0.59159,平均值:0.86142,标准差:0.080992,秩和检验:5.64e-39
SSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
SCSSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F8
MFO:最差值: 24.2085,最优值:0.0176,平均值:4.9129,标准差:5.8968,秩和检验:5.64e-39
SCA:最差值: 21.474,最优值:0.0040588,平均值:1.551,标准差:3.0822,秩和检验:5.64e-39
MVO:最差值: 19.863,最优值:2.5692,平均值:6.9972,标准差:2.7416,秩和检验:5.64e-39
SSA:最差值: 7.6551e-05,最优值:0,平均值:8.9169e-07,标准差:7.7458e-06,秩和检验:2.1572e-38
SCSSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F9
MFO:最差值: -6747.0805,最优值:-10514.4528,平均值:-8627.4886,标准差:846.5076,秩和检验:5.8632e-06
SCA:最差值: -3143.2779,最优值:-4441.4707,平均值:-3759.161,标准差:291.0339,秩和检验:2.5621e-34
MVO:最差值: -5881.928,最优值:-9574.2881,平均值:-7726.9612,标准差:755.1526,秩和检验:7.3102e-21
SSA:最差值: -6438.5117,最优值:-9538.0447,平均值:-7831.06,标准差:643.7833,秩和检验:8.5948e-21
SCSSA:最差值: -6788.306,最优值:-11251.9193,平均值:-9300.8122,标准差:1035.7693,秩和检验:1
函数:F10
MFO:最差值: 301.0113,最优值:0.033216,平均值:122.3774,标准差:75.3967,秩和检验:5.64e-39
SCA:最差值: 9.0615,最优值:6.9455e-05,平均值:0.40514,标准差:1.0568,秩和检验:5.64e-39
MVO:最差值: 0.025132,最优值:0.0054999,平均值:0.012216,标准差:0.0037623,秩和检验:5.64e-39
SSA:最差值: 8.0835e-60,最优值:0,平均值:8.1086e-62,标准差:8.0833e-61,秩和检验:6.3043e-34
SCSSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
结果表明,融合正余弦与柯西变异的麻雀搜索算法在全局寻优以及局部开发具有更优表现,因此也证明了改进策略的有效性和可靠性。
[1] 李爱莲, 全凌翔, 崔桂梅, 等. 融合正余弦和柯西变异的麻雀搜索算法[J]. 计算机工程与应用, 2022, 58(3): 91-99.