智能优化算法:蜻蜓优化算法-附代码

智能优化算法:蜻蜓优化算法-附代码


摘要:蜻蜓优化算法( Dragonfly algorithm,DA)是Seyedali Mirjalili等于2016年提出的一种新型智能优化算法[1]。其主要灵感源于自然界中蜻蜓的静态和动态群集行为,具有寻优能力强等特点。

1.算法原理

蜓算法是一种新型智能群优化算法,其原理是模拟大自然中蜻蜓寻找猎物的行为。该算法源于自然中蜻蜓动态和静态的智能群行为,对蜻蜓的飞行线路、躲避天敌及寻找食物等生活习性进行数学建模。在动态群中,为获得更好的生存环境,大量的蜻蜓集群朝着共同的方向进行远距离迁徙;在静态群中,为寻找其他飞行猎物,由小部分蜻蜓组成的各个小组,在较小的范围内来回飞行。蜻蜓飞行过程中的局部运动与飞行路径的临时突变是静态群的主要特征。在自然界中,蜻蜓的生活习性可以归纳为5类行为方式:分离、排队、结盟、寻找猎物和躲避天敌。

1.1分离

分离是每个蜻蜓个体与同类分开的行为。分离行为的数学表达式为:
Si=j=1N(XXj)(1) S_{i}=-\sum_{j=1}^{N}(X-X{j})\tag{1}
式中NN^{'}为邻近个体的个数;SiS_{i}为第ii个蜻蜓同类之间分离行为的位置向量;XX为个体所在位置;XjX_{j}相邻个体蜻蜓jj所处的位置。

2.2 排队

排队是指每个蜻蜓个体在飞行时与相邻个体之间的速度匹配。排队行为的数学表达式为:
Ai=j=1NVjN(2) A_{i}=\frac{\sum_{j=1}^{N'}{V_{j}}}{N^{'}}\tag{2}
式中AiA_{i}为第ii个蜻蜓个体排队行为的位置向量;VjV_{j}为相邻个体的飞行速度。

2.3 结盟

结盟指蜻蜓与相邻同类之间彼此聚在一起的集群行为。结盟行为的数学表达式为:
Ci=j=1NXjNX(3) C_{i}=\frac{\sum_{j=1}^{N'}{X_{j}}}{N^{'}}-X \tag{3}
式中CiC_{i}为第ii个蜻蜓个体结盟行为的位置向量。

2.4 寻找猎物

寻找猎物指个体为生存搜寻猎物的行为。寻找猎物行为的数学表达式为:
Fi=X+X(4) F_{i}=X^{+}-X\tag{4}
式中FiF_{i}ii个蜻蜓个体猎食行为的位置向量;X+X^{+}待捕食的猎物所处的位置。

2.5 躲避天敌

个体出于生存的本能,需时刻警惕天敌的行为。躲避天敌行为的数学表达式为:
Ei=XX(5) E_{i}=X^{-}-X\tag{5}
式中EiE_{i}为第i个蜻蜓个体逃避天敌行为的位置向量;XX^{-}为蜻蜓猎食所处的位置。步向量表示为蜻蜓的飞行方向以及步长,其数学式如下:
ΔXt+1=(sSi+aAi+cCi+fFi+eEi)+ωΔXt(6) \Delta X_{t+1}=(sS_{i}+aA_{i}+cC_{i}+fF_{i}+eE_{i})+\omega^{'}\Delta X_{t}\tag{6}
式中:aa为对齐权重;cc为凝聚权重;ee为天敌权重因子;ff为猎物权重因子;ss为分离权重;tt为当前迭代次数;ω\omega ^{'}为惯性权重。

在自然界中,出于生存需要,大部分时间蜻蜓都是运动的,因此所处位置也需实时更新。更新蜻蜓个体所处位置的向量,数学表达式如下:
Xt+1=Xt+ΔXt+1(7) X_{t+1}=X_{t}+\Delta X_{t+1}\tag{7}
要达到使算法性能进一步得到强化的目的,在同类个体附近无临近解时,通过使用Lévy飞行的方法绕搜索空间飞行,进行蜻蜓位置的更新:
Xt+1=Xi+Leˊvy(d)ΔXi(8) X_{t+1} = X_{i} +Lévy(d)\Delta X_{i} \tag{8}
其中dd表示维度。Lévy函数计算如下:
Leˊvy(x)=0.01r1δr21β(9) Lévy(x)=0.01*\frac{r_{1}*\delta}{|r_{2}|^{\frac{1}{\beta}}}\tag{9}

δ=(Γ(1+β)sin(πβ2)Γ(1+β2)β2(β12))1β,Γ(x)=(x1)!(10) \delta = ( \frac {\Gamma(1+\beta)*sin(\frac{\pi\beta}{2})}{\Gamma(\frac{1+\beta}{2})*\beta*2(\frac{\beta-1}{2})})^{\frac {1}{\beta}},\Gamma(x) = (x-1)!\tag{10}

式子中:r1,r2r_{1},r_{2}为[0,1]范围内的随机数;β\beta为常数。

为调节DA算法的搜索性能,参数值(分离权重ss、对齐权重aa、凝聚权重cc、猎物权重因子ff、天敌权重因子ee)将在寻优过程中自适应调整。

2.算法流程

蜻蜓算法优化相关参数步骤如下:
a.初始化蜻蜓算法参数,包括最大迭代次数、种群数量。
b.初始化蜻蜓在搜索空间中的位置向量XX和在搜索空间中的方向向量ΔXΔX。各只蜻蜓优化参数的组合设为C,g(C,g),其中矩阵的第1、2行分别存放CgC、g的值。
c.更新各权重值。根据上述步骤的数据,对相关权重值进行初始化。变量包括邻域半径rr、惯性权重ωω′、猎物权重因子ff、对齐权重aa、凝聚权重cc、分离权重ss、天敌权重因子ee
d.适应度值的计算,蜻蜓的最大适应度值随着蜻蜓不断地进行操作而实时更新,如果蜻蜓当前的适应度值大于已保存的适应度值,则更新原适应度值,否则原适应度值不变。因此保存的适应度值为最优值,并且保存当
前最优值对应的参数组合(C,g)(C,g)
e.搜寻邻域中有无蜻蜓个体存在,以欧氏距离作为邻域中有无蜻蜓存在的根据。若存在,用式(6)、(7)更新位置与步长;若不存在,用式(8)更新位置。
f.用式(1)~(5)计算蜻蜓的行为度,包括f,a,c,s,ef,a,c,s,e
g.更新XXΔXΔX
h.终止条件的判断。如果满足终止条件,则直接跳出,同时输出最优参数组合(C,g)(C,g);如果不满足则迭代次数加1,跳转执行步骤c。

3.算法结果

智能优化算法:蜻蜓优化算法-附代码

4.参考文献

[1]Mirjalili S. Dragonfly algorithm: a new meta-heuristic optimization technique for solving single-objective, discrete, and multi-objective problems[J]. Neural Computing and Applications, 2016, 27(4): 1053-1073.

[2]傅军栋,陈俐,康水华,冯奕轩.基于蜻蜓算法和支持向量机的变压器故障诊断[J].华东交通大学学报,2016,33(04):103-112.

5.MATALAB代码

https://mianbaoduo.com/o/bread/Z5iblJw=