鲸鱼优化算法
鲸鱼群体
鲸鱼是世界上最大的哺乳动物,是有情感的高智商动物,大部分鲸鱼被认为是食肉动物且群居。座头鲸是最大的长须鲸之一,它们使用一种独特的捕猎方式来猎食虾群和鱼群,被称为泡泡网(Bubble-net)捕猎方式,如图4、图5所示。它们在捕食时以螺旋式逼近猎物,吐出气体形成气泡,迫使鱼群聚集以方便捕食。鲸鱼优化算法便是受启发于鲸鱼(特别是座头鲸)的捕猎方式。
图4:“泡泡网”捕猎示意图,引用自论文《The whale optimization algorithm》
图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 ⋅ D D ′ ⋅ e b l ⋅ c o s ( 2 π l ) + X ∗ ( t ) p < 0 . 5 p ≥ 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所示。
图6:鲸鱼优化算法搜素机制,(a)缩小包围机制(b)螺旋更新位置,引用自论文《The whale optimization algorithm》
鲸鱼优化算法的伪代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 初始化鲸鱼种群 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*