基于聚类和探测精英引导的蜻蜓算法
Dragonfly algorithm based on clustering and detection elite guidance
收稿日期: 2021-06-12
基金资助: |
|
Received: 2021-06-12
Fund supported: | 2020年度黑龙江省省属高等学校基本科研业务费面上资助项目(135509112) |
作者简介 About authors
杜晓昕(1983—),女,教授,从事仿生计算研究.orcid.org/0000-0002-9519-4850.E-mail:
针对蜻蜓算法(DA)收敛速度慢、收敛精度低、全局搜索能力差等不足,提出新的蜻蜓优化算法. 利用tent混沌初始化种群并对种群进行K-Means++聚类,根据聚类的结果分别对种群个体进行反向学习和高斯变异以增强种群的多样性,提高搜索效率. 引入非线性自适应因子加快收敛速度,使用探测精英引导策略增强算法跳出局部收敛的能力. 引入平方散列探测增加收敛精度. 将该优化算法应用于8个典型复杂函数优化问题,并与原蜻蜓算法,以及其他仿生计算算法对比,实验结果表明该改进算法具有良好的全局收敛性和寻优精度.
关键词:
Aiming at the shortcomings of the dragonfly algorithm (DA), i.e., slow convergence speed, low convergence accuracy, and poor global search ability, a new DA algorithm was proposed. Firstly, tent chaos was used to initialize the population and K-Means++ clustering was performed on the population. According to the results of clustering, reverse learning and Gaussian mutation were performed on the individuals of the population respectively to enhance the diversity of the population and improve the search efficiency. Secondly, the nonlinear adaptive factor was introduced to accelerate the convergence speed, and the probing elite guiding strategy was used to enhance the ability of jumping out of local convergence. Finally, square hash detection was introduced to increase the convergence accuracy. The optimization algorithm was applied to eight typical complex function optimization problems, and compared with the original dragonfly algorithm and other bionic algorithms. Experimental results show that the improved algorithm has good global convergence and optimization accuracy.
Keywords:
本文引用格式
杜晓昕, 王浩, 崔连和, 罗金琦, 刘岩, 张剑飞, 王一萍.
DU Xiao-xin, WANG Hao, CUI Lian-he, LUO Jin-qi, LIU Yan, ZHANG Jian-fei, WANG Yi-ping.
仿生计算算法是近年来兴起的一种智能技术,通过模拟动物群体的行为,为解决高维、非线性、多极值的复杂全局优化问题提供了有效的解决方案. 近些年来涌现了许多新兴的仿生计算算法,如蚁群算法[1]、布谷鸟算法[2]、蝙蝠算法[3]、磷虾算法[4]、蚁狮优化算法[5]等. 蜻蜓算法(dragonfly algorithm, DA)是Seyedali[6]提出的一种新型仿生计算算法. 其思想源于对蜻蜓群体生活的模拟,具有参数少、实现简单的优点,在彩色图像分割[7]、特征提取[8]、工程设计[9]等方面取得了较好的效果. 同大多数仿生计算算法一样,蜻蜓算法存在收敛速度慢、收敛精度低的不足. 为了改进蜻蜓算法收敛精度低的不足,赵齐辉等[10]提出基于差分进化的蜻蜓算法,在迭代后期通过对个体进行差分进化来增强种群的多样性,进而提高算法的收敛精度. 为了改进蜻蜓算法收敛速度的不足,林涛等[11]提出基于精英策略与正弦余弦机制的蜻蜓算法,该算法通过精英机制来增强重权的初始化,使用正余弦机制加强蜻蜓之间的信息交流,在保证全局搜索的同时,加快蜻蜓算法的收敛速度. 为了解决蜻蜓算法容易陷入局部最优以及收敛精度低的不足,张水平等[12]提出基于随机替换和混合变异的蜻蜓算法,该算法通过随机替换,来提高初始解的质量,通过混合变异来跳出局部最优,最终提高算法精度. 为了解决蜻蜓算法收敛速度慢,易陷入局部最优的不足,Zhong等[13]提出风驱蜻蜓算法,将收敛速度快、全局搜索能力强的风力驱动优化算法与蜻蜓算法结合,以提高蜻蜓算法的收敛速度和收敛精度. 以上算法均在一定程度上提升了蜻蜓算法的收敛速度和收敛精度,但与其他仿生计算算法相比仍然存在收敛精度低、容易陷入局部收敛的不足.
本研究提出基于聚类和探测精英引导的蜻蜓算法(dragonfly algorithm based on clustering and detection elite guidance,CEDA). 通过tent混沌映射[14]生成初始种群,成功地解决了随机生成种群覆盖区域小的问题,使用K-means++[15]聚类算法对种群质量进行分类,对不同质量的种类执行不同的学习策略,在增强种群多样性的同时,提升了种群初始解的质量;引入非线性因子来拟合蜻蜓觅食的飞行步长,加快蜻蜓向食物源聚集的速度;使用探测精英引导策略给予种群一个更好的移动方向,克服了蜻蜓算法易陷入局部最优陷阱的缺点;平方散列探测充分利用了每一维度信息,进一步提高算法的收敛精度.
1. 蜻蜓算法
蜻蜓算法受到理想状态下蜻蜓的狩猎和迁徙的启发. 蜻蜓的狩猎行为是指一小群蜻蜓在小范围内寻找食物源,对应于仿生计算算法的开发阶段. 蜻蜓的迁徙行为是指大量的蜻蜓在一个方向上长时间大跨度的飞行,对应于仿生计算算法的探索阶段. 蜻蜓的行为遵循分离、对齐、聚集、觅食和避敌的原则,因此蜻蜓群体中的个体位置更新主要依靠这5个因素.
分离(避免碰撞)表达式如下:
式中:
对齐(列队飞行)表达式如下:
式中:
聚集行为表达式如下:
觅食行为表达式如下:
式中:
躲避天敌的表达式如下:
式中:
蜻蜓算法认为蜻蜓的行为是这5种因素的结合,为了模拟蜻蜓的运动,蜻蜓个体步长更新公式如下:
式中:
为了提高蜻蜓算法的全局搜索能力和收敛精度,蜻蜓的位置更新有2种方式.
当该个体周围存在邻近个体时,采用如下方式进行位置更新:
否则,采用如下方式:
式中:d为位置向量的维数.
式中:
根据上述分析,蜻蜓算法的伪代码如下.
算法1 蜻蜓算法伪代码
输入:目标函数
输出:
//阶段1:初始化
1.初始化蜻蜓种群
2.初始化步长
3.while
//阶段2:更新参数
4.计算全部蜻蜓适应度;
5.更新食物源
6.更新参数
7.根据式(1)~(5)计算
8.更新相邻半径
//
//阶段3:更新蜻蜓个体位置
9. if (neighboring dragonfly
10.
11.
12.else
13.
14. end if
15.对
16. end while
17.return
2. 基于聚类和探测精英引导的蜻蜓算法
针对基本蜻蜓算法存在的收敛速度慢、收敛精度低、易陷入局部最优解等现象,提出基于聚类和探测精英引导的蜻蜓优化算法,该算法从4个不同方面对基本蜻蜓算法进行改进. 1)通过tent混沌映射,使种群初始化分布均匀,之后对种群进行聚类,对不同的类别分别进行反向学习和变异处理,丰富种群的多样性. 2)改进非线性自适应因子,加快收敛速度,提高收敛精度. 3)采用探测精英引导的机制,帮助个体跳出局部最优. 4)引入平方散列探测来充分利用每一维度信息,提高收敛精度. 通过这4种改进方式从整体上提高算法的寻优性能.
2.1. 基于聚类的种群初始化
因此,本研究使用Tent混沌映射生成初始种群
由于K-means聚类方法须人工选取初始质心,而质心的好坏又会影响到聚类的效果,本研究使用可以按照概率
算法2 K-means++伪代码
输入:蜻蜓种群
输出:
//阶段1:计算k个聚类质心
1.
2. for l=1 to k do
3.
4.
4.
5. end for
//阶段2:使用K-means进行聚类
6. while (达到最大迭代次数)do
7. for
8. for
//计算
9.
10. end for
11. 将样本
12. end for
13. for
14.
15. end for
16. end while
17. return
自然界存在优胜劣汰的制度,因此每一代的动物群体中都存在优秀群体、精英群体、劣质群体,本研究使用K-means++聚类算法将种群分为3类. 计算每一类群体的平均适应度,将适应度最低的一类作为精英群体,适应度最高的一类作为劣质群体,其余的为普通群体. 由于精英群体和劣质群体包含更多有效的生物信息,对精英群体和劣质群体使用反向学习机制[21]. 普通群体含有的有用信息较少,为了增加种群的多样性获取更多的有用信息,对这一群体进行高斯变异处理[22],生成群体
2.2. 引入非线性自适应因子
在初始DA中参数
式中:T为最大迭代次数,t为当前迭代次数.
图 1
2.3. 探测精英引导机制
在原始的蜻蜓算法中,蜻蜓种群的每一次迭代都没有使用上一代的信息. 本研究在精英引导机制[24]的基础上引入探测精英引导机制,加强每一代种群的信息交流,引领蜻蜓个体快速找到食物,加快收敛速度,提高收敛精度,帮助个体跳出局部最优. 探测精英引导机制分为2个阶段,第1阶段为探测精英阶段,探测精英
算法3 探测精英算法伪代码
输入:上代最佳个体
输出:精英引导下的步长
//阶段1:探测精英位置
1. 半径
2.
3. for
4.
5.
6. if
7.
8. end if
9. end for
10. if
11.
12. end if
//阶段2:计算精英引导的步长
13.
14. return
第2阶段为引导机制,即在探测得到精英后,由探测精英来引导其他个体的步长更新方向. 每个蜻蜓个体的步长更新过程的表达式如下:
式中:
探测精英引导机制的示意图如图2所示. 图中,
图 2
2.4. 平方散列探测替换策略
式中:
图 3
2.5. CEDA算法的实现
对标准的DA算法进行上述改进后,得到的CEDA算法伪代码如下. 其流程图如图4所示.
图 4
图 4 基于聚类和探测精英引导的蜻蜓算法流程图
Fig.4 Flow chart of dragonfly algorithm based on clustering and detection elite guidance
算法4 CEDA算法伪代码
输入:目标函数
输出:
//阶段1:初始化
1. 基于聚类的初始化蜻蜓种群
2. 初始化步长
3. while
//阶段2:更新参数
4. 计算全部蜻蜓适应度;
5. 更新食物源
6. 更新参数
7. 根据式(1)~(5)计算
8. 更新相邻半径
//阶段3:更新蜻蜓个体位置
9. if (neighboring dragonfly
//引入改进的
10.
//引入探测精英引导的步长
11.
12. if
13. 使用平方散列探测替换策略对
14. end if
15. else
16.
17. end if
18. 越界检测;
19. end while
20. return
3. 实验结果与分析
本仿真实验在intel(R)Core(TM)i5-8400CPU@2.80 GHz 16 GB内存Matlab2019a条件下实现. 为了检测算法的有效性,从文献[6]中挑选了8个典型的复杂函数进行仿真实验,8个典型的复杂函数如表1所示,其中f1~f3为单峰函数可以测试算法的局部搜索能力,f4~f8为多峰值函数可以测试算法跳出局部收敛,寻找全局最优的能力. 对CEDA、DA、灰狼优化算法[27] (grey wolf algorithm, GWO)、果蝇优化算法[28](fruit fly optimization algorithm, FOA)、差分进化算法[29](differential evolution,DE)、人工蜂群算法[30](artificial bee colony,ABC)、粒子群算法[31]、(particle swarm optimization,PSO)进行对比. 为了确保对比实验的准确性,算法参数统一设置如下:最大迭代次数Max_iter=500,种群规模N=40. 为了避免实验的偶然性,每一种算法都进行了2 000次独立实验,并计算其最优值、平均值、标准差,结果如表2所示. 最优值
表 1 8个典型的复杂函数
Tab.1
函数名 | 表达式 | 维度 | 搜索区域 |
Sphere | | 10 | [−100, 100] |
Roscnbrock | | 10 | [−30, 30] |
Step | | 10 | [−100, 100] |
Rastrigin | | 10 | [−5.12, 5.12] |
Ackley | | 10 | [−32, 32] |
Griewank | | 10 | [−600, 600] |
Penalized1 | | 10 | [−50, 50] |
Penalized2 | | 10 | [−50, 50] |
表 2 单峰函数2 000次独立运行结果
Tab.2
函数 | 算法 | Xbest | Xmean | |
f1 | CEDA | 2.36×10−93 | 5.43×10−90 | 1.05×10−89 |
DA | 1.54×10−3 | 5.15×100 | 9.82×100 | |
GWO | 5.78×10−69 | 3.36×10−63 | 2.11×10−62 | |
FOA | 1.38×10−4 | 2.39×10−4 | 5.73×10−5 | |
DE | 2.40×10−20 | 4.52×10−19 | 4.93×10−19 | |
ABC | 4.61×10−10 | 4.61×10−10 | 1.25×10−07 | |
PSO | 1.28×10−5 | 4.82×10−4 | 1.10×10−3 | |
f2 | CEDA | 1.39×10−6 | 2.37×10−2 | 1.21×10−1 |
DA | 5.86×100 | 7.36×102 | 1.25×103 | |
GWO | 5.12×100 | 6.58×100 | 6.32×10−1 | |
FOA | 8.07×100 | 8.75×100 | 1.86×10−1 | |
DE | 6.74×100 | 7.81×100 | 3.61×100 | |
ABC | 4.70×100 | 7.25×100 | 1.47×100 | |
PSO | 1.80×10−2 | 6.83×101 | 1.15×102 | |
f3 | CEDA | 0 | 0 | 0 |
DA | 1.49×10−5 | 5.66×100 | 1.06×101 | |
GWO | 1.21×10−6 | 5.00×10−3 | 3.53×10−2 | |
FOA | 2.53×100 | 2.54×100 | 5.30×10−3 | |
DE | 2.32×10−20 | 4.19×10−19 | 4.75×10−19 | |
ABC | 3.46×10−10 | 4.13×10−8 | 9.69×10−8 | |
PSO | 3.87×10−5 | 5.50×10−4 | 5.58×10−4 |
表 3 多峰函数2 000次独立运行结果
Tab.3
函数 | 算法 | Xbest | Xmean | |
f4 | CEDA | 0 | 0 | 0 |
DA | 5.26×100 | 2.54×101 | 1.26×101 | |
GWO | 0 | 8.65×101 | 1.75×100 | |
FOA | 1.03×101 | 1.66×101 | 3.64×100 | |
DE | 1.40×10−10 | 4.13×10−6 | 1.46×10−6 | |
ABC | 1.20×101 | 2.62×101 | 4.46×100 | |
PSO | 5.07×100 | 2.35×101 | 1.23×101 | |
f5 | CEDA | 8.88×10−16 | 2.55×10−15 | 1.98×10−15 |
DA | 8.79×10−16 | 2.34×100 | 1.27×100 | |
GWO | 4.44×10−15 | 6.60×10−15 | 1.74×10−15 | |
FOA | 5.78×10−2 | 7.62×10−2 | 1.40×10−2 | |
DE | 9.33×10−11 | 2.66×10−10 | 1.16×10−10 | |
ABC | 6.51×10−5 | 8.02×10−5 | 6.47×10−4 | |
PSO | 1.27×10−2 | 1.05×100 | 8.33×10−1 | |
f6 | CEDA | 0 | 0 | 0 |
DA | 0 | 4.34×10−1 | 2.86×10−1 | |
GWO | 0 | 1.99×10−2 | 2.05×10−2 | |
FOA | 4.35×10−7 | 9.32×10−7 | 2.47×10−7 | |
DE | 1.74×10−11 | 3.60×10−3 | 8.10×10−3 | |
ABC | 2.02×10−1 | 3.72×10−1 | 7.03×10−2 | |
PSO | 1.49×10−2 | 1.24×10−1 | 6.18×10−2 | |
f7 | CEDA | 4.71×10−32 | 4.71×10−32 | 4.95×10−47 |
DA | 9.10×10−4 | 1.24×100 | 1.22×100 | |
GWO | 2.73×10−7 | 2.50×10−3 | 7.20×10−3 | |
FOA | 2.69×100 | 2.70×100 | 7.98×10−3 | |
DE | 8.36×10−22 | 3.06×10−20 | 4.18×10−20 | |
ABC | 2.49×10−9 | 8.45×10−7 | 2.03×10−6 | |
PSO | 5.62×10−5 | 6.94×10−2 | 2.09×10−1 | |
f8 | CEDA | 1.34×10−32 | 1.34×10−32 | 1.34×10−48 |
DA | 2.30×10−3 | 6.38×10−1 | 9.37×10−1 | |
GWO | 1.46×10−6 | 7.70×10−3 | 2.64×10−2 | |
FOA | 8.11×10−1 | 8.93×10−1 | 2.66×10−2 | |
DE | 7.95×10−21 | 1.11×10−19 | 1.33×10−19 | |
ABC | 4.10×10−8 | 6.83×10−6 | 1.08×10−5 | |
PSO | 1.33×10−4 | 7.70×10−3 | 9.10×10−3 |
为了更加直观地对比7种算法之间的优劣性,进一步证明CEDA在收敛性上的提升,对比7种算法在8个测试函数上的收敛曲线,如图5所示. 图中,t表示算法的迭代次数;F为适应度,代表算法每次迭代得到的最佳值. 可以看出,对于单峰函数f1,DA算法和FOA算法均陷入局部最优即收敛曲线平缓不能够继续探索函数的理论最优值,GWO算法没有陷入局部最优,但是与CEDA算法相比,GWO后期收敛缓慢无法获得更优的收敛精度,DE算法虽未陷入局部最优但是收敛速度缓慢远低于CEDA算法. CEDA算法改进了线性收敛因子,加快了收敛的速度,引入了平方散列探测替换,充分利用了每一维度所包含的信息提高了收敛的精度. 对于多峰函数f4~f8,DA、FOA、ABC算法在收敛时均陷入了局部最优无法跳出,而CEDA曲线有多次大幅波动的情况,说明在精英探测引导策略下的CEDA算法,能更好地跳出布局收敛. 由函数f2、f6~f8可知,由于CEDA算法在初始化种群时使用了K-means++算法,并根据不同类别进行了反向学习和高斯变异方法获得了高质量的初始化种群,相比DA算法,在迭代初始时就有更好的起点.
图 5
图 5 CEDA算法与其他经典算法的收敛效果对比图
Fig.5 Comparison of convergence effect of CEDA algorithm and other classical algorithms
4. 结 语
原始的蜻蜓算法所有个体都使用相同的搜索模式,导致种群多样性差和过早收敛. 本研究使用无监督学习的聚类分析,将蜻蜓个体划分为不同的类别,根据所划分类别的质量,分别执行不同的学习策略丰富种群的多样性. 同时提出探测精英引导策略,使用2代的最佳个体来预测下一代最佳个体可能出现的位置,并以此位置来引导其余蜻蜓个体,使得群体快速迁移至最佳位置,加快算法的收敛速度. 最后提出了平方散列探测替换策略,对蜻蜓个体每一维度的变化进行贪心选择,充分利用蜻蜓个体每一维度所包含的信息,以此来提升算法的收敛精度.
本研究提出的基于聚类和探测精英引导的蜻蜓优化算法(CEDA),在8个典型的复杂函数中进行测试,结果表明与DA、FOA、GWO、DE、ABC、PSO算法相比,本研究提出的CEDA算法具有强大的全局搜索能力、良好的收敛精度以及更高的稳定性. 在未来的研究中,应考虑能更好地提高收敛速度和收敛精度的算法,并将其运用到工程设计优化问题,如焊接梁、压力容器、三杆桁架等设计问题.
参考文献
A modified ant colony optimization algorithm (MACO) for energy efficient wireless sensor networks
[J].DOI:10.1016/j.ijleo.2015.11.117 [本文引用: 1]
Enhancing the performance of cuckoo search algorithm using orthogonal learning method
[J].DOI:10.1007/s00521-013-1354-6 [本文引用: 1]
A comprehensive review of krill herd algorithm: variants, hybrids and applications
[J].DOI:10.1007/s10462-017-9559-1 [本文引用: 1]
The ant lion optimizer
[J].
Dragonfly algorithm: a new meta-heuristic optimization technique for solving single-objective, discrete, and multi-objective problems
[J].DOI:10.1007/s00521-015-1920-1 [本文引用: 2]
Modified dragonfly algorithm based multilevel thresholding method for color images segmentation
[J].DOI:10.3934/mbe.2019324 [本文引用: 1]
A hybrid improved dragonfly algorithm for feature selection
[J].DOI:10.1109/ACCESS.2020.3012838 [本文引用: 1]
A hybrid memory-based dragonfly algorithm with differential evolution for engineering application
[J].
差分进化的蜻蜓算法
[J].
Dragonfly algorithm based on differential evolution
[J].
基于精英策略与正弦余弦机制的蜻蜓算法研究
[J].
Study on dragonfly algorithm based on elite strategy and cosines mechanism
[J].
基于随机替换和混合变异的蜻蜓算法
[J].DOI:10.3969/j.issn.1671-1815.2020.22.038 [本文引用: 1]
Dragonfly algorithm based on random substitution and hybrid mutation
[J].DOI:10.3969/j.issn.1671-1815.2020.22.038 [本文引用: 1]
Wind driven dragonfly algorithm for global optimization
[J].
An improved hybrid grey wolf optimization algorithm
[J].DOI:10.1007/s00500-018-3310-y [本文引用: 1]
Cuckoo, bat and krill herd based K-means++ clustering algorithms
[J].
Practical genetic algorithms
[J].
收敛因子非线性变化的鲸鱼优化算法
[J].DOI:10.3969/j.issn.1673-5196.2017.06.020 [本文引用: 1]
Whale optimization algorithm with nonlinearly variable convergence factor
[J].DOI:10.3969/j.issn.1673-5196.2017.06.020 [本文引用: 1]
Logistic map: a possible random-number generator
[J].DOI:10.1103/PhysRevE.51.3670 [本文引用: 1]
一种基于Tent映射的混合灰狼优化的改进算法
[J].
An improved hybrid grey wolf optimization algorithm based on tent mapping
[J].
A genetic clustering algorithm for data with non-spherical-shape clusters
[J].DOI:10.1016/S0031-3203(99)00105-3 [本文引用: 1]
Elite opposition-based flower pollination algorithm
[J].
Chaotic whale optimization algorithm
[J].DOI:10.1016/j.jcde.2017.12.006 [本文引用: 1]
改进的鲸鱼优化算法及其应用
[J].DOI:10.3778/j.issn.1002-8331.1901-0296 [本文引用: 1]
Improved whale optimization algorithm and its application
[J].DOI:10.3778/j.issn.1002-8331.1901-0296 [本文引用: 1]
Differential evolution with adaptive guiding mechanism based on heuristic rules
[J].DOI:10.1109/ACCESS.2019.2914963 [本文引用: 1]
Particle swarm optimisation algorithm with iterative improvement strategy for multi-dimensional function optimisation problems
[J].
Crisscross optimization algorithm and its application
[J].DOI:10.1016/j.knosys.2014.05.004 [本文引用: 1]
Grey wolf optimizer
[J].DOI:10.1016/j.advengsoft.2013.12.007 [本文引用: 1]
A new fruit fly optimization algorithm: taking the financial distress model as an example
[J].DOI:10.1016/j.knosys.2011.07.001 [本文引用: 1]
Differential evolution algorithm with ensemble of parameters and mutation strategies
[J].DOI:10.1016/j.asoc.2010.04.024 [本文引用: 1]
On the performance of artificial bee colony (abc) algorithm
[J].DOI:10.1016/j.asoc.2007.05.007 [本文引用: 1]
Two-layer particle swarm optimization for unconstrained optimization problems
[J].DOI:10.1016/j.asoc.2009.11.020 [本文引用: 1]
/
〈 |
|
〉 |
