灰狼优化算法(Grey Wolf Optimizer,GWO)
一、算法灵感
灰狼优化算法(Grey Wolf Optimizer, GWO),由澳大利亚格里菲斯大学学者Mirjalili等人于2014年提出来的一种群智能优化算法。灵感来自于灰狼群体捕食行为。GWO算法模拟了自然界中灰狼的领导等级和狩猎机制。将灰狼分为四种类型,用来模拟等级阶层。此外,还模拟了寻找猎物、包围猎物和攻击猎物三个主要阶段。
二、算法介绍
2.1 初始化
在GWO中,为了从数学上模拟狼的社会层次,将最优的解定义为alpha( α α α )用于模拟领头狼(一阶狼)的位置。因此,第二和第三最佳解分别命名为beta( β β β )和delta( δ δ δ ) 用于模拟二阶狼和三阶狼的位置。其余的候选解被假定为omega( ω ω ω )用于模拟从属狼(四阶狼)的位置。在GWO算法中,狩猎(求解)由 α α α 狼、 β β β 狼和 δ δ δ 狼指导。 ω ω ω 狼跟着这三只狼。
2.2 搜寻猎物(探索阶段)
灰狼大多根据
α
α
α 狼、
β
β
β 狼和
δ
δ
δ 狼的位置进行搜索。它们互相分开以寻找猎物,然后汇聚起来攻击猎物。为了在数学上建立发散模型,利用随机值大于
1
1
1 或小于
−
1
-1
−1 的
A
A
A 来迫使灰狼个体偏离猎物。这主要用于算法探索,并可以使GWO进行全局搜索。如图1显示,
∣
A
∣
>
1
|A|>1
∣A∣>1 迫使灰狼偏离猎物,希望找到更强壮的猎物。GWO的另一个有利于探索的组成部分是
C
C
C ,其使用等式(4)进行计算,其为随机数,范围为
[
0
,
2
]
[0,2]
[0,2]。该参数为猎物提供了随机的权重,以便加强(
C
>
1
C > 1
C>1 时)或降低(
C
<
1
C < 1
C<1 时)猎物位置对灰狼下一个位置的影响,计算公式见公式(1)。
2.3 开发阶段
2.3.1 围捕猎物
在捕猎过程中,灰狼包围了猎物。为了对环绕行为进行数学建模,提出了以下方程式:
D
=
∣
C
⋅
X
p
(
t
)
−
X
(
t
)
∣
(1)
D = \left| { C \cdot {{ X}_{\rm{p}}}(t) - X(t)} \right|\tag{1}
D=∣C⋅Xp(t)−X(t)∣(1)
X
(
t
+
1
)
=
X
p
(
t
)
−
A
⋅
D
(2)
X(t + 1) = { X_{\rm{p}}}(t) - A \cdot D\tag{2}
X(t+1)=Xp(t)−A⋅D(2)其中,
t
t
t 表示当前迭代次数,
A
A
A 和
C
C
C 为系数,
X
p
X_{p}
Xp 为猎物的位置,为猎物的位置,
X
(
t
)
X(t)
X(t) 为灰狼个体第
t
t
t 代的位置。
A
A
A 和
C
C
C 的计算方法如下:
A
=
2
a
⋅
r
1
−
a
(3)
A = 2 a \cdot { r_1} - a \tag{3}
A=2a⋅r1−a(3)
C
=
2
⋅
r
2
(4)
C = 2 \cdot { r_2}\tag{4}
C=2⋅r2(4)其中,
r
1
r_{1}
r1、
r
2
r_{2}
r2是
[
0
,
1
]
[0,1]
[0,1] 中的随机值。为了模拟逼近猎物,
A
A
A 是区间
[
−
a
,
a
]
[-a,a]
[−a,a] 中的一个随机值,其中
a
a
a 在迭代过程中从
2
2
2 减少到
0
0
0。
2.3.2 攻击猎物
灰狼有能力识别猎物的位置并围猎它们。围猎通常由
α
α
α 狼来指挥,
β
β
β 狼和
δ
δ
δ 狼也会偶尔参与狩猎。灰狼个体跟踪猎物位置的数学模型描述如下:
D
α
=
∣
C
1
⋅
X
α
−
X
∣
(5)
{{ D}_\alpha } = \left| {{{ C}_1} \cdot {{ X}_\alpha } - X} \right|\tag{5}
Dα=∣C1⋅Xα−X∣(5)
D
β
=
∣
C
2
⋅
X
β
−
X
∣
(6)
{{ D}_\beta } = \left| {{{ C}_2} \cdot {{ X}_\beta } - X} \right|\tag{6}
Dβ=∣C2⋅Xβ−X∣(6)
D
δ
=
∣
C
3
⋅
X
δ
−
X
∣
(7)
{{ D}_\delta } = \left| {{{ C}_3} \cdot {{ X}_\delta } - X} \right|\tag{7}
Dδ=∣C3⋅Xδ−X∣(7)其中,
D
α
D_{α}
Dα ,
D
β
D_{β}
Dβ 和
D
δ
D_{δ}
Dδ 分别表示
α
α
α 狼、
β
β
β 狼和
δ
δ
δ 狼与其他个体间的距离;
X
α
X_{α}
Xα ,
X
β
X_{β}
Xβ 和
X
δ
X_{δ}
Xδ 分别代表
α
α
α 狼、
β
β
β 狼和
δ
δ
δ 狼当前的位置;
C
1
C_{1}
C1,
C
2
C_{2}
C2 和
C
3
C_{3}
C3 是随机数,
X
X
X 是灰狼个体的当前位置。
X
1
=
X
α
−
A
1
⋅
(
D
α
)
(8)
{{ X}_1} = {{ X}_\alpha } - {{ A}_1} \cdot ({{ D}_\alpha })\tag{8}
X1=Xα−A1⋅(Dα)(8)
X
2
=
X
β
−
A
2
⋅
(
D
β
)
(9)
{{ X}_2} = {{ X}_\beta } - {{ A}_2} \cdot ({{ D}_\beta })\tag{9}
X2=Xβ−A2⋅(Dβ)(9)
X
3
=
X
δ
−
A
3
⋅
(
D
δ
)
(10)
{{ X}_3} = {{ X}_\delta } - {{ A}_3} \cdot ({{ D}_\delta })\tag{10}
X3=Xδ−A3⋅(Dδ)(10)其中,
X
1
X_{1}
X1 ,
X
2
X_{2}
X2 和
X
3
X_{3}
X3 分别表示受
α
α
α 狼、
β
β
β 狼、
δ
δ
δ 狼影响,
ω
ω
ω 狼调整后的位置。这里取平均值,即:
X
(
t
+
1
)
=
X
1
+
X
2
+
X
3
3
(11)
X(t + 1) = {{{{ X}_1} + {{ X}_2} + {{ X}_3}} \over 3}\tag{11}
X(t+1)=3X1+X2+X3(11) 灰狼的位置更新方式可以用图2表示。
2.4 算法伪代码
- 初始化灰狼种群 X i ( i = 1 , 2 , . . . , n ) X_{i}(i=1,2,...,n) Xi(i=1,2,...,n)
- 初始化 a , A , C , t = 0 a,A,C,t=0 a,A,C,t=0
- 计算每个灰狼个体的适应度值
- X α X_{α} Xα = 适应度值最好的灰狼个体
- X β X_{β} Xβ = 适应度值第二的灰狼个体
- X δ X_{δ} Xδ = 适应度值第三的灰狼个体
- While t < M a x t < Max t<Max
- For i = 1 i = 1 i=1 to N N N do
- 使用公式(11)更新当前灰狼个体的位置
- End For
- 更新 a a a, A A A 和 C C C
- 计算所有灰狼个体的适应度值
- 更新 X α X_{α} Xα, X β X_{β} Xβ 和 X δ X_{δ} Xδ
- t = t + 1 t=t+1 t=t+1
- End While
- 返回最优解 X α X_{α} Xα
三、实验结果
GWO在23个经典测试函数(设置维度 d i m = 30 dim=30 dim=30)的F5、F6、F7中的收敛曲线,测试函数公式如下:
函数 | 公式 | 理论值 |
---|---|---|
F5 | F 5 ( x ) = ∑ i = 1 d − 1 [ 100 ( x i + 1 − x i 2 ) 2 + ( x i − 1 ) 2 ] {F_5}(x) = \sum\nolimits_{i = 1}^{d - 1} {[100{{({x_{i + 1}} - x_i^2)}^2} + {{({x_i} - 1)}^2}]} F5(x)=∑i=1d−1[100(xi+1−xi2)2+(xi−1)2] | 0.00 0.00 0.00 |
F6 | F 6 ( x ) = ∑ i = 1 d ( x i + 5 ) 2 {F_6}(x) = {\sum\nolimits_{i = 1}^d {({x_i} + 5)} ^2} F6(x)=∑i=1d(xi+5)2 | 0.00 0.00 0.00 |
F7 | F 7 ( x ) = ∑ i = 1 d i × x i 4 + r a n d o m [ 0 , 1 ) {F_7}(x) = \sum\nolimits_{i = 1}^d {i \times x_i^4 + random[0,1)} F7(x)=∑i=1di×xi4+random[0,1) | 0.00 0.00 0.00 |
3.1 F5收敛曲线
3.2 F6收敛曲线
3.3 F7收敛曲线
四、参考文献
[1] 贾鹤鸣, 智能优化算法及 MATLAB 实现[M], 清华大学出版社, 2024。
[2] S. Mirjalili, S. M. Mirjalili, A. Lewis. Grey Wolf Optimizer[J]. Advances in Engineering Software, 2014, 69, 46-61.