群智能优化算法是一种新兴的演化技术, 该类算法基于模拟自然界生物的寻路行为从而总结出一定规律, 针对相应的生物寻路规律进行归纳总结建立数学模型. 目前群智能优化算法已经被许多学者研究关注, 如模拟了北美郊狼的社会组织结构的郊狼优化算法(coyote optimization algorithm, COA)[1]、基于自然界鲸鱼群体行为的鲸鱼优化算法(whale optimization algorithm, WOA)[2,3]、模拟了自然界中灰狼的种群等级和捕食机制的灰狼优化算法(grey wolf optimizer, GWO)[4,5]、基于自然界授粉飞虫或蜜蜂采蜜行为的花授粉算法(flower pollination algorithm, FPA)[6,7]、模拟乌鸦外出觅食的乌鸦搜索算法(crow search algorithm, CSA)[8–10]、基于布谷鸟的寄生性育雏行为的布谷鸟搜索算法(cuckoo search, CS)[11,12]和模拟麻雀种群躲避天敌并进行觅食的麻雀搜索算法(sparrow search algorithm, SSA)[13]等. 麻雀搜索算法在2020年被Xue等人[13]提出, 目前已经被广泛应用于许多领域. 例如张月栋等人[14]将SSA算法应用于旅行商问题, 张姝等人[15]将SSA算法用于路径规划问题的求解等. 旅行商是经典的优化问题之一, 即在所有的城市只有一位业务员, 每个城市只能到访一次且要走遍所有城市的情况下, 该业务员该如何规划城市到访的顺序. SSA算法的优点是易于实现, 并且可以在较短时间内找到较优解.
SSA算法因易于实现、速度快等特点吸引了不少研究学者, 但SSA算法仍存在难以找到最优解、搜索依赖精英种群、因自身特性易陷入局部最优等问题, 目前已有许多学者针对此类问题提出了解决方案, 如将SSA算法与其他算法缝合[16]、加入扰动机制[17]等, 本文在这些方法的基础上进行改进并应用于旅行商问题检验算法的性能.
本文针对以上问题提出改进型的麻雀搜索算法(improved sparrow search algorithm, ISSA), ISSA针对跟随者提出了正态偏移策略增强其勘探能力, 引入动态正弦扰动策略实现发现者对搜索步长和收敛速度的双向需求、加入反向学习机制帮助算法跳出局部最优. 为验证算法的有效性, 随机选取了6个标准测试函数进行测试.
1 麻雀搜索算法(SSA)在SSA算法中, 麻雀种群分3个子群, 分别为发现者、跟随者和随机产生一定数量的警戒者. 其中带领种群移动的被称为发现者, 发现者的位置更新公式如下:
xt+1i,j={xti,j⋅exp(−iα⋅iter) ,R2<STxti,j+Q⋅L ,R2⩾ | (1) |
式(1)中,
跟随者监视发现者移动并争抢位置, 当跟随者争抢位置失败时, 跟随者会飞行至其他位置, 其更新公式如下:
x_{i, j}^{t + 1} = \left\{ {\begin{array}{*{20}{l}} {Q \cdot \exp \left(\dfrac{{{x_{{\rm{worst}}}} - x_{i, j}^t}}{{{i^2}}}\right){\text{ }},\quad\;\; i > \dfrac{n}{2}} \\ {x_p^{t + 1} + \left| {x_{i, j}^t - x_p^{t + 1}} \right| \cdot {A^ + } \cdot L{\text{ }},\;{\rm{other}}} \end{array}} \right. | (2) |
式(2)中,
警戒者负责侦查预警, 提前告知危险, 所占比例为麻雀种群的10%或20%, 其位置更新公式如下:
x_{i, j}^{t + 1} = \left\{ {\begin{array}{*{20}{c}} {x_{{\rm{best}}}^t + \beta \cdot \left| {x_{i, j}^t - x_{{\rm{best}}}^t} \right|{\text{ }},\;\;\;\;\;{f_i} > {f_g}} \\ {x_{i, j}^t + k \cdot \left( {\dfrac{{\left| {x_{i, j}^t - x_{{\rm{worst}}}^t} \right|}}{{{f_i} - {f_w} + \varepsilon }}} \right){\text{ }},\;{f_i} = {f_g}} \end{array}} \right. | (3) |
式(3)中
SSA算法对比其他优化算法虽然有不小优势, 但仍存在一些问题如最优解的搜索依赖于发现者、容易陷入局部最优等. SSA算法中跟随者和警戒者占群体的多数但寻优能力较弱, 因此SSA算法存在较大的改进空间.
2 改进型麻雀搜索算法(ISSA) 2.1 正态偏移策略SSA算法搜索精度高度依赖于发现者的探索, 其余群体因初始位置较差在移动时难以得到较理想的效果. 本文借鉴重心偏移[18]提出正态偏移策略优化种群, 非领导个体可以通过向重心位置偏移, 从而使群体在逐次迭代中逐渐偏向当前最优解. 使用公式如下:
x{_{i, j}^{t{\prime}} } = x_{i, j}^t + \alpha \cdot \delta \cdot f\left( x \right) | (4) |
\alpha = \frac{{\displaystyle\sum {_{i = 1}^n{x_{ij}}} }}{n} - {x_i},\;{\text{ }}j = 1, 2, \cdots, D | (5) |
f\left( x \right) = \frac{1}{{\sigma \sqrt {2{\text π} } }}{{\rm{e}}^{ - \frac{{{{\left( {x - \mu } \right)}^2}}}{{2{\sigma ^2}}}}},\;{\text{ }}x \in \left( {0, iter} \right) | (6) |
其中,
影响SSA算法性能的原因之一是发现者群体在面对全局搜索和局部搜索问题时难以双向平衡. 麻雀种群中发现者引领着种群, 发现者的勘探能力强弱将对算法的优化结果起到决定性的作用, 如果发现者移动范围较小将影响全局探索能力, 同时如果发现者的步长过大将容易错过全局最优解. 因此本文引入动态正弦扰动策略[19]改进发现者的位置更新公式, 发现者可以遍历正弦函数上所有的点即整个单位圆, 将对空间的搜索问题转化为对圆的搜索. 同时在搜索过程中引入黄金分割系数, 实现发现者的搜索步长更加灵活, 使前期全局搜索和后期局部搜索的需求得到平衡, 使用公式如下:
\begin{split} x_{i, j}^{t + 1} =& x_{i, j}^t \cdot \left| {\sin \left( {{r_1}} \right)} \right| + {r_2} \cdot \sin \left( {{r_1}} \right) \cdot \left| {\omega \cdot {x_1} \cdot {x_{{\rm{best}}}} - {x_2} \cdot x_{i, j}^t} \right| \end{split} | (7) |
{x_1} = \left( { - {\text π} } \right) + 2{\text π} \left(\frac{{3 - \sqrt 5 }}{2}\right) | (8) |
{x_2} = \left( { - {\text π} } \right) + {\text π} \left( {\sqrt 5 - 1} \right) | (9) |
\omega = \frac{{\sin \left( {\dfrac{{i \cdot {\text π} }}{M}} \right)}}{2} | (10) |
其中,
SSA算法中预警者因自身往往处于较差位置, 在躲避天敌时往往难以得到理想效果, 因此本算法针对此问题加入反向学习机制[20], 预警者躲避天敌时将进行反向移动, 改进后预警者易于跳出局部最优解, 增强了搜索全局最优的能力. 其中判断条件以式(3)中
x{_{i, j}^{t{\prime \prime }}} = ub + lb - {r_3} \cdot x_{i, j}^t,\; {f_i} > {f_g} | (11) |
其中,
ISSA算法的具体实现流程如下.
1)初始化麻雀种群及相关参数.
2)计算各个麻雀的适应度值, 选出麻雀种群中的发现者, 其余为跟随者, 警戒者每次迭代中随机产生.
3)发现者根据式(7)移动, 跟随者根据式(2)跟随发现者移动.
4)预警者判断是否需要反向学习, 是则依据改进式(11)移动, 否则根据式(3)在附近移动.
5)麻雀种群依据式(4)进行正态偏移.
6)在当次迭代完成之后, 更新麻雀个体的适应度值和其他参数.
6)判断是否达到最大迭代次数, 是则跳出循环, 否则继续迭代返回步骤 3).
7)结束.
ISSA算法对比其他算法的不同在于ISSA提出正态偏移策略, 该策略有效调用了所有个体的位置进行偏移, 实现最优解的搜索. 移动能量按标准正态分布衰减有效保证前期算法的搜寻动力和后期快速收敛的需求. 并且ISSA算法引入了动态正弦扰动策略和反向学习机制, 有效提升了算法搜索最优解和跳出局部最优的能力.
3 实验仿真 3.1 测试函数ISSA算法所采用的测试函数均从标准的23个benchmark测试函数中随机选取, 具体见表1.
![]() |
表 1 测试函数 |
表1中
本文选取WOA算法[2]、GWO算法[4]和SSA算法. 为公平起见, 所有算法种群数目设为30, 最大迭代次数设为500, 维度设为30, 其中麻雀种群中发现者在比例为20%, 警戒者为10%. 仿真实验在Matlab 2021B仿真平台下运行, 每种算独立运行50次, 其中为了减少随机性对实验的影响, 实验结果分别记录了平均值和方差, 如表2所示.
3.3 数据分析通过实验可见在f1–f5单峰函数和
![]() |
表 2 函数测试结果 |
实验证明ISSA算法的寻找全局最优值较强, 方差也趋于均值证明ISSA算法优化的稳定性. 由此可见ISSA算法的收敛精度优于其他算法.
其次为直观显示ISSA算法的优越性, 本文绘制了测试函数的函数收敛曲线图, 将ISSA算法与SSA算法、WOA算法、GWO算法作对比实验, 结果如图1所示, 明显可以看出ISSA算法相对于其他算法收敛效果显著.
f1–f5均为单峰多维函数, 多用于评价算法的收敛能力. 其中
综上所述, ISSA算法相较于其他算法, 在单峰和多峰测试函数上表现出更好的收敛精度, 在收敛速度上比其他算法收敛更快, 具有明显的优势.
![]() |
图 1 测试函数收敛曲线图 |
3.4 旅行商问题
建立城市数为51的模型, 并应用SSA算法和ISSA算法进行实验, 迭代次数为1000次, 麻雀数量为500, 实验次数为10次.
实验结果如图2所示, 可以发现ISSA算法虽然在初期寻得的总路程的质量不如SSA算法, 但是在收敛中期时, SSA算法已经结束了收敛, 但ISSA算法仍能有效寻得更优的路径. 实验有效证明了ISSA算法对比于SSA算法能有效提升性能, 对于实际应用问题有较强的解决能力.
![]() |
图 2 测试收敛图 |
4 结论与展望
SSA算法存在求解精度依赖于发现者, 容易陷入局部最优等缺点, 本文针对以上问题提出了ISSA算法, 通过正态偏移策略增强算法局部探索的能力; 引入动态正弦扰动改进发现者的位置更新公式, 提升发现者对种群的引领作用; 使用反向学习机制, 帮助算法跳出局部最优. 通过实验证明了ISSA算法能有效弥补SSA算法的不足, 具有更好的寻优性能. 接下来的研究工作是探索算法在求解无人机路径规划等工程问题中的应用, 以及建构多目标ISSA优化算法.
[1] |
刘威, 付杰, 周定宁, 等. 基于改进郊狼优化算法的浅层神经进化方法研究. 计算机学报, 2021, 44(6): 1200-1213. DOI:10.11897/SP.J.1016.2021.01200 |
[2] |
Mirjalili S, Lewis A. The whale optimization algorithm. Advances in Engineering Software, 2016, 95: 51-67. DOI:10.1016/j.advengsoft.2016.01.008 |
[3] |
李宝帅, 叶春明. 混合鲸鱼优化算法求解柔性作业车间调度问题. 计算机系统应用, 2022, 31(4): 244-252. DOI:10.15888/j.cnki.csa.008405 |
[4] |
Mirjalili S, Mirjalili S M, Lewis A. Grey wolf optimizer. Advances in Engineering Software, 2014, 69: 46-61. DOI:10.1016/j.advengsoft.2013.12.007 |
[5] |
蔡娟. 混沌映射与精英高斯扰动的非线性灰狼优化算法. 计算机工程与设计, 2022, 43(1): 186-195. DOI:10.16208/j.issn1000-7024.2022.01.025 |
[6] |
肖辉辉, 万常选. 基于多策略的改进花授粉算法. 软件学报, 2021, 32(10): 3151-3175. DOI:10.13328/j.cnki.jos.006030 |
[7] |
Adithiyaa T, Chandramohan D, Sathish T. Flower pollination algorithm for the optimization of stair casting parameter for the preparation of AMC. Materials Today: Proceedings, 2020, 21: 882-886. DOI:10.1016/j.matpr.2019.07.711 |
[8] |
廉杰, 姚鑫, 李占山. 用于特征选择的乌鸦搜索算法的研究与改进. 软件学报, 2022, 33(11): 3903-3916. DOI:10.13328/j.cnki.jos.006327 |
[9] |
葛知著, 张达敏, 张琳娜, 等. 混合策略改进的乌鸦搜索算法. 计算机应用研究, 2021, 38(11): 3334-3339. DOI:10.19734/j.issn.1001-3695.2021.03.0107 |
[10] |
汪逸晖, 高亮. 乌鸦搜索算法的改进及其在工程约束优化问题中的应用. 计算机集成制造系统, 2021, 27(7): 1871-1883. |
[11] |
傅文渊. 具有万有引力加速机理的布谷鸟搜索算法. 软件学报, 2021, 32(5): 1480-1494. DOI:10.13328/j.cnki.jos.006056 |
[12] |
陈曦, 曹杰, 盛勇, 等. 基于布谷鸟搜索算法的天然气储气库综合能源系统容量优化配置研究. 重庆理工大学学报(自然科学), 2021, 35(6): 209-219. |
[13] |
Xue JK, Shen B. A novel swarm intelligence optimization approach: Sparrow search algorithm. Systems Science & Control Engineering, 2020, 8(1): 22-34. |
[14] |
张月栋, 莫愿斌. 改进的麻雀搜索算法及其求解旅行商问题. 计算机系统应用, 2022, 31(2): 200-206. DOI:10.15888/j.cnki.csa.008308 |
[15] |
张姝, 汤淼. 改进PSO算法及在无人机路径规划中的应用. 计算机系统应用, 2023, 32(3): 330-337. DOI:10.15888/j.cnki.csa.009025 |
[16] |
欧阳城添, 朱东林, 邱亚娴. 融合聚类算法的改进麻雀搜索算法. 计算机仿真, 2022, 39(12): 392-397. DOI:10.3969/j.issn.1006-9348.2022.12.072 |
[17] |
张琳, 汪廷华, 周慧颖. 一种多策略改进的麻雀搜索算法. 计算机工程与应用, 2022, 58(11): 133-140. DOI:10.3778/j.issn.1002-8331.2112-0427 |
[18] |
Rahnamayan S, Jesuthasan J, Bourennani F, et al. Computing opposition by involving entire population. Proceedings of the 2014 IEEE Congress on Evolutionary Computation. Beijing: IEEE, 2014. 1800–1807.
|
[19] |
高晨峰, 陈家清, 石默涵. 融合黄金正弦和曲线自适应的多策略麻雀搜索算法. 计算机应用研究, 2022, 39(2): 491-499. DOI:10.19734/j.issn.1001-3695.2021.06.0217 |
[20] |
毛清华, 张强. 融合柯西变异和反向学习的改进麻雀算法. 计算机科学与探索, 2021, 15(6): 1155-1164. DOI:10.3778/j.issn.1673-9418.2010032 |