灰狼优化算法(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 |