转载自我的个人网站 https://wzw21.cn/2022/01/08/woa/
鲸鱼优化算法
鲸鱼群体
鲸鱼是世界上最大的哺乳动物,是有情感的高智商动物,大部分鲸鱼被认为是食肉动物且群居。座头鲸是最大的长须鲸之一,它们使用一种独特的捕猎方式来猎食虾群和鱼群,被称为泡泡网(Bubble-net)捕猎方式,如图4、图5所示。它们在捕食时以螺旋式逼近猎物,吐出气体形成气泡,迫使鱼群聚集以方便捕食。鲸鱼优化算法便是受启发于鲸鱼(特别是座头鲸)的捕猎方式。
模型与算法
鲸鱼优化算法与灰狼优化算法相似,都采用对目标位置先进行包围再捕食的策略。不同点在于鲸鱼优化算法直接将当前最优解作为包围中心,且鲸鱼优化算法的捕猎逼近过程分为两种,第一种逐步降低距离,另一种以螺旋形逼近。鲸鱼优化算法的基本位置更新方式与灰狼优化算法相同,见灰狼优化算法公式(1)至(4)。
鲸鱼优化算法基于一个随机数p∈[0,1]来决定当前搜索单元的行动,有50%的概率直接根据目标位置进行移动,有50%的概率以螺旋线逼近猎物。鲸鱼在捕猎时的行为被定义为:
X
⃗
(
t
+
1
)
=
{
X
⃗
∗
(
t
)
−
A
⃗
⋅
D
⃗
D
′
⃗
⋅
e
b
l
⋅
c
o
s
(
2
π
l
)
+
X
⃗
∗
(
t
)
p
<
0.5
p
≥
0.5
(1)
\vec{X}(t+1)= \left\{ \begin{array}{l} \vec{X}^*(t)-\vec{A}\cdot\vec{D} \\ \vec{D'}\cdot e^{bl}\cdot cos(2πl)+\vec{X}^*(t) \end{array} \begin{array}{r} p<0.5 \\ p≥0.5 \end{array} \right. \tag1
X(t+1)={X∗(t)−A⋅DD′⋅ebl⋅cos(2πl)+X∗(t)p<0.5p≥0.5(1)
其中,
X
⃗
∗
(
t
)
\vec{X}^*(t)
X∗(t)可能是当前最优解的位置也可能是一个随机搜索单元的位置,取决于
∣
A
⃗
∣
|\vec{A}|
∣A∣的值,b决定螺旋线形状,l为随机值∈[-1,1],
D
′
⃗
=
∣
X
⃗
∗
(
t
)
−
X
⃗
(
t
)
∣
\vec{D'}=|\vec{X}^*(t)-\vec{X}(t)|
D′=∣X∗(t)−X(t)∣。鲸鱼优化算法搜索机制示意图如图6所示。
鲸鱼优化算法的伪代码如下:
初始化鲸鱼种群 Xi (i=1,2,…,n)
计算每个搜索单元的适应度
X*=最优搜索单元
while (t<最大迭代次数)
for (每个搜索单元)
更新a, A, C, l, p
if1 (p<0.5)
if2 (|A|<1)
根据最优个体更新当前搜索单元的位置
else if2 (|A|≥1)
随机选择一个搜索单元Xrand
根据Xrand更新当前搜索单元的位置
end if2
else if1 (p≥0.5)
根据最优个体螺旋更新当前搜索单元的位置
end if1
end for
检查是否有超出搜索范围的搜索单元,并进行修正
计算所有搜索单元的适应度
更新X*
t=t+1
end while
return X*