基于莱维飞行和随机游动策略的灰狼算法-附代码

基于莱维飞行和随机游动策略的灰狼算法


摘要: 在标准灰狼优化算法寻优的中后期,由于衰减因子减小,灰狼群体中的个体均向领导层灰狼所在区域靠近,导致算法的全局寻优能力差,降低了寻优精度。针对该问题,提出了一种改进灰狼优化算法(IGWO )。该算法首先分析了衰减因子对灰狼算法的影响,提出了一种分段可调节衰减因子,用于平衡算法的勘探能力与开发能力。其可以根据不同优化问题来寻找适当的参数,实现更高精度的寻优,并且保证了在寻优过程的中后期,算法也具有一定的全局搜索能力。数值仿真实验表明,提高勘探比例有利于提高算法的收敛精度。同时,在寻优过程中,根据概率选择对领导层灰狼分别进行莱维飞行操作或随机游动操作。利用莱维飞行短距离搜索与偶尔较长距离行走相间的搜索特点,提高算法的全局寻优能力;利用随机游动相对集中的搜索特性,提高局部寻优能力。

1.灰狼优化算法

基础灰狼算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107716390

2. 改进灰狼优化算法

2.1 分段可调节衰减因子

在GWO中,系数向量 A决定了灰狼的行为,当 |A|>1时,灰狼进行搜索猎物(全局寻优);当 |A|<1 时,灰狼进行捕捉猎物(局部寻优)。在优化前期,灰狼个体应该广泛分布于整个搜索空间;在优化后期,利用收集到的信息,灰狼个体收敛于全局最优值。衰减因子 a 影响系数向量 A,进而影响了GWO的勘探能力和开发能力之间的平衡。当 a>1 时(勘探阶段),灰狼会进行搜索运动和捕猎运动,并且根据式(3)可计算得出:灰狼以1-1/a 的概率进行搜索运动,以1/a 的概率进行捕猎运动。当 a<1 时(开发阶段),灰狼只进行捕猎运动。在标准GWO中,勘探阶段与开发阶段的迭代次数比例为50% :50%。但是针对不同的优化问题,固定的迭代次数比例很难适应搜索实际情况。因此,本文提出了一种分段可调节衰减因子:
a = { 2 − 1 φ t m a x , t m a x < φ 1 1 − φ ( 1 − t m a x ) , t max ⁡ > φ (8) a=\left\{\begin{array}{ll} 2-\frac{1}{\varphi} \frac{t}{m a x}, & \frac{t}{m a x}<\varphi \\ \frac{1}{1-\varphi}\left(1-\frac{t}{m a x}\right), & \frac{t}{\max }>\varphi \end{array}\right. \tag{8} a={ 2φ1maxt,1φ1(1maxt),maxt<φmaxt>φ(8)
其中,φ 为勘探阶段所占的迭代比例。当 φ =0.5时,本文改进的衰减因子与标准 GWO算法衰减因子一致。

系数向量C表示灰狼所在位置对猎物影响的随机权重,影响了灰狼群体靠近猎物的难易程度,从而影响算法的全局勘探能力。本文借鉴文献提出的修改控制参数 C策略来平衡全局勘探能力和局部开发能力,其具体表达式如下:
C → = 2 r → 3 − a → (9) \overrightarrow{\boldsymbol{C}}=2 \overrightarrow{\boldsymbol{r}}_{3}-\overrightarrow{\boldsymbol{a}} \tag{9} C =2r 3a (9)
其中, r 3 → \overrightarrow{r_3} r3 是[0.5,1.5]之间的随机向量。

2.2 莱维飞行和随机游动策略

为了提高寻优精度,本文利用莱维飞行和随机游动策略对灰狼算法的寻优过程进行优化。使用莱维飞行策略进行全局探测,使灰狼个体广泛分布于搜索空间中,以提高全局寻优能力;使用随机游动策略,使灰狼在相对集中的区域内寻优,以提高局部寻优的能力。莱维飞行 是服从莱维分布的随机搜索方法,是一种短距离的搜索与偶尔较长距离的行走相间的行走方式,从而促使莱维飞行具有良好的全局搜索能力。

莱维飞行的位置更新公式为:
x i ′ ( t ) = x i ( t ) + l ⊕ Levy ⁡ ( λ ) (10) x_{i}^{\prime}(t)=x_{i}(t)+l \oplus \operatorname{Levy}(\lambda) \tag{10} xi(t)=xi(t)+lLevy(λ)(10)
其中, x i ( t ) x_i(t) xi(t)表示第 t t t代的第 i i i个解;⊕表示点对点乘法; l l l表示控制步长的权重, l = 0.01 ( x i ( t ) − x b ) l=0.01(x_i(t)-x_b) l=0.01(xi(t)xb) x b x_b xb 为当前的最优解; L e v y ( λ ) Levy(\lambda) Levy(λ)表示服从莱维分布的路径.

随机游动利用混合变异和交叉的方式产生新解,可以增强种群的多样性,一定程度上可以避免区域极值的吸引,进而提高算法的局部搜索能力,将其应用在智能优化算法中能够加快找到最优解的速度。随机游动的位置更新公式为:
x i ′ ( t ) = x i ( t ) + ε ( x j ( t ) − x k ( t ) ) (11) x_{i}^{\prime}(t)=x_{i}(t)+\varepsilon\left(x_{j}(t)-x_{k}(t)\right) \tag{11} xi(t)=xi(t)+ε(xj(t)xk(t))(11)
其中, x j ( t ) x_j(t) xj(t) x k ( t ) x_k(t) xk(t)为第 t t t代中的两个随机解; ε ε ε 是缩放因子, ε ~ U ( 0 , 1 ) ε~U(0,1) εU(0,1)

虽然莱维飞行和随机游动可以实现位置的更新,但是无法保证得到的新解的适应度优于原解,因此使用贪心机制来比较原解和新解的适应度,以保留适应度更好的解。
x i ( t ) = { x i ( t ) ,  fit  ( x i ′ ( t ) ) < f i t ( x i ( t ) ) x i ′ ( t ) ,  fit  ( x i ′ ( t ) ) > f i t ( x i ( t ) ) (12) x_{i}(t)=\left\{\begin{array}{ll} x_{i}(t), & \text { fit }\left(x_{i}^{\prime}(t)\right)<f i t\left(x_{i}(t)\right) \\ x_{i}^{\prime}(t), & \text { fit }\left(x_{i}^{\prime}(t)\right)>f i t\left(x_{i}(t)\right) \end{array}\right.\tag{12} xi(t)={ xi(t),xi(t), fit (xi(t))<fit(xi(t)) fit (xi(t))>fit(xi(t))(12)
对灰狼位置进行莱维飞行或随机游动虽然可优化算法的寻优过程,但是如果对每个迭代周期的每只灰狼都进行位置调整,将增加大量的时间消耗。因此,本文只对处于领导层的灰狼进行位置调整,而领导层的灰狼将指导其他灰狼进行位置更新,从而产生间接的影响。

算法伪代码如下:
请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]李阳,李维刚,赵云涛,刘翱.基于莱维飞行和随机游动策略的灰狼算法[J].计算机科学,2020,47(08):291-296.

5.Matlab代码

6.python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/125324102
今日推荐