强化狼群等级制度的灰狼优化算法-附代码

强化狼群等级制度的灰狼优化算法


摘要: 针对灰狼优化算法在处理复杂优化问题时优化精度不高,易陷于局部最优等问题,提出了一种强化狼群等级制度的灰狼优化算法。该算法为灰狼个体设置了跟随狩猎和自主探索两种狩猎模式,并根据自身等级情况来控制选择狼群的狩猎模式。在跟随狩猎模式中,灰狼个体以等级高于自身的灰狼的位置信息来指引自己到达最优解区域;而在自主探索模式中,灰狼个体会同时审视等级高于自身的灰狼的位置信息和自身位置信息,并基于这些信息自主判断猎物的位置,同时两种更新模式都将引入优胜劣汰选择规则来确保种群的狩猎方向。

1.灰狼优化算法

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

2. 改进灰狼优化算法

2.1 GWOSH算法的基本思想

从 GWO 算法可知,它的狩猎模型是先由 α 狼,β 狼和 δ 狼共同负责对猎物的位置进行评估定位,然后其余个体以此为标准计算自身与猎物之间的距离,并完成对猎物的全方位靠近、包围和攻击等行为,最终完成狩猎。在这个过程中 α 狼,β 狼、δ 狼及 ω 狼的等级特性体现的并不是很明显,而 α 狼,β 狼和 δ狼的位置信息对于其他个体的位置更新又起着绝对的引导作用,容易致使整个狼群过早聚集于群体当前最优位置的某一邻域内。另外,探索能力还受制于两个探索参数 A 和 C 的较小取值范围,从而导致算法易陷于局部最优。
灰狼家族有着严格的社会等级管理制度,不同等级的灰狼享有不同的权利和社会分工,灰狼所属的等级越高,对猎物的情况就有更好的了解,自主能动性也越强,且这种等级制度在狼群实现团体高效捕杀猎物的过程中发挥着至关重要的作用。因此,本文提出一种强化狼群等级制度的灰狼优化算法,以期提高其性能。

2. 2 GWOSH算法

设狼群的搜索空间为一个 N × D N \times D N×D 的欧式空间, 其中 N N N 为灰狼数量, D D D 为待寻优的变量数。设第 i i i 只灰狼 t t t 时刻的位置为 X i ( t ) = ( x i 1 t , x i 2 t , ⋯   , x i D t ) \boldsymbol{X}_{i}(t)=\left(x_{i 1}^{t}, x_{i 2}^{t}, \cdots, x_{i D}^{t}\right) Xi(t)=(xi1t,xi2t,,xiDt), 当前找到具有最优适应值的 α \alpha α 狼位置为 X a t = \boldsymbol{X}_{a}^{t}= Xat= ( x a 1 t , x a 2 t , ⋯   , x a D t ) \left(x_{a 1}^{t}, x_{a 2}^{t}, \cdots, x_{a D}^{t}\right) (xa1t,xa2t,,xaDt), 当前次优适应值的 β \beta β 狼位置为 X β t = ( x β 1 t , x β 2 t , ⋯   , x β D t ) \boldsymbol{X}_{\beta}^{t}=\left(x_{\beta 1}^{t}, x_{\beta 2}^{t}, \cdots, x_{\beta D}^{t}\right) Xβt=(xβ1t,xβ2t,,xβDt), 当前第三适应值的 δ \delta δ 狼位置 为 X δ t = ( x δ 1 t , x δ 2 t , ⋯   , x δ D t ) \boldsymbol{X}_{\delta}^{t}=\left(x_{\delta 1}^{t}, x_{\delta 2}^{t}, \cdots, x_{\delta D}^{t}\right) Xδt=(xδ1t,xδ2t,,xδDt)
为了强化等级制度对于狼群狩猎的影响, 为每个灰狼个体设计两种狩猎模式: 跟随狩猎模式和自 主探索模式。为了设计算法模型, 作出如下假设:(1)每头狼采用跟随狩猎模式和自主探索模式; (2) 每头狼依据一定的规则来确定其狩猎模式。跟随狩猎模式中的灰狼个体的位置更新原理类似于原始 G W O \mathrm{GWO} GWO 算法, 只是仅以等级高于自身的灰狼的位置信息来指引自已到达最优解区域; 而在自主探索模 式中, 灰狼个体会同时审视等级高于自身灰狼的位置信息和自身位置信息, 并以这些信息为基础采用 随机变向的方式来更新自已的位置, 同时两种更新模式都将引入优胜劣汰选择规则来确保种群的狩 猎方向。
每只灰狼会根据自身所属等级情况来确定其狩猎模式。GWOSH 算法先将候选解按适应度值的优 尒划分为 4 个等级, 适应度值最优者为 α \alpha α 狼, 其等级为 1 ; 适应度值次优者为 β \beta β 狼, 其等级为 2 ; 适应度值 第三优者为 δ \delta δ 狼, 其等级为 3 ; 余下的候选解为 ω \omega ω 狼, 其等级为 4 , 记第 i i i 头狼 t t t 时刻的等 级为 S i ( t ) S_{i}(t) Si(t), 则 S i ( t ) = 1 S_{i}(t)=1 Si(t)=1 表示第 i i i 头灰狼 t t t 时刻在群体中所属等级为 1 , S i ( t ) = 2 1, S_{i}(t)=2 1,Si(t)=2 表示第 i i i 头灰狼 t t t 时刻在群体中所属 等级为 2 , 依次类推。然后, 用决策因子 D F i ( t ) D F_{i}(t) DFi(t) 来标记每一头灰狼个体的等级情况, 其计算公式为
D F i ( t ) = L − S i t L − 1 (12) D F_{i}(t)=\frac{L-S_{i}^{t}}{L-1}\tag{12} DFi(t)=L1LSit(12)
式中: L L L 为狼群所分等级总数, 即 L = 4 L=4 L=4 。从式 (12) 可看出, 对于等级为 1 的 α \alpha α 狼而言, 其决策因子 D F i ( t ) = 1 D F_{i}(t)=1 DFi(t)=1, 等级为 2 的 β \beta β 狼的决策因子 D F i ( t ) = 0.67 D F_{i}(t)=0.67 DFi(t)=0.67, 等级为 3 的 δ \delta δ 狼的决策因子 D F i ( t ) = 0.33 D F_{i}(t)=0.33 DFi(t)=0.33, 等 级为 4 的 ω \omega ω 狼的决策因子为 0 。
在每一次的迭代过程中, 对于每一个候选解都会先生成一个 [ 0 , 1 ] [0,1] [0,1] 间的随机数 r 0 r_{0} r0, 如果 r 0 ⩽ D F i r_{0} \leqslant D F_{i} r0DFi ( t ) (t) (t), 则灰狼 i i i t t t 时刻就会采用自主探索模式, 否则采用跟随狩猎模式。显然对于 α \alpha α 狼因其决策因子为 1 , 而 r 0 r_{0} r0 恒小于或等于 1 , 所以 α \alpha α 狼有且仅有一种狩猎模式即自主探索狩猎模式, 对于 ω \omega ω 狼因其决策因子 为 0 , 而 r 0 r_{0} r0 大于或等于 0 , 所以 ω \omega ω 狼仅能采用跟随狩猎模式。
对于 α \alpha α 狼, 其位置更新公式为
{ X i d t + 1 = X a k t d ≠ k X i d t + 1 = X a d t + 2 ⋅ a ⋅ r 3 ⋅ ( X m d t − X n d t ) d = k (13) \begin{cases}\boldsymbol{X}_{i d}^{t+1}=\boldsymbol{X}_{a k}^{t} & d \neq k \\ \boldsymbol{X}_{i d}^{t+1}=\boldsymbol{X}_{a d}^{t}+2 \cdot a \cdot r_{3} \cdot\left(\boldsymbol{X}_{m d}^{t}-\boldsymbol{X}_{n d}^{t}\right) & d=k\end{cases} \tag{13} { Xidt+1=XaktXidt+1=Xadt+2ar3(XmdtXndt)d=kd=k(13)
式中: k k k { 1 , 2 , ⋯   , D } \{1,2, \cdots, D\} { 1,2,,D} 中的一个随机数; m m m n n n 为区间 [ 1 , N ] [1, N] [1,N] 内与 i i i 不等的随机整数, 且两两互不相等; a a a 为整个迭代过程中从 2 到 0 的一个线性递减参数, r 3 r_{3} r3 为区间 [ 0 , 1 ] [0,1] [0,1] 中的一个随机数, X a \boldsymbol{X}_{a} Xa 表示具有最优 适应值的 α \alpha α 狼的位置。
对于 β \beta β 狼, 按式 (14) 进行位置更新, 即有
{ X i d t + 1 = X 1 d r 0 > 0.67 X i d t + 1 = ( X o k t + X p k t ) / 2 r 0 ⩽ 0.67 (14) \begin{cases}\boldsymbol{X}_{i d}^{t+1}=\boldsymbol{X}_{1 d} & r_{0}>0.67 \\ \boldsymbol{X}_{i d}^{t+1}=\left(\boldsymbol{X}_{o k}^{t}+\boldsymbol{X}_{p k}^{t}\right) / 2 & r_{0} \leqslant 0.67\end{cases} \tag{14} { Xidt+1=X1dXidt+1=(Xokt+Xpkt)/2r0>0.67r00.67(14)
式中: k k k { 1 , 2 , ⋯   , D } \{1,2, \cdots, D\} { 1,2,,D} 中的一个随机数; X 1 \boldsymbol{X}_{1} X1 来自于式 (8); X a \boldsymbol{X}_{a} Xa X β \boldsymbol{X}_{\beta} Xβ 分别表示 α \alpha α 狼和 β \beta β 狼的位置。 对于 δ \delta δ 狼, 其按式(15) 进行位置更新, 即有
{ X i d t + 1 = ( X 1 d + X 2 d ) / 2 r 0 > 0.33 X i d t + 1 = ( X a k t + X p k t + X o k t ) / 3 r 0 ⩽ 0.33 (15) \begin{cases}\boldsymbol{X}_{i d}^{t+1}=\left(\boldsymbol{X}_{1 d}+\boldsymbol{X}_{2 d}\right) / 2 & r_{0}>0.33 \\ \boldsymbol{X}_{i d}^{t+1}=\left(\boldsymbol{X}_{a k}^{t}+\boldsymbol{X}_{p k}^{t}+\boldsymbol{X}_{o k}^{t}\right) / 3 & r_{0} \leqslant 0.33\end{cases} \tag{15} { Xidt+1=(X1d+X2d)/2Xidt+1=(Xakt+Xpkt+Xokt)/3r0>0.33r00.33(15)
式中: k k k { 1 , 2 , ⋯   , D } \{1,2, \cdots, D\} { 1,2,,D} 中的一个随机数; X 1 \boldsymbol{X}_{1} X1 X 2 \boldsymbol{X}_{2} X2 分别来自于式 (8) 和式 (9); X α , X β \boldsymbol{X}_{\alpha}, \boldsymbol{X}_{\beta} Xα,Xβ X δ ^ \boldsymbol{X}_{\hat{\delta}} Xδ^ 分别表示 α \alpha α 狼、 β \beta β 狼和 δ \delta δ 狼的位置。
对于 ω \omega ω 狼, 按式 (16) 进行位置更新, 即有
X i d t + 1 = ( X 1 d + X 2 d + X 3 d ) / 3 (15) \boldsymbol{X}_{i d}^{t+1}=\left(\boldsymbol{X}_{1 d}+\boldsymbol{X}_{2 d}+\boldsymbol{X}_{3 d}\right) / 3\tag{15} Xidt+1=(X1d+X2d+X3d)/3(15)
式中: X 1 , X 2 \boldsymbol{X}_{1}, \boldsymbol{X}_{2} X1,X2 X 3 \boldsymbol{X}_{3} X3 分别来自于式 (8-10)。
为了确保种群的进化方向, GWOSH 算法还引入了优胜劣汰选择规则来保留每一代的最优解, 即如 果新个体的适应度值 f ( n e w ) f(\mathrm{new}) f(new) 优于上一代该个体的适应度值 f f f (old), 则用新个体的位置替代上一代个 体的位置, 否则保留上一代个体的位置, 该规则可表示为
x i d t + 1 = { x i d  new  t + 1 f ( o l d ) ⩽ f (  new  ) x idold  t  其他  (16) x_{i d}^{t+1}=\left\{\begin{array}{cc} x_{i d \text { new }}^{t+1} & f(\mathrm{old}) \leqslant f(\text { new }) \\ x_{\text {idold }}^{t} & \text { 其他 } \end{array}\right.\tag{16} xidt+1={ xid new t+1xidold tf(old)f( new ) 其他 (16)
GWOSH 算法流程具体如下:
(1)参数初始化。设置种群个数为 N N N, 最大迭代次数为 Maxgen;
(2) 根据变量的上下界来随机初始化灰狼个体的位置 X i \boldsymbol{X}_{i} Xi, 其中, i = 1 , 2 , ⋯   , N i=1,2, \cdots, N i=1,2,,N;
(3)计算狼群中每一头狼的适应度值;
(4)按适应度值从优到差的顺序对狼群进行排序, 并分别保存当前获得的具有最优、次优和第三优 适应度值的灰狼的位置信息 X a , X β \boldsymbol{X}_{a}, \boldsymbol{X}_{\beta} Xa,Xβ X δ ^ \boldsymbol{X}_{\hat{\delta}} Xδ^ 。同时, 用 S i ( t ) S_{i}(t) Si(t) 来标记每个灰狼个体的所属等级, 适应度值 最优者 S i ( t ) = 1 S_{i}(t)=1 Si(t)=1; 次优者 S i ( t ) = 2 S_{i}(t)=2 Si(t)=2; 第三优者 S i ( t ) = 3 S_{i}(t)=3 Si(t)=3, 剩下的灰狼个体 S i ( t ) = 4 S_{i}(t)=4 Si(t)=4;
(5) 对狼群位置进行更新。 S i ( t ) = 1 , 2 , 3 S_{i}(t)=1,2,3 Si(t)=1,2,3 和 4 的灰狼分别根据式 (13-16) 进行位置更新;
(6) 计算狼群中每一头狼的适应度值;
(7) 依据优胜劣汰选择规则, 按式 (17)确定是否接受该新位置;
(8)更新参数 a , A a, \boldsymbol{A} a,A C \boldsymbol{C} C;
(9) 判断是否到达最大迭代次数 Maxgen, 若满足则停止并返回 X a \boldsymbol{X}_{a} Xa 的值作为最终得到的最优解, 否 则转到 (4)。

3.实验结果

请添加图片描述

4.参考文献

[1]张新明,涂强,康强,程金凤.强化狼群等级制度的灰狼优化算法[J].数据采集与处理,2017,32(05):879-889.

5.Matlab代码

6.Python代码

猜你喜欢

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