1. 引言
优化问题普遍存在于社会科学、工程和经济等各个领域中,群智能(Swarm Intelligent, SI)优化算法作为求解优化问题的有效工具且因其寻优能力强、操作简单等特点近些年来备受学者们的关注[1]-[5]。Kennedy等人[6]通过对鸟群捕食行为的研究提出了一种粒子群优化算法(Partical Swarm Optimization, PSO);针对萤火虫和萤火虫群的行为,Krishnanand等人[7]提出了一种萤火虫优化算法(Glowworm Swarm Optimization, GSO);Yang等人[8]通过研究布谷鸟独特的寄生方式以养育幼鸟的行为提出了布谷鸟搜索算法(Cuckoo Search Via Vévy Flights, CS);2014年,Mirjalili等人[9]通过模拟狼群中头狼引导群体捕食的行为提出了灰狼优化算法(Grey Wolf Optimizer, GWO);2016年,Mirjalili等人[10]通过模拟自然界中座头鲸群体狩猎行为提出了鲸鱼优化算法(Whale Optimization Algorithm, WOA);Khishe等人[11]通过模拟攻击黑猩猩、驱赶黑猩猩、拦截黑猩猩和追逐黑猩猩的协同狩猎行为提出了黑猩猩优化算法(Chimp Optimization Algorithm, ChOA);针对麻雀的觅食行为和反捕食行为,Xue等人[12]在2020年提出了麻雀搜索算法(Sparrow Search Algorithm, SSA)。
为了提升算法的性能,不断有学者提出改进的SI算法。王乐洋等人[13]通过采用分段惯性因子调整粒子速度,修改局部和全局最优解的加速因子从而降低算法后期陷入局部最优的风险(Dynamic Particle Swarm Optimization, DPSO);张文胜等人[14]提出一种自适应递减的收敛因子,并在灰狼位置更新公式引入惯性权重从而协调算法的全局领导和开发能力;吴泽忠等人[15]在初始化种群时采用反向学习策略及随机调整控制参数策略,利用正态变异算子与改进螺旋更新位置对鲸鱼种群进行干扰从而提高全局搜索速度(Improved Whale Optimization Algorithm, ImWOA);兰周新等人[16]针对ChOA算法在寻优过程中求解精度低、收敛速度慢以及易陷入局部极值点的问题,提出了一种新型的柯西扰动黑猩猩优化算法(CP-ChOA);钱敏等人[17]利用反向学习策略和混沌理论提出了一种改进的麻雀搜索算法(Improved Sparrow Search Algorithm, ISSA),该算法在收敛精度、算法稳定性以及收敛速度上存在优势。
蜣螂优化算法(Dung Beetle Optimizer, DBO)是2022年Xue等人[18]提出的一种新的SI优化算法,该算法通过模拟蜣螂的生物活动来进行寻优。由于算法同时考虑了全局搜索和局部搜索,因此与其他现有算法相比,DBO算法在求解精度、收敛速度和鲁棒性上均具有较好的性能。本文在DBO算法的基础上提出了新的改进方案——基于精英反向学习策略的改进蜣螂优化算法(Improved Dung Beetle Optimizer based on Elite Opposition Learning Strategy, EoDBO),在DBO算法搜索前期,利用混沌理论丰富种群多样性加快全局收敛速度,后期引入精英反向学习策略进行干扰以降低局部最优的风险。通过与其余五种SI算法相比,改进的在求解12个基本测试函数上寻优性能更好,且能够有效提高算法的收敛精度及稳定性。
2. 蜣螂优化算法
DBO算法受自然界中蜣螂生物活动的影响,将蜣螂种群的生物活动抽象为五种过程:滚球、跳舞、繁殖、觅食和偷窃。蜣螂会利用天体线索,如阳光、月光和偏振光进行导航,使其所滚的粪球沿着直线滚动。一旦失去光源,蜣螂的路径就不再是直线,而是弯曲的,有时甚至是圆形。除了光源外,许多自然因素也会导致蜣螂偏离原来的方向,如风或者不平坦的地面。当蜣螂在滚球的过程中遇到障碍物无法前进时,则会爬到粪球上面跳舞(包括一系列的旋转和停顿)来决定它们前进的方向。因此,蜣螂的滚球行为可以描述为:
(1)
式中,t表示当前迭代次数,
表示第t次迭代时第i只蜣螂的位置信息,
是一个常量表示偏转系数,
,α是自然系数,取1或者−1,
是全局最差位置,
用来模拟光强的变化。
当蜣螂遇到障碍物无法前进时,则通过跳舞的方式决定新的方向,此时蜣螂滚球的位置按式(2)进行更新:
(2)
式中,
是偏转角。
蜣螂所获得的粪球主要有两个目的,第一个目的是将所获得的粪球用于产卵和养育下一代。为了给下一代提供一个安全的环境,将雌性蜣螂的产卵区域定义如下:
(3)
式中,
表示当前局部最优位置,
和
分别表示产卵区域的下边界和上边界。
表示最大迭代次数,
和
分别表示优化问题的下边界和上边界。
一旦确定了产卵区域,雌性蜣螂就会在该区域进行产卵,假设每个雌性蜣螂在每次迭代过程中只会下一个卵,则卵球在每次迭代过程中,其位置更新如下式所示:
(4)
式中,
是第i个卵球在第t次迭代的位置信息,b1和b2是两个独立的大小为
的随机变量,D是优化问题中的维度。小蜣螂会从地下钻出来进行觅食,定义最佳觅食区域的边界如下:
(5)
式中,
表示全局最优位置,
和
分别表示最佳觅食区域的下边界和上边界。小蜣螂的位置更新如下式所示:
(6)
式中,
表示第i个小蜣螂第t次迭代的位置信息,C1表示服从正太分布的随机数,C2是
范围内的随机向量。还有一定比例的蜣螂会从其他蜣螂哪里偷窃粪球,因此,进行偷窃的蜣螂的位置更新如下所示:
(7)
式中,
表示第i个小偷第t次迭代的位置信息,g是大小为
的服从正太分布的随机变量,S是常量。
3. 改进的蜣螂优化算法
3.1. 基于Sinusoidal Map混沌映射的种群初始化
混沌系统具有随机性、遍历性,因此将混沌理论和SI算法结合是改进优化算法的一种思路,研究表明其能有效逃离局部和提高收敛精度[19]-[22]。种群初始化的质量好坏是影响全局寻优快慢的重要因素,因此本文采用Sinusoidal map混沌映射[23]对种群进行初始化,这样既不改变DBO算法初始化时多具有的随机性本质,又利用混沌原理提高了种群的多样性和搜索的遍历性,在产生大量的蜣螂中欧给那群基础上,从中择优出初始群体。Sinusoidal映射是混沌映射的典型代表,其表达式如下所示:
(8)
式中,
为第k次迭代的位置信息,迭代过程中,
,
。
3.2. 精英反向学习策略
精英反向学习策略是Tizhoosh [24]提出的一种反向解,使其比当前解更接近于全局最优解的一种策略。主要原理是对问题的可行解求其反向解,并对原始解和反向解进行排序,从中选出较优解作为新一代个体进行下一次迭代。该策略可以增加种群多样性以及避免早熟现象。
定义1:反向解[25]:设在区间
上存在一个实数x,将实数x的反向数定义为
。假设在R域上存在N维点
,并且
,则定义
为p的反向点。其中,
,k为区间
分布均匀的随机数,称作一般化系数。
定义2:基于反向解的优化[25]:设待优化问题为最小问题,适应度函数为f,若存在某个可行解x,其反向解为x',若
成立,则用x'替换x。
定义3:精英反向解[25]:设在某维空间中,
为当前群体的精英个体
的反向解,该方向解定义为
,
,
为服从均匀分布的随机数,利用该系数可以生成精英个体的多个反向解。
精英反向学习(Elite Opposition-Based Learning, EOBL)是通过当前问题的可行解构造其反向解以此来增加种群多样性,本文将DBO算法中融入精英反向学习策略,在DBO的每一个迭代过程中,针对精英个体执行反向学习,生成精英个体的反向种群,参与进化竞争。
3.3. 改进的蜣螂优化算法流程
本文提出的基于精英反向学习策略的改进蜣螂优化算法(EoDBO)步骤如下:
1) 对种群进行初始化,并进行相关参数设置,如种群数量,最大迭代次数,当前迭代次数,滚球蜣螂数量、卵球数量、小蜣螂数量和偷窃蜣螂数量。
2) 采用Sinusoidal混沌映射随机生成蜣螂个体位置,计算蜣螂个体适应度值,记录当前全局最优和最劣值,及其对应位置。
3) 根据公式(1)、(2)对滚球蜣螂的位置进行更新,并计算相应的适应度值,记录当前局部最优值和最优位置。
4) 根据公式(3)计算蜣螂产卵区域,并根据公式(4)对卵球位置进行更新。
5) 根据公式(5)计算小蜣螂的觅食区域,并根据公式(6)对小蜣螂的位置进行更新。
6) 根据公式(7)对偷窃蜣螂的位置进行更新。
7) 更新蜣螂种群个体最优位置和全局最优位置。
8) 对蜣螂种群个体实施精英反向学习策略,更新蜣螂位置,得到新的蜣螂个体最优位置和全局最优位置。
9) 判断当前迭代次数是否满足算法最大迭代次数,若满足,则循环结束,输出结果;否则返回步骤(3)。
4. 仿真实验与结果分析
为验证本文所提出的EoDBO算法的可行性和寻优能力,本文基于Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz,16 GB内存,Windows 10操作系统和仿真软件MATLAB R2021a进行仿真实验。
4.1. 测试函数及对比函数
为验证EoDBO算法的寻优能力,本文将它用于求解12个国际上通用的标准测试函数,并与基础DBO算法、SSA算法、GWO算法、WOA算法、ChOA算法进行实验比较。测试函数见表1所示,其中F1~F7是单峰测试基准函数,F8~F12是多峰测试基准函数。单峰函数用来衡量算法的局部寻优开发能力,多峰函数衡量全局搜索与局部开发的平衡性能。
Table 1. Standard test function (dimension n=30)
表1. 标准测试函数(维度n = 30)
测试函数 |
范围 |
最小值 |
|
[−100, 100] |
0 |
|
[−10, 10] |
0 |
|
[−100, 100] |
0 |
|
[−100, 100] |
0 |
|
[−30, 30] |
0 |
|
[−100, 100] |
0 |
|
[−1.28, 1.28] |
0 |
|
[−500, 500] |
−12569.5 |
|
[−5.12, 5.12] |
0 |
|
[−32, 32] |
0 |
|
[−600, 600] |
0 |
|
[−50, 50] |
0 |
4.2. 实验参数设置
Table 2. Comparison of algorithm optimization results
表2. 算法优化结果对比
函数 |
名称 |
EoDBO |
DBO |
SSA |
GWO |
WOA |
ChOA |
F1 |
平均值 |
0 |
1.23E-109 |
8.96E-74 |
1.57E-27 |
3.85E-74 |
1.26E-07 |
标准差 |
0 |
6.75E-109 |
4.91E-73 |
3.50E-27 |
1.91E-73 |
2.48E-06 |
F2 |
平均值 |
3.84E-153 |
3.62E-57 |
1.95E-40 |
1.12E-16 |
5.73E-52 |
3.76E-06 |
标准差 |
2.10E-152 |
1.67E-56 |
1.07E-39 |
1.13E-16 |
1.19E-51 |
5.56E-06 |
F3 |
平均值 |
0 |
1.41E-45 |
1.32E-70 |
5.05E-06 |
47090.4 |
158.232 |
标准差 |
0 |
7.72E-45 |
7.20E-70 |
8.95E-06 |
12966.1 |
479.476 |
F4 |
平均值 |
8.38E-353 |
2.59E-42 |
1.36E-54 |
6.58E-07 |
54.5600 |
0.21946 |
标准差 |
0 |
1.41E-41 |
7.43E-54 |
5.71E-07 |
26.8119 |
0.36133 |
F5 |
平均值 |
25.01515 |
25.73096 |
0.01640 |
27.2492 |
27.8623 |
28.7841 |
标准差 |
3.64473 |
0.19397 |
0.02388 |
0.68983 |
0.45879 |
0.31544 |
F6 |
平均值 |
6.84E-05 |
0.00938 |
0.00013 |
0.86759 |
0.43450 |
3.85132 |
标准差 |
9.24E-05 |
0.04345 |
9.45E-05 |
0.44661 |
0.21278 |
0.44380 |
F7 |
平均值 |
0.00076 |
0.00131 |
0.00055 |
0.00172 |
0.00372 |
0.00210 |
标准差 |
0.00068 |
0.00108 |
0.00036 |
0.00072 |
0.00461 |
0.00227 |
F8 |
平均值 |
−11231.7 |
−9831.68 |
−8009.45 |
−6101.95 |
−10247.2 |
−5708.48 |
标准差 |
1271.27 |
1932.27 |
2316.39 |
690.233 |
1748.23 |
61.2739 |
F9 |
平均值 |
0 |
0.16867 |
0 |
2.19325 |
1.89E-15 |
4.44135 |
标准差 |
0 |
0.92383 |
0 |
3.48915 |
1.04E-14 |
5.57871 |
F10 |
平均值 |
1.01E-15 |
8.88E-16 |
8.88E-16 |
1.03E-13 |
4.56E-15 |
19.9624 |
标准差 |
6.48E-16 |
0 |
0 |
1.72E-14 |
3.43E-15 |
0.00144 |
F11 |
平均值 |
0 |
0 |
0 |
0.00334 |
1.08E-02 |
0.01339 |
标准差 |
0 |
0 |
0 |
0.00636 |
4.14E-02 |
0.02158 |
F12 |
平均值 |
5.99E-05 |
3.86E-03 |
3.31E-05 |
0.04694 |
0.02188 |
0.58261 |
标准差 |
2.65E-04 |
1.89E-02 |
2.80E-05 |
0.02095 |
0.01950 |
0.26338 |
为确保实验的公平性,将全部算法统一设置迭代次数为500,种群数量为30。本文实验中EoDBO算法与其余五种算法各运行30次,分别计算平均值和标准差并把结果保存。算法的优化性能的好坏采用平均值和标准差去衡量。平均值的大小代表了算法的收敛速度的快慢,算法的鲁棒性的优劣则由标准差的大小衡量,实验结果见表2。
4.3. 实验分析
由表2可知,在测试单峰函数F1~F4时,EoDBO算法相较于其余五种算法明显具有更好的收敛精度和更强的鲁棒性。在测试单峰函数F5、F6时,EoDBO的收敛精度和稳定性要弱于SSA算法,且与其余四种算法相比,EoDBO算法优势也并不明显。在测试单峰函数F7,EoDBO和SSA算法在收敛精度和稳定性上基本相当,且优于其余四种算法。根据上述分析可得,EoDBO算法能有效增强DBO算法的寻优能力与局部开发能力,并有效提高了DBO算法的局部收敛精度。
多峰基准测试函数含有多个局部高峰,优化算法求解时极易陷入局部最优,因此多峰基准测试函数常用于测试算法逃离局部最优的能力。在求解多峰函数F8时,ChOA算法和GWO算法在求解精度上明显弱于其余算法,且EoDBO算法、SSA算法的求解精度最高。在求解函数F9、F11时,EoDBO算法、SSA算法和WOA算法均具有良好的求解精度。在求解函数F10时,EoDBO算法、SSA算法和DBO算法具有良好的求解精度。在求解函数F12时,EoDBO算法、SSA算法具有较好的求解精度。通过对比可以发现,在求解多峰函数时,EoDBO算法和SSA算法相较于其他四种算法表现更优,能更好地降低陷入局部最优的风险从而提高整体搜索速度。
为了更直观显示实验对比分析结果,本文给出EoDBO算法与其余五种算法在相同实验条件下得到的函数仿真曲线,见图1~4。
由图1~3(a)可以看到,在求解单峰函数F1~F4时,EoDBO算法的求解速度明显优于其余五种算法。在求解函数F5时,EoDBO算法和SSA算法的求解速度相当,但是SSA算法的精度要优于EoDBO算法。在求解F6、F7时,EoDBO算法和SSA算法在求解速度和精度上基本相当,且优于其他四种算法。由图3(b)、图3(c)和图4可以看到,在求解多峰函数F8时,EoDBO算法和SSA算法在求解速度和求解精度上基本相当,且优于其余四种算法。在求解函数F9~F11,EoDBO算法在求解速度上相较于其余五种算法具有明显优势。在求解函数F12时,EoDBO算法、SSA算法在求解速度和求解精度上基本相当,且优于其余四种算法。
(a) 函数F1收敛曲线 (b) 函数F2收敛曲线 (c) 函数F3收敛曲线
Figure 1. Convergence curves of benchmark functions F1~F3
图1. 基准函数F1~F3收敛曲线
(a) 函数F4收敛曲线 (b) 函数F5收敛曲线 (c) 函数F6收敛曲线
Figure 2. Convergence curves of benchmark functions F4~F6
图2. 基准函数F4~F6收敛曲线
(a) 函数F7收敛曲线 (b) 函数F8收敛曲线 (c) 函数F9收敛曲线
Figure 3. Convergence curves of benchmark functions F7~F9
图3. 基准函数F7~F9收敛曲线
(a) 函数F10收敛曲线 (b) 函数F11收敛曲线 (c) 函数F12收敛曲线
Figure 4. Convergence curves of benchmark functions F10~F12
图4. 基准函数F10~F12收敛曲线
综上所述,改进后的蜣螂算法在搜索中能有效改善全局寻优精度,提高了算法稳定性,并使算法具有较强的逃离局部最优的能力。
5. 结束语
蜣螂优化算法是模拟蜣螂自然行为的一种仿生智能算法,本文针对在蜣螂优化算法的基础上提出了一种改进的蜣螂优化算法。改进的蜣螂优化算法前期使用Sinusoidal map混沌思想以增加初始种群的多样性,从而增加全局搜索速度;在后期引入精英反向学习策略以增强其逃离局部最优的能力。通过求解12个基本测试函数并与其余五种智能算法进行比较,改进的蜣螂优化算法能有效提高算法的收敛精度,且提高整个搜索过程的搜索速度与稳定性。