2. 广西农业职业技术大学,广西南宁 530007;
3. 广西民族大学人工智能学院,广西南宁 530006
2. Guangxi Agricultural Vocational and Technical University, Nanning, Guangxi, 530007, China;
3. School of Artificial Intelligence, Guangxi University for Nationalities, Nanning, Guangxi, 530006, China
群智能算法在许多领域发挥着重要的作用,近年来各种受自然界生物群体行为启发的群智能算法被提出,如布谷鸟搜索(Cuckoo Search,CS)算法[1],灰狼优化(Grey Wolf Optimizer,GWO)算法[2]和鲸鱼优化算法(Whale Optimization Algorithm,WOA)[3]等。Mirjalili等[4]根据樽海鞘群的觅食行为提出一种樽海鞘群算法(Salp Swarm Algorithm,SSA),因其原理简单和易于实现,已成功应用于多个领域[5, 6]。然而,樽海鞘群算法与其他群智能算法一样,必须克服求解精度低和易陷入局部最优等缺点。诸多学者针对这一缺陷提出各种改进策略,如白钰等[7]提出基于自适应惯性权重的樽海鞘群算法,引入惯性权重和差分变异思想提高算法性能;陈连兴等[8]提出一种改进的樽海鞘群算法,对领导者引入加权重心取代最优个体位置和对个体逐维随机差分变异,改进了算法的寻优性能,但这两种算法的Rosenbrock函数求解精度较低。张铸等[9]提出基于自适应正态云模型的引力樽海鞘群算法,结合引力搜索技术和正态云发生器有效提高收敛精度,全局搜索能力大大增强,但局部搜索能力相对较弱。王彦军等[10]提出改进的樽海鞘群算法及其在焊接梁问题中的应用,利用精英反向学习、差分策略和Gauss变异为算法全局搜索奠定基础;康俊涛等[11]提出基于樽海鞘群算法的桁架结构优化设计,在搜索过程中引入个体历史信息改进算法,但算法改进效果不明显。周新等[12]提出融合黄金正弦混合变异的自适应樽海鞘群算法,通过黄金正弦算法(Golden Sine Algorithm,Gold-SA)替换樽海鞘群算法领导者位置更新方式,并融合邻域重心反向学习与柯西变异,改善算法性能,测试函数较为简单。范千等[13]提出一种改进的樽海鞘群算法,采用折射反向学习机制和自适应控制因子提高优化性能;陈忠云等[14]提出基于混沌精英质心拉伸机制的樽海鞘群算法,采用Tent混沌和精英质心拉伸机制增强全局搜索能力;张严等[15]提出基于Levy飞行策略的改进樽海鞘群算法,对领导者位置进行Levy飞行更新,但以上算法求解精度较低。
虽然上述改进算法与基本SSA相比在性能上有了一定程度的改善,但求解精度还有提升空间。因此,本研究提出一种改进的樽海鞘群算法(Improved Salp Swarm Algorithm,ISSA),通过在追随者阶段引入差分进化策略和黄金正弦机制,共同增强算法寻优能力。通过23个基准函数测试,验证ISSA算法的有效性。
1 樽海鞘群算法樽海鞘群算法是模拟樽海鞘群觅食行为而衍生的一种群智能算法,在SSA中领导者引导群体进行食物搜索,其位置更新公式为
$ x_{j}^{1}=\left\{\begin{array}{l} F_{j}+c_{1}\left(\left(u b_{j}-l b_{j}\right) c_{2}+l b_{j}\right) c_{3}<0.5 \\ F_{j}-c_{1}\left(\left(u b_{j}-l b_{j}\right) c_{2}+l b_{j}\right) c_{3} \geqslant 0.5 \end{array}, \right. $ | (1) |
$ c_{1}=2 e^{-\left(4 \times l / l_{\max }\right)^{2}}, $ | (2) |
其中,Fj表示第j维领导者位置; c1是平衡全局搜索和局部搜索的重要参数,在迭代前期c1值较大有利于全局搜索,在迭代后期c1值较小有利于局部搜索;c2,c3∈[0, 1];ubj,lbj表示第j维的上下界; l表示当前迭代次数; lmax表示最大迭代次数。
追随者紧随领导者后并依次形成链式结构,其位置更新公式为
$ x_{j}^{i}=\frac{1}{2}\left(x_{j}^{i}+x_{j}^{i-1}\right), $ | (3) |
其中,i≥2,xji表示第i个樽海鞘第j维的位置。
2 改进的樽海鞘群算法 2.1 改进领导者方式基本SSA中,领导者完全依靠式(1)进行搜索,若领导者陷入局部最优,则追随者必陷入局部最优。因此考虑对领导者第j维值采用随机维度以拓展种群多样性,有利于算法跳出局部最优,故领导者位置更新公式修改为
$ k=\operatorname{randperm}(n), $ | (4) |
$ \begin{array}{*{20}{l}} \;\;\;\;\;\;\;\;\;\;x_{j}^{1}= \\ \left\{\begin{array}{l} F_{k(1)}+c_{1}\left(\left(u b_{j}-l b_{j}\right) c_{2}+l b_{j}\right) c_{3}<0.5 \\ F_{k(2)}-c_{1}\left(\left(u b_{j}-l b_{j}\right) c_{2}+l b_{j}\right) c_{3} \geqslant 0.5 \end{array}\right., \end{array} $ | (5) |
其中,n为问题维数,randperm为生成不重复的随机整数。
2.2 改进追随者方式在基本SSA中,当前追随者位置仅取自身位置和上一个位置的平均值,若追随者紧密相连,则不利于全局搜索,且未利用群体之间的交流信息,因此考虑对追随者采用差分进化策略进一步拓展种群多样性。首先剔除种群中领导者位置,从剩下种群中随机生成3个不同位置的追随者进行差分进化操作,具体计算公式如下:
$ y_{j}^{i}=x_{j}^{r_{1}}+b *\left(x_{j}^{r_{2}}-x_{j}^{r_{3}}\right), $ | (6) |
其中,r1,r2,r3为追随者中任意一个,且r1≠r2≠r3,b∈[0, 1]为控制变异概率。
$ x_{j}^{i}=\left\{\begin{array}{l} y_{j}^{i}, \text { if rand } \leqslant c r \\ x_{j}^{i}, \text { otherwise } \end{array}\right., $ | (7) |
其中,cr∈[0, 1]为控制交叉概率。
2.3 黄金正弦算法黄金正弦算法是Tanyildizi等[16]提出的一种元启发式算法,该算法基于正弦函数和单位圆的关系求解优化问题。Gold-SA遍历单位圆上所有点,因而具有较强的全局搜索能力,而且在全局最优位置和当前位置采用黄金分割系数,因此也具有较强的局部搜索能力。Gold-SA位置更新公式为
$ x_{j}^{i}=x_{j}^{i}\left|\sin \left(r_{1}\right)\right|+r_{2} \sin \left(r_{1}\right)\left|x_{1} F_{j}-x_{2} x_{j}^{i}\right|, $ | (8) |
其中,r1∈[0, 2π]内的随机数,r2∈[0, π]内的随机数,x1=-π+(1-τ)×2π,τ为黄金分割系数,x2=-π+τ×2π。为进一步提升Gold-SA局部搜索能力,在自身位置引入自适应惯性权重式(2),因此最终Gold-SA位置更新公式为
$ \begin{array}{*{20}{l}} \;\;\;\;\;\;\;x_{j}^{i} =c_{1} x_{j}^{i}\left|\sin \left(r_{1}\right)\right|+r_{2} \sin \left(r_{1}\right) \mid x_{1} F_{j} -\\ x_{2} c_{1} x_{j}^{i} \mid 。\end{array} $ | (9) |
输入:种群规模N,函数名称及最大迭代次数,设置变异概率b和交叉概率cr,计算黄金分割系数。
① 在领域范围内随机产生初始种群,计算其最优值及食物源位置。
② While l < lmax
③ 计算式(2);
④ For i=1∶N
⑤ If i≤N/2i
⑥ 执行式(4)、式(5);
⑦ Else
⑧ If rand < c1
⑨ 执行式(6)、式(7);
⑩ Else
⑪ 执行式(9);
⑫ End If
⑬ End If
⑭ End For
⑮ For i=1∶N
⑯ 越界处理及计算Fnew;
⑰ 如果Fnew < F,则替换樽海鞘群个体和领导者位置;
⑱ End For
⑲ 迭代次数加1;
⑳ End While
2.5 ISSA时间复杂度分析在ISSA中只是一定概率下执行式(6)、式(7)和式(9),并替换基本SSA中的式(3),因此并没有增加算法的时间复杂度。
3 仿真实验与结果为检验ISSA的性能,选取文献[9]中23个基准函数进行测试,并将其计算结果与基本SSA、Gold-SA和改进算法LECUSSA[15]、RCSSA[13]及CGSSA[9]进行比较,以验证ISSA综合改进策略的效果。为公平比较,所有算法的参数设置如下:N=30,lmax=500,b=0.2,cr=0.1,其余参数设置与原文献相同。每种算法在Matlab 2016a软件中独立运行30次,计算每个函数的平均值(Mean)和方差(Std.),Mean和Std.越小,则性能越佳,结果如表 1所示。
f | Index | ISSA | SSA | Gold-SA | LECUSSA | RCSSA | CGSSA |
f1(x) | Mean | 0 | 2.3834e-007 | 3.6043e-271 | 1.5532e-009 | 0 | 1.6738e-054 |
Std. | 0 | 6.4267e-007 | 0 | 2.2528e-009 | 0 | 2.7054e-054 | |
f2(x) | Mean | 0 | 1.4662e-002 | 1.0248e-135 | 8.5436e-006 | 6.5700e-173 | 2.9150e-028 |
Std. | 0 | 3.8437e-002 | 4.4205e-135 | 6.7006e-006 | 0 | 2.2612e-028 | |
f3(x) | Mean | 0 | 8.3157e-006 | 8.9380e-133 | 1.4808e-009 | 0 | 1.8530e-045 |
Std. | 0 | 3.0598e-005 | 4.8955e-132 | 1.9647e-009 | 0 | 3.0443e-045 | |
f4(x) | Mean | 0 | 2.1171e-005 | 2.2183e-124 | 7.1387e-006 | 1.3100e-173 | 1.3627e-027 |
Std. | 0 | 6.9667e-006 | 1.2106e-123 | 6.8494e-006 | 0 | 1.4811e-027 | |
f5(x) | Mean | 3.8963e-008 | 8.5536e+001 | 2.9000e-003 | 1.4951e-007 | 9.8200e+001 | 1.4359e-024 |
Std. | 2.0339e-008 | 1.4394e+002 | 6.4600e-003 | 9.2890e-008 | 3.9600e-002 | 2.9841e-024 | |
f6(x) | Mean | 1.0714e-009 | 9.8163e-010 | 1.2215e-004 | 3.8335e-009 | 3.200 0 | 0 |
Std. | 3.4881e-010 | 3.0816e-010 | 4.1617e-004 | 1.0864e-009 | 6.4300e-001 | 0 | |
f7(x) | Mean | 1.4414e-004 | 1.4262e-002 | 1.1964e-004 | 5.8106e-004 | 7.1200e-005 | 1.0680e-005 |
Std. | 1.0704e-004 | 8.4156e-003 | 9.3372e-005 | 5.8942e-004 | 7.0800e-005 | 1.4139e-005 | |
f8(x) | Mean | -4.1898e+003 | -2.8296e+003 | -4.1898e+003 | -3.1060e+003 | -2.3600e+004 | - |
Std. | 3.7002e-012 | 3.4156e+002 | 3.8400e-002 | 2.7587e+002 | 4.0200e+004 | - | |
f9(x) | Mean | 0 | 1.8539e+001 | 0 | 5.5335e-010 | 0 | 0 |
Std. | 0 | 6.969 5 | 0 | 7.9625e-010 | 0 | 0 | |
f10(x) | Mean | 8.8818e-016 | 1.036 9 | 8.8818e-016 | 5.8793e-006 | 8.8818e-016 | 8.8818e-016 |
Std. | 2.0059e-031 | 0.960 3 | 2.0059e-031 | 5.7819e-006 | 2.0059e-031 | 0 | |
f11(x) | Mean | 0 | 0.225 7 | 0 | 1.3654e-009 | 0 | 0 |
Std. | 0 | 0.119 4 | 0 | 1.8306e-009 | 0 | 0 | |
f12(x) | Mean | 1.2234e-011 | 9.0517e-001 | 2.8897e-005 | 3.5500e-002 | 1.6300e-001 | 4.7116e-032 |
Std. | 6.5605e-012 | 1.259 1 | 6.0821e-005 | 1.0460e-001 | 4.5300e-002 | 1.6702e-047 | |
f13(x) | Mean | 7.0350e-011 | 2.9157e-003 | 2.5134e-005 | 3.2885e-009 | 9.91 | 1.3498e-032 |
Std. | 2.7096e-011 | 4.9125e-003 | 4.3120e-005 | 9.7071e-009 | 4.0700e-003 | 5.5674e-048 | |
f14(x) | Mean | 9.9800e-001 | 1.196 7 | 9.9800e-001 | 2.400 3 | 1.530 0 | 9.9800e-001 |
Std. | 6.7752e-016 | 4.8108e-001 | 1.5649e-005 | 1.603 4 | 9.6400e-001 | 0 | |
f15(x) | Mean | 3.6514e-004 | 1.6150e-003 | 3.8530e-004 | 3.5777e-004 | 2.0500e-003 | 3.2620e-005 |
Std. | 1.0449e-004 | 3.6562e-003 | 1.0269e-004 | 4.5285e-005 | 4.9900e-003 | 8.9776e-006 | |
f16(x) | Mean | -1.031 6 | -1.031 6 | -1.026 7 | -1.0316 | -1.030 0 | -1.031 6 |
Std | 0 | 0 | 6.9000e-003 | 0 | 7.9200e-014 | 0 | |
f17(x) | Mean | 3.9790e-001 | 3.9790e-001 | 3.9790e-001 | 4.1010e-001 | 3.9790e-001 | 3.9790e-001 |
Std. | 1.6929e-016 | 1.6929e-016 | 2.6359e-010 | 4.4200e-002 | 1.5300e-013 | 0 | |
f18(x) | Mean | 3 | 3 | 8.530 6 | 3 | 3.00 | 3 |
Std. | 0 | 0 | 1.0932e+001 | 0 | 7.9700e-013 | 2.469e-015 | |
f19(x) | Mean | -3.855 0 | -3.862 8 | -3.794 3 | -3.837 0 | -3.860 0 | -3.862 8 |
Std. | 1.3500e-002 | 1.3550e-015 | 8.9000e-002 | 1.4110e-001 | 1.3800e-011 | 2.4840e-015 | |
f20(x) | Mean | -3.090 9 | -3.206 7 | -2.971 4 | -3.294 3 | -3.230 0 | -3.023 7 |
Std. | 6.6500e-002 | 4.7718e-002 | 2.2780e-001 | 5.1100e-002 | 6.2300e-002 | 8.796e-002 | |
f21(x) | Mean | -1.0153e+001 | -6.896 6 | -1.0151e+001 | -5.055 2 | -1.0200e+001 | -1.0153e+001 |
Std. | 3.6134e-015 | 3.420 5 | 2.0000e-003 | 1.8067e-015 | 3.7000e-011 | 2.6240e-015 | |
f22(x) | Mean | -1.0402e+001 | -8.251 3 | -1.0399e+001 | -5.087 7 | -1.0400e+001 | -1.0402e+001 |
Std. | 9.9424e-017 | 3.370 1 | 5.3000e-003 | 0 | 5.3100e-011 | 5.2340e-014 | |
f23(x) | Mean | -1.0536e+001 | -9.561 6 | -1.0533e+001 | -5.128 5 | -1.0500e+001 | -1.0536e+001 |
Std. | 1.0700e-016 | 2.563 0 | 4.0000e-003 | 2.7101e-015 | 5.1700e-011 | 5.2370e-015 | |
注:“-”表示未对相关函数进行测试 Note: "-" represents that the correlation function is not tested |
从表 1可知,ISSA与基本SSA和Gold-SA比较,在7个单峰函数(f1-f7)测试下,ISSA的计算结果除函数f6比SSA、函数f7比Gold-SA差且相差甚微以外,其余5个函数的计算结果均优于SSA和Gold-SA,其中函数f1-f4达到理论值,函数f5的计算结果分别比Gold-SA和SSA高出5个和9个数量级,可见ISSA局部勘探能力优异。在6个多峰函数(f8-f13)测试下,ISSA的计算结果都优于SSA,有3个函数的计算结果与Gold-SA相等,有3个函数的计算结果优于Gold-SA,可见ISSA全局搜索能力更强。在10个固定维多峰函数(f14-f23)测试下,ISSA的计算结果除函数f19和f20比SSA稍差以外,大多数函数的计算结果均优于SSA或Gold-SA,证明ISSA全局搜索能力优异。
再将ISSA与改进算法LECUSSA、RCSSA及CGSSA进行比较,LECUSSA仅函数f15、f20求解结果比ISSA优越且差别不大,其余21个函数中有2个函数(f16、f18)求解结果与ISSA一致,另外19个函数求解结果均比ISSA算法差;RCSSA有5个函数(f1、f3、f9、f10、f11)求解结果与ISSA一致,有3个函数(f7,f19,f20)求解结果优于ISSA,其余函数求解结果均比ISSA差;除函数f8外,CGSSA有8个函数(f1-f4、f18、f20、f22、f23)求解结果比ISSA差,有3个函数(f9、f11、f16)求解结果与ISSA相等,其余11个函数求解结果优于ISSA。因此,总体来看,ISSA优于LECUSSA和RCSSA,次于CGSSA。
为直观展示ISSA的收敛速度和计算精度,给出部分函数平均收敛曲线如图 1所示;为便于比较,纵坐标取平均函数值对数。从图 1可知,ISSA的平均收敛曲线速度比SSA快, 计算精度比SSA高;但在迭代前期ISSA收敛速度慢于Gold-SA,这是由于在迭代前期ISSA以大概率执行差分进化策略,而在迭代后期ISSA收敛速度明显优于Gold-SA。
4 结论
本研究提出了一种改进的樽海鞘群算法,通过在领导者位置引入随机维度以拓展种群多样性。在算法前期,追随者以较大概率执行差分进化策略,进一步增强种群多样性;在算法后期,追随者以较大概率执行黄金正弦算法,同时在黄金正弦算法自身位置引入自适应惯性权重增强局部勘探能力。使用23个基准函数评估算法,结果表明ISSA寻优性能优于基本SSA和Gold-SA,同时与其他改进的樽海鞘群算法相比,ISSA算法也具有一定优势。
[1] |
RAJABIOUN R. Cuckoo optimization algorithm[J]. Applied Soft Computing, 2011, 11(8): 5508-5518. DOI:10.1016/j.asoc.2011.05.008 |
[2] |
MIRJALILI S, MIRJALILI S M, LEWIS A. Grey wolf optimizer[J]. Advances in Engineering Software, 2014, 69: 46-61. DOI:10.1016/j.advengsoft.2013.12.007 |
[3] |
MIRJALILI S, LEWIS A. The whale optimization algo-rithm[J]. Advances in Engineering Software, 2016, 95: 51-67. DOI:10.1016/j.advengsoft.2016.01.008 |
[4] |
MIRJALILI S, GANDOMI A H, MIRJALILI S Z, et al. Salp swarm algorithm: A bio-inspired optimizer for engineering design problems[J]. Advances in Engineering Software, 2017, 114: 163-191. DOI:10.1016/j.advengsoft.2017.07.002 |
[5] |
HEGAZY A E, MAKHLOUF M A, EL-TAWEL G S. Improved salp swarm algorithm for feature selection[J]. Journal of King Saud University-Computer and Information Sciences, 2020, 32(3): 335-344. DOI:10.1016/j.jksuci.2018.06.003 |
[6] |
IBRAHIM A, AHMED A, HUSSEIN S, et al. Fish image segmentation using salp swarm algorithm [C]// HASSANIEN A E, TOLBA M F, ELHOSENY M. The International Conference on Advanced Machine Learning Technologies and Applications (AMLTA 2018). Cham, Switzerland: Springer, 2018: 42-51.
|
[7] |
白钰, 彭珍瑞.基于自适应惯性权重的樽海鞘群算法[J/OL].控制与决策, 2020.[2021-02-09].https://doi.org/10.13195/j.kzyjc.2020.0454.
|
[8] |
陈连兴, 牟永敏.一种改进的樽海鞘群算法[J/OL].计算机应用研究, 2020, 38(6).[2021-02-09].https://doi.org/10.19734/j.issn.1001-3695.2020.09.0242.
|
[9] |
张铸, 张仕杰, 饶盛华等.基于自适应正态云模型的引力樽海鞘群算法[J/OL].控制与决策, 2020.[2021-02-09].https://doi.org/10.13195/j.kzyjc.2020.1292.
|
[10] |
王彦军, 王秋萍, 王晓峰. 改进的樽海鞘群算法及在焊接梁问题中的应用[J]. 西安理工大学学报, 2019, 35(4): 484-493. |
[11] |
康俊涛, 邹立, 曹鸿猷. 基于樽海鞘群算法的桁架结构优化设计[J]. 空间结构, 2020, 26(3): 51-58, 83. DOI:10.13849/j.issn.1006-6578.2020.03.051 |
[12] |
周新, 邹海.融合黄金正弦混合变异的自适应樽海鞘群算法[J/OL].计算机工程与应用, 2020: 1-18.[2021-02-09].https://kns.cnki.net/kcms/detail/11.2127.TP.20200831.1612.018.html.
|
[13] |
范千, 陈振健, 夏樟华. 一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法[J]. 哈尔滨工业大学学报, 2020, 52(10): 183-191. DOI:10.11918/201909176 |
[14] |
陈忠云, 张达敏, 辛梓芸, 等. 混沌精英质心拉伸机制的樽海鞘群算法[J]. 计算机工程与应用, 2020, 56(10): 44-50. DOI:10.3778/j.issn.1002-8331.1905-0048 |
[15] |
张严, 秦亮曦. 基于Levy飞行策略的改进樽海鞘群算法[J]. 计算机科学, 2020, 47(7): 154-160. DOI:10.11896./jsjkx.190600068 |
[16] |
TANYILDIZI E, DEMIR G. Golden sine algorithm: A novel math-inspired algorithm[J]. Advances in Electrical and Computer Engineering, 2017, 17(2): 71-78. DOI:10.4316/AECE.2017.02010 |