针对标准蜻蜓算法中存在的收敛速度慢,易于局部解的缺点,提出一种改进的蜻蜓算法(IDA)。该算法提出两种非线性函数,分别动态调节列队权重和聚集权重的收敛因子,提高算法平衡全局搜索和局部开发的能力;灰狼机制有较强的局部开发能力和收敛速度,融合灰狼机制以提高蜻蜓算法的收敛精度和速度;算法迭代后期种群多样性下降,引入末位淘汰策略来提高种群的多样性,使算法跳出局部解。通过6个复杂的测试函数对改进算法进行仿真,并和其他三个算法进行对比。结果表明,IDA算法的收敛精度、收敛速度和稳定性都优于其他三个算法。 An improved dragonfly algorithm (IDA) was proposed to overcome the disadvantages of the standard dragonfly algorithm, such as slow convergence rate and easy to be trapped in local solutions. In order to improve the ability of balancing exploration and exploitation, IDA algorithm proposes two kinds of nonlinear function that can dynamically adjust the convergence factors of the alignment weight and cohesion weight. Grey Wolf mechanism has good performance in exploitation and rate of convergence. In order to improve the convergence accuracy and speed of the dragonfly algorithm, the grey Wolf mechanism was incorporated into the dragonfly algorithm. In the late iteration of the algorithm, the diversity of the population decreases, which makes the algorithm easy to fall into the local solution. The lowliest place elimination series is introduced to improve the diversity of the population and make the algorithm jump out of the local solution. The improved algorithm is simulated with six complex functions and compared with the other three algorithms. The results show that the convergence accuracy, convergence speed and stability of IDA algorithm are better than the other three algorithms.
胡小平,周非无*
湖南科技大学先进矿山装备教育部工程研究中心,湖南 湘潭
收稿日期:2019年7月4日;录用日期:2019年7月18日;发布日期:2019年7月25日
针对标准蜻蜓算法中存在的收敛速度慢,易于局部解的缺点,提出一种改进的蜻蜓算法(IDA)。该算法提出两种非线性函数,分别动态调节列队权重和聚集权重的收敛因子,提高算法平衡全局搜索和局部开发的能力;灰狼机制有较强的局部开发能力和收敛速度,融合灰狼机制以提高蜻蜓算法的收敛精度和速度;算法迭代后期种群多样性下降,引入末位淘汰策略来提高种群的多样性,使算法跳出局部解。通过6个复杂的测试函数对改进算法进行仿真,并和其他三个算法进行对比。结果表明,IDA算法的收敛精度、收敛速度和稳定性都优于其他三个算法。
关键词 :蜻蜓算法,非线性函数,灰狼机制,末位淘汰
Copyright © 2019 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
蜻蜓算法(Dragonfly Algorithm)是由Seyedali Mirjalili在2015年提出的一种新兴群智能算法 [
虽然该算法有一定的优势,但存在易陷入局部解和收敛速度慢的缺点,针对这些缺点,Sree R. K. S.等 [
为改善蜻蜓算法容易陷入局部解,收敛速度慢的缺点,本文提两种非线性函数分别动态调节列队和聚集权重的收敛因子,以提高算法的稳定性。将灰狼机制和末位淘汰策略融入到算法当中,改善易于局部解和收敛速度慢的缺点。提出一种有着较强的全局搜索能力和局部开发能力,且能较好的调节全局搜索和局部开发的改进蜻蜓算法(IDA)。
Reynoldz [
1) 分离,由公式得:
S i = − ∑ j = 1 N X − X j (1)
X为蜻蜓当前所在位置,Xj表示与X蜻蜓相邻的第j个蜻蜓的位置,N表示与X蜻蜓相邻的个体总数。
2) 列队,由公式得:
A i = ∑ j = 1 N V j N (2)
Vj指第j个相邻个体的速度
3) 聚集,由公式得:
C i = ∑ j = 1 N X j N − X (3)
X是当前个体位置。
4) 捕食,指蜻蜓向猎物靠拢,由公式得:
F i = X + − X (4)
X+指食物的位置。
5) 逃离,指蜻蜓逃离天敌,由公式得:
E i = X − + X (5)
X−指天敌的位置,食物源位置是算法当前最优位置,天敌位置是当前最差的位置。通过以上五种纠正方式的组合形成了蜻蜓的行为,作者通过模仿PSO算法提出步长向量、位置向量来描述蜻蜓的位置。
6) 步长向量更新由公式得:
Δ X t + 1 = ( s S i + a A i + c C i + f F i + e E i ) + ω Δ X t (6)
Si,Ai,Ci,Fi,Ei指上文的5中纠正方式, ω 为惯性权重,而s,a,c,f,e分别指的是分离权重,列队权重,聚集权重,捕食权重,天敌权重,t表示当前迭代次数。
7) 位置向量更新由公式得:
当N > 0时 X t + 1 = X t + Δ X t + 1 (7)
当N = 0时,利用随机游走(Levy flight)在搜索空间中飞行。
X t + 1 = X t + L e ′ v y ( d ) × X t (8)
灰狼优化算法(GWO) [
灰狼种群个数为M,则第i只灰狼在d维度的位置记为 X i = ( X i 1 , X i 2 , X i 3 , ⋯ , X i d ) 。
在狩猎时,灰狼的位置更新公式如下:
X i ( t + 1 ) = X p ( t ) − A ⋅ | C ⋅ X p ( t ) − X i ( t ) | (9)
A = 2 a ⋅ r 1 − a (10)
C = 2 r 2 (11)
a = 2 − t / t max (12)
式中,t为当前迭代次数,A和C为协同系数向量,Xp为猎物的位置,X为灰狼个体的位置。a为A系数的收敛因子, r 1 , r 2 表示[0, 1]间的随机数,tmax为最大迭代次数
由于猎物的具体位置未知,可根据灰狼算法中的等级制度,以 α 、 β 、 δ 进行引导使狼群接近猎物,灰狼群体可依据 α 、 β 、 δ 进行位置更新,公式如下:
X 1 = X α − A ⋅ | C ⋅ X α − X | (13)
X 2 = X β − A ⋅ | C ⋅ X β − X | (14)
X 3 = X δ − A ⋅ | C ⋅ X δ − X | (15)
X ( t + 1 ) = X 1 + X 2 + X 3 3 (16)
根据(16)对灰狼个体进行更新。
在前文提到作者把蜻蜓群体运动分为两种状态:静态和动态。静态类似于全局搜索,动态类似于局部探索。为了保证DA算法的收敛性,蜻蜓算法通过调节惯性权重和其他五种权重,使得算法从全局搜索过渡到局部开发。并且,在静态群体中蜻蜓以捕食小型飞行猎物,有较高的聚集权重和较低的列队权重。而在动态群体中,有较低的聚集权重和较高的列队权重 [
a = c = 2 ⋅ r 3 ⋅ m y _ q (17)
m y _ q = 0.1 − ( f max − f min ) ⋅ t T max / 2 (18)
my_q为列队权重和聚集权重的收敛因子,呈线性变化,当my_q < 0时,my_q = 0, r 3 为为[0, 1]之间的随机数。为了提高算法平衡全局搜索和局部开发的能力,当处于静态群体时赋予高列队权重和较低的聚集权重;在动态群体时应赋予低列队权重和较高的聚集权重。因此提出两种非线性函数动态控制列队和聚集权重的收敛因子,数学表达式如下:
m y _ q a = ( f max − f min ) ⋅ b ⋅ ( cos ( t ⋅ π T max ) − q ⋅ ( t T max ) 2 + 1 ) (19)
m y _ q c = 2 π ⋅ ( f max − f min ) ⋅ ( arccos ( 2 ⋅ t T max − 1 ) − π 2 ) (20)
Tmax为最大迭代次数,常数b,q为非线性调节系数,t为当前迭代,fmax,fmin分别为a,c取值的上限和下限。当my_qa < 0,my_qc < 0时,则my_qa = 0,my_qc = 0。
用my_qa调节列队权重的收敛因子和用my_qc调节聚集权重的收敛因子。通过两种不同的非线性函数分别调节列队权重和聚集权重的收敛因子,使得算法平衡全局搜索和局部开发的能力得到提高。
灰狼算法中的灰狼机制具有结构简单、需要调节的参数少、容易实现的特点,使灰狼机制在局部开发和收敛速度有着良好的性能 [
X t + 1 = X 1 + X 2 + X 3 3 + Δ X t + 1 (21)
在改进的位置向量更新公式中,包含了个体当前的位置和群体历史最优位置,也包括了蜻蜓算法的步长向量,使得改进后的算法不但融合灰狼机制较强的局部开发能力又能保留了标准DA算法较强的全局搜索能力,并且提高算法的收敛速度。
在自然界中适者生存不适者淘汰,鲍义东 [
随着迭代的进行,蜻蜓之间的差异性较小,容易使算法陷入局部解。为了提高算法的多样性,避免陷入局部解,本文引入末位淘汰策略。末位淘汰策略是以蜻蜓个体的适应度值为衡量标准,以适应度值按升序排列,淘汰排在末位的k个蜻蜓个体,同时随机产生k个新的蜻蜓个体,以保持蜻蜓群体数量的稳定。淘汰蜻蜓的个数影响种群的多样性,k值较大时,种群的多样性较大,有利于全局搜索,但不利于算法收敛。k值较小,有利于局部开发。通过对k值大小的控制来保证算法的收敛性。k的值变化如下公式。
k = k max − ( k max − k min ) * ( t T max ) (22)
k值为整数,kmax为淘汰的最大值,kmin为淘汰的最小值。
IMDA具体步骤如下:
步骤1:初始化参数,包括种群大小N、维度d、最大迭代次数Max,五种行为权重和惯性权重,邻域半径;
步骤2:随机初始化位置向量X和步长向量 Δ X ;
步骤3:t > 1,更新s, a, c, f, e权重和惯性权重,其中列队权重的收敛因子和聚集权重收敛因子分别由4.1章提出的公式(19) (20)进行更新;
步骤4:计算个体适应度值,更新食物和天敌的位置;
步骤5:利用公式(1)~(5)更新S, A, C, F, E;
步骤6:若存在至少一个相邻个体,则通过(6)公式更新步长向量,用4.2章提出的融合灰狼机制策略更新位置向量,即公式(21)。若不存在相邻个体,则以公式(8)更新位置向量;
步骤7:计算种群个体的适应度值,适应度值以升序排列;
步骤8:用4.3章提出的末位淘汰策略对种群进行淘汰和随机生成。淘汰排在后k位的蜻蜓个体,同时随机生成k个蜻蜓个体;
步骤9:t = t + 1,如果t < Max,返回步骤3。
为了进一步验证IDA的优化效果,选取两组具有不同特征的基准测试函数,从不同角度对IDA算法的性能进行基准测试,测试函数分为两组:单模态函数(f1~f4)、多模态函数(f5~f6)。将IDA与标准蜻蜓算法进行对比测试。基准测试函数的具体情况如下表1。
函数 | 维数 | 取值范围 | 理论值 |
---|---|---|---|
TF 1 ( x ) = ∑ i = 1 n x i 2 | 10 | [−100,100] | 0 |
TF 2 ( x ) = ∑ i = 1 n | x i | + ∏ i = 1 n | x i | | 10 | [−10,10] | 0 |
TF 3 ( x ) = ∑ i = 1 n ( ∑ j − 1 i x j ) 2 | 10 | [−100,100] | 0 |
TF 4 ( x ) = max i { | x i | , 1 ≤ i ≤ n } | 10 | [−100,100] | 0 |
TF5 ( x ) = − 20 exp ( − 0.2 1 n ∑ i = 1 n x i 2 ) − exp ( 1 n ∑ i = 1 n cos ( 2 π x i ) ) + 20 + e | 10 | [−32,32] | 0 |
TF6 ( x ) = 0.1 { sin 2 ( 3 π x 1 ) + ∑ i = 1 n ( x i − 1 ) 2 [ 1 + sin 2 ( 3 π x 1 + 1 ) ] + ( x n − 1 ) 2 [ 1 + sin 2 ( 2 π x n ) ] + ∑ i = 1 n u ( x i , 10 , 100 , 4 ) } | 10 | [−50,50] | 0 |
表1. 基准函数测试
为保证实验的公平性,统一实验环境,实验环境为Windows 7操作系统。所用MATLAB为2016a版本。为了更加合理比较算法的性能,此处选用标准DA算法外还选取了一个改进的蜻蜓算法,差分进化的蜻蜓算法(DEDA) [
函数 | 算法 | 最优解 | 平均解 | 标准差 |
---|---|---|---|---|
TF1 | GA | 0.149 | 1.092 | 0.918 |
DA | 1.790e−08 | 0.012 | 0.032 | |
DEDA | 6.212e−24 | 8.236e−10 | 1.901e−09 | |
GDA | 4.023e−44 | 9.213e−39 | 3.805e−38 | |
IDA | 3.429e−122 | 2.923e−110 | 1.526e−109 | |
TF2 | GA | 0.987 | 3.343 | 4.728 |
DA | 0.022 | 1.818 | 1.497 | |
DEDA | 1.051e−08 | 4.232e−4 | 1.335e−3 | |
GDA | 9.701e−23 | 2.758e−21 | 5.106e−21 | |
IDA | 5.764e−64 | 7.902e−61 | 1.659e−60 | |
TF3 | GA | 1.180e+03 | 2.806e+03 | 1.280e+03 |
DA | 0.796 | 2.137e+02 | 4.291e+02 | |
DEDA | 1.080e−12 | 4.962e−07 | 1.401e−06 | |
GDA | 7.067e−37 | 4.962e−32 | 1.057e−31 | |
IDA | 1.240e−62 | 7.228e−54 | 2.729e−53 | |
TF4 | GA | 2.317 | 9.613 | 5.918 |
DA | 0.327 | 1.895 | 1.012 | |
DEDA | 1.037e−05 | 0.025 | 0.055 | |
GDA | 1.380e−17 | 1.374e−15 | 2.342e−15 | |
IDA | 2.463e−25 | 6.908e−19 | 3.072e−18 | |
TF5 | GA | 1.065 | 7.351 | 6.981 |
DA | 0.127 | 2.197 | 0.950 | |
DEDA | 1.546e−10 | 0.057 | 0.258 | |
GDA | 4.441e−13 | 9.948e−10 | 3.548e−9 | |
IDA | 4.440e−15 | 7.105e−15 | 1.509e−14 | |
TF6 | GA | 2.349 | 11.584 | 9.797 |
DA | 0.012 | 1.167 | 1.408 | |
DEDA | 1.091e−6 | 0.370 | 1.362 | |
GDA | 1.680e−06 | 4.954e−03 | 2.213e−02 | |
IDA | 2.351e−08 | 4.071e−07 | 1.879e−07 |
表2. 各算法的测试数据
1) 最优解和平均解反应算法的收敛精度,由表2的测试数据可得,GDA算法在求解 TF1~TF4单峰基准测试函数时,寻优能力优于标准蜻蜓算法、GA算法和DEDA算法,对于复杂的多峰的基准测试函数优化效果虽不及单峰基准测试函数,但寻优能力依旧优于标准蜻蜓算法、GA算法和DEDA算法,说明引入灰狼机制有利于提高算法的收敛精度。IDA算法是在GDA算法基础上引入末位淘汰策略,由表2的测试数据可知,无论是单峰基准测试函数还是多峰基准测试函数,IDA的寻优能力优于GDA,说明末位淘汰策略的引入有利于提高算法的多样性,使得算法跳出出局部解。这说明算法经过三方面的改进,使得算法收敛精度和解的整体质量有很大提高,而DA、GA和DEDA都存在过早收敛。
图1. 不同测试函数下的平均收敛曲线图。(a) TF1测试函数的平均收敛曲线图;(b) TF2测试函数的平均收敛曲线图;(c) TF3测试函数的平均收敛曲线图;(d) TF4测试函数的平均收敛曲线图;(e) TF5测试函数的平均收敛曲线图;(f) TF6测试函数的平均收敛曲线图
2) 标准差反应算法的稳定性,对于基准测试函数TF1~TF4来说,IDA比标准函数优化精度分别高出110,61,54,19个数量级。对于多峰函数TF5和TF6的优化效果也分别提高了15和7个数量级,优于其他三个算法,说明改进后的算法在整体上稳定性强,抗“早熟”能力优于其他三个算法。
3) 从图1(a)~(f)可以看出无论是多峰基准测试函数还是单峰基准测试函数,IDA算法的收敛速度比其他三个算法都要快,这说明融合灰狼算法有利于提高算法的收敛速度。
总体来说,无论是对于多峰函数还是单峰函数,相同条件下IDA所得解的质量皆优于其他三个算法。很大程度上改善了标准算法中收敛精度不高、收敛速度慢和易“早熟”的缺点。
针对标准DA算法中的易于陷入局部解、收敛精度低和收敛速度较慢的缺点,本文提出三点改进:基于非线性函数调节列队和聚集权重的收敛因子,提高算法对全局搜索和局部开发的调节能力;融合灰狼机制改进的位置向量,提高算法的收敛精度的同时又能提高算法的收敛速度;末位淘汰策略,淘汰适应度值排在末位的k个蜻蜓个体,同时引入k个新的个体,以此提高了算法的多样性。通过6个基准测试函数仿真结果可知,IDA算法在整体上,函数优化问题的结果优于DA标准算法和其他两个算法。下一步研究目标是应用到机器人路径规划上。
国家自然科学基金No. 61572185。
胡小平,周非无. 基于蜻蜓算法的改进研究 Study on Improvement of Dragonfly Algorithm[J]. 计算机科学与应用, 2019, 09(07): 1377-1386. https://doi.org/10.12677/CSA.2019.97155