一、理论基础
1、金鹰优化算法
本文提出了一种基于自然启发的元启发式算法来解决全局优化问题,称为金鹰优化算法(Golden eagle optimizer, GEO)。GEO的核心灵感是金鹰在其螺旋轨迹的不同阶段调整速度以进行狩猎的智能。在狩猎的最初阶段,它们更倾向于游弋和寻找猎物,在最后阶段,它们更倾向于攻击。金鹰通过调整这两个分量,在尽可能短的时间内捕获可行区域内最好的猎物。这种行为通过数学建模来强调对全局优化方法的探索和开发。
(1)螺旋运动
GEO基于金鹰的螺旋运动。如前所述,每只金鹰都会记住它迄今为止去过的最佳地点。鹰同时具有攻击猎物和寻找更好食物的吸引力。
在每次迭代中,每个金鹰
i
i
i随机选择另一只金鹰
f
f
f的猎物,并围绕金鹰
f
f
f迄今为止访问的最佳位置旋转。金鹰
i
i
i也可以选择存储自己的记忆,其中,
f
∈
{
1
,
2
,
⋯
,
P
o
p
S
i
z
e
}
f\in\{1, 2,\cdots, PopSize\}
f∈{1,2,⋯,PopSize}。
(2)猎物选择
在每次迭代中,每只金鹰都必须选择一只猎物来执行巡航和攻击操作。在GEO中,猎物被建模为金鹰群迄今为止找到的最佳解决方案。每只金鹰都能记住迄今为止找到的最佳解决方案。在每次迭代中,每个搜索代理从整个群体的记忆中选择一个目标猎物,然后计算每个金鹰相对于选定猎物的攻击和巡航向量。如果新位置(通过攻击和巡航矢量计算)优于内存中的前一个位置,则内存会更新。猎物选择策略在GEO中起着重要作用。选择可以以一种基本的方式进行,每只金鹰只在自己的记忆中选择猎物。为了让金鹰更好地探索空间,提出了一个随机一对一的映射方案,每个金鹰在当前迭代中从其他群体成员的记忆中随机选择其猎物。值得注意的是,选定的猎物不一定是最近或最远的猎物。在这个方案中,记忆中的每一个猎物都被分配或映射到一只金鹰。然后,每只金鹰对选定的猎物执行攻击和巡航操作。
(3)攻击(开发)
攻击行为可以通过一个向量来建模,该向量从金鹰的当前位置开始,以金鹰记忆中猎物的位置结束。金鹰 i i i的攻击向量可以通过式(1)计算: A → i = X → f ∗ − X → i (1) \overrightarrow A_i=\overrightarrow X_f^*-\overrightarrow X_i\tag{1} Ai=Xf∗−Xi(1)其中, A → i \overrightarrow A_i Ai表示金鹰 i i i的攻击向量, X → f ∗ \overrightarrow X_f^* Xf∗表示当前种群的最佳位置(猎物), X → i \overrightarrow X_i Xi表示金鹰 i i i的当前位置。由于攻击向量引导金鹰群朝向最佳访问的位置移动,因此它强调了GEO的开发阶段。
(4)巡航(探索)
基于攻击向量计算巡航向量。巡航向量是圆的切线向量,垂直于攻击向量。巡航也可以被认为是金鹰相对于猎物的线性速度。
n
n
n维巡航向量位于圆的切线超平面内,因此,为了计算巡航向量,我们必须首先计算切线超平面的方程。
n
n
n维超平面的方程可以由该超平面上的任意点和与该超平面垂直的向量确定,该向量称为该超平面的法向量。式(2)显示了
n
n
n维空间中超平面方程的标量形式:
h
1
x
1
+
h
2
x
2
+
⋯
+
h
n
x
n
⇒
∑
j
=
1
n
h
j
x
j
=
d
(2)
h_1x_1+h_2x_2+\cdots+h_nx_n\Rightarrow\sum_{j=1}^nh_jx_j=d\tag{2}
h1x1+h2x2+⋯+hnxn⇒j=1∑nhjxj=d(2)其中,
H
→
=
[
h
1
,
h
2
,
⋯
,
h
n
]
\overrightarrow H=[h_1,h_2,\cdots,h_n]
H=[h1,h2,⋯,hn]为法向量,
X
→
=
[
x
1
,
x
2
,
⋯
,
x
n
]
\overrightarrow X=[x_1,x_2,\cdots,x_n]
X=[x1,x2,⋯,xn]为平面内某一向量,
P
→
=
[
p
1
,
p
2
,
⋯
,
p
n
]
\overrightarrow P=[p_1,p_2,\cdots,p_n]
P=[p1,p2,⋯,pn]为超平面上的任一向量,
d
=
H
→
⋅
P
→
=
∑
j
=
1
n
h
j
p
j
d=\overrightarrow H\cdot\overrightarrow P=\sum_{j=1}^nh_jp_j
d=H⋅P=∑j=1nhjpj。如果把
X
→
i
\overrightarrow X_i
Xi(金鹰
i
i
i的位置)看作超平面上的任一点,
A
→
i
\overrightarrow A_i
Ai(攻击向量)看作超平面的法线,那么
C
→
i
t
\overrightarrow C_i^t
Cit(第
t
t
t次迭代中金鹰
i
i
i的巡航向量)可根据式(3)计算出其所属的超平面。
∑
j
=
1
n
a
j
x
j
=
∑
j
=
1
n
a
j
t
x
j
∗
(3)
\sum_{j=1}^na_jx_j=\sum_{j=1}^na_j^tx_j^*\tag{3}
j=1∑najxj=j=1∑najtxj∗(3)其中,
A
→
i
=
[
a
1
,
a
2
,
⋯
,
a
n
]
\overrightarrow A_i=[a_1,a_2,\cdots,a_n]
Ai=[a1,a2,⋯,an]为攻击向量,
X
→
=
[
x
1
,
x
2
,
⋯
,
x
n
]
\overrightarrow X=[x_1,x_2,\cdots,x_n]
X=[x1,x2,⋯,xn]为决策向量,
X
→
∗
=
[
x
1
∗
,
x
2
∗
,
⋯
,
x
n
∗
]
\overrightarrow X^*=[x_1^*,x_2^*,\cdots,x_n^*]
X∗=[x1∗,x2∗,⋯,xn∗]为选择的猎物的位置。
为了在巡航超平面上找到一个随机向量,必须首先在这个超平面上找到一个随机的目的点
C
C
C,而不是金鹰
i
i
i的当前位置。使用以下三个步骤来寻找金鹰
i
i
i巡航超平面上的随机
n
n
n维目的地
C
C
C。
Step 1. 从
n
n
n个变量中随机选择一个变量作为固定变量。用
k
k
k表示选择变量的索引,注意,不能从攻击向量
A
→
i
\overrightarrow A_i
Ai中对应元素为零的变量中选择固定变量。原因是,当式(2)中某个变量的系数等于零时,超平面平行于该变量的轴,该变量可以取其他
n
−
1
n-1
n−1个变量的随机组合的任何值。例如,在三维平面
3
x
1
+
2
x
2
=
10
3x_1+2x_2=10
3x1+2x2=10,如果选择
k
=
3
,
{
x
1
=
2
,
x
2
=
5
}
k=3,\{x_1=2,x_2=5\}
k=3,{x1=2,x2=5},就找不到唯一的点;相反,在这个平面上得到了无穷多个点,它们都满足平面方程
{
[
2
,
5
,
1
]
,
[
2
,
5
,
2
]
,
[
2
,
5
,
3
]
,
⋯
}
\{[2,5,1],[2,5,2],[2,5,3],\cdots\}
{[2,5,1],[2,5,2],[2,5,3],⋯}。
Step 2. 将随机值分配给除第
k
k
k个变量之外的所有变量,因为第
k
k
k个变量是固定的。
Step 3. 使用式(4)找到固定变量的值:
c
k
=
d
−
∑
j
,
j
≠
k
a
j
a
k
(4)
c_k=\frac{d-\sum_{j,j\neq k}a_j}{a_k}\tag{4}
ck=akd−∑j,j=kaj(4)其中,
c
k
c_k
ck是目标点
C
C
C的第
k
k
k个元素,
a
j
a_j
aj是攻击向量
A
→
i
\overrightarrow A_i
Ai的第
j
j
j个元素,
d
d
d由式(2)计算所得,
a
k
a_k
ak是攻击向量
A
→
i
\overrightarrow A_i
Ai的第
k
k
k个元素,
k
k
k是固定变量的索引。式(5)给出了巡航超平面上目的地的一般表示:
C
→
i
=
(
c
1
=
random
,
c
2
=
random
,
⋯
,
c
k
=
d
−
∑
j
,
j
≠
k
a
j
a
k
,
⋯
,
c
n
=
random
)
(5)
\overrightarrow C_i=\left(c_1=\text{random},c_2=\text{random},\cdots,c_k=\frac{d-\sum_{j,j\neq k}a_j}{a_k},\cdots,c_n=\text{random}\right)\tag{5}
Ci=(c1=random,c2=random,⋯,ck=akd−∑j,j=kaj,⋯,cn=random)(5)现在确定了目标点,可以在第
t
t
t次迭代中计算金鹰
i
i
i的巡航向量。获得的目标点的元素是0探索阶段。
(5)移动到新位置
金雕的位置更新包括攻击和向量。将迭代 t t t中金鹰 i i i的步长向量定义为式(6): Δ x i = r → 1 p a t A → i ∣ ∣ A → i ∣ ∣ + r → 2 p c t C → i ∣ ∣ C → i ∣ ∣ (6) \Delta x_i=\overrightarrow r_1p_a^t\frac{\overrightarrow A_i}{||\overrightarrow A_i||}+\overrightarrow r_2p_c^t\frac{\overrightarrow C_i}{||\overrightarrow C_i||}\tag{6} Δxi=r1pat∣∣Ai∣∣Ai+r2pct∣∣Ci∣∣Ci(6)其中, p a t p_a^t pat是迭代 t t t中的攻击系数, p c t p_c^t pct是迭代 t t t中的巡航系数,并调整金鹰受到攻击和巡航的影响; r → 1 \overrightarrow r_1 r1和 r → 2 \overrightarrow r_2 r2是元素位于区间 [ 0 , 1 ] [0,1] [0,1]内的随机向量; ∣ ∣ A → i ∣ ∣ ||\overrightarrow A_i|| ∣∣Ai∣∣和 ∣ ∣ C → i ∣ ∣ ||\overrightarrow C_i|| ∣∣Ci∣∣是攻击和巡航向量的欧几里德范数,使用式(7)计算: ∣ ∣ A → i ∣ ∣ = ∑ j = 1 n a j 2 , ∣ ∣ C → i ∣ ∣ = ∑ j = 1 n c j 2 (7) ||\overrightarrow A_i||=\sqrt{\sum_{j=1}^na_j^2},\,\,||\overrightarrow C_i||=\sqrt{\sum_{j=1}^nc_j^2}\tag{7} ∣∣Ai∣∣=j=1∑naj2,∣∣Ci∣∣=j=1∑ncj2(7)迭代 t + 1 t+1 t+1中金鹰的位置只需将迭代 t t t中的步长向量与迭代 t t t中的位置相加即可计算出来。 x t + 1 = x t + Δ x i t (8) x^{t+1}=x^t+\Delta x_i^t\tag{8} xt+1=xt+Δxit(8)如果金鹰 i i i的新位置的适应度比其记忆中的位置更好,则该鹰的记忆将用新位置更新。否则,记忆将保持,但鹰将驻留在新位置。在新的迭代中,每个金鹰随机地从种群中选择一只金鹰绕它的最佳访问位置旋转,计算攻击向量和巡航向量,最后,更新下一次迭代的步长向量和新位置。执行此循环,直到满足终止条件。
(6)从探索到开发的过渡
如前所述,金鹰在狩猎飞行的初始阶段表现出更高的巡航倾向,在最后阶段表现出更高的攻击倾向,这对应于在算法中,前期迭代中更多的探索和后期迭代中更多的开发。
GEO使用
p
a
p_a
pa和
p
c
p_c
pc从探索转向开发。该算法从低
p
a
p_a
pa和高
p
c
p_c
pc开始。随着迭代的进行,
p
a
p_a
pa逐渐增加,而
p
c
p_c
pc逐渐减少。这两个参数的初始值和最终值由用户定义。中间值可以使用式(9)中的线性转换进行计算。
{
p
a
=
p
a
0
+
t
T
∣
p
a
T
−
p
a
0
∣
p
c
=
p
c
0
−
t
T
∣
p
c
T
−
p
c
0
∣
(9)
\begin{dcases}p_a=p_a^0+\frac tT\left|p_a^T-p_a^0\right|\\[2ex]p_c=p_c^0-\frac tT\left|p_c^T-p_c^0\right|\end{dcases}\tag{9}
⎩⎪⎨⎪⎧pa=pa0+Tt∣∣paT−pa0∣∣pc=pc0−Tt∣∣pcT−pc0∣∣(9)其中,
t
t
t表示当前迭代次数,
T
T
T表示最大迭代次数,
p
a
0
p_a^0
pa0和
p
a
T
p_a^T
paT分别是攻击倾向(
p
a
p_a
pa)的初始值和最终值,
p
c
0
p_c^0
pc0和
p
c
T
p_c^T
pcT分别是巡航倾向(
p
c
p_c
pc)的初始值和最终值。 本文攻击倾向和巡航倾向的初始值和最终值的取值分别为
[
p
a
0
,
p
a
T
]
=
[
0.5
,
2
]
,
[
p
c
0
,
p
c
T
]
=
[
1
,
0.5
]
[p_a^0,p_a^T]=[0.5,2],[p_c^0,p_c^T]=[1,0.5]
[pa0,paT]=[0.5,2],[pc0,pcT]=[1,0.5]。
2、GEO算法伪代码
根据前面给出的基本概念及其相应的数学模型,下图给出了GEO单目标实现的伪代码。
二、仿真实验与分析
将GEO与GWO和CSA进行对比,以文献[1]中表2和表3的F1、F9、F10为例,实验设置种群规模为50,最大迭代次数为1000,每种算法独立运算30次,结果显示如下:
函数:F1
GEO:最差值: 3.5745e-31, 最优值: 0, 平均值: 1.1915e-32, 标准差: 6.5262e-32, 秩和检验: 1
GWO:最差值: 0.76207, 最优值: 1.5964e-09, 平均值: 0.050805, 标准差: 0.19334, 秩和检验: 1.7203e-12
CSA:最差值: 1.7079e-23, 最优值: 7.3018e-27, 平均值: 2.5369e-24, 标准差: 4.0567e-24, 秩和检验: 1.7203e-12
函数:F9
GEO:最差值: -959.6407, 最优值: -959.6407, 平均值: -959.6407, 标准差: 5.7815e-13, 秩和检验: NaN
GWO:最差值: -718.167, 最优值: -959.6407, 平均值: -920.422, 标准差: 68.0541, 秩和检验: 1.2118e-12
CSA:最差值: -894.5789, 最优值: -959.6407, 平均值: -951.6125, 标准差: 13.7516, 秩和检验: 1.1547e-12
函数:F10
GEO:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GWO:最差值: 3.3547e-06, 最优值: 6.9144e-08, 平均值: 1.3357e-06, 标准差: 1.0689e-06, 秩和检验: 1.2118e-12
CSA:最差值: 4.6537e-22, 最优值: 4.8687e-25, 平均值: 4.1093e-23, 标准差: 9.5057e-23, 秩和检验: 1.2118e-12
实验结果验证了GEO算法的优越性,表明GEO算法能够有效地找到全局最优解,避免局部最优解。
三、参考文献
[1] Abdolkarim Mohammadi-Balani, Mahmoud Dehghan Nayeri, Adel Azar, et al. Golden eagle optimizer: A nature-inspired metaheuristic algorithm[J]. Computers & Industrial Engineering, 2021, 152: 107050.