鲸鱼优化算法

鲸鱼群体

鲸鱼是世界上最大的哺乳动物,是有情感的高智商动物,大部分鲸鱼被认为是食肉动物且群居。座头鲸是最大的长须鲸之一,它们使用一种独特的捕猎方式来猎食虾群和鱼群,被称为泡泡网(Bubble-net)捕猎方式,如图4、图5所示。它们在捕食时以螺旋式逼近猎物,吐出气体形成气泡,迫使鱼群聚集以方便捕食。鲸鱼优化算法便是受启发于鲸鱼(特别是座头鲸)的捕猎方式。

图4:“泡泡网”捕猎示意图,引用自论文《The whale optimization algorithm》

图5:座头鲸捕猎场景

模型与算法

鲸鱼优化算法与灰狼优化算法相似,都采用对目标位置先进行包围再捕食的策略。不同点在于鲸鱼优化算法直接将当前最优解作为包围中心,且鲸鱼优化算法的捕猎逼近过程分为两种,第一种逐步降低距离,另一种以螺旋形逼近。鲸鱼优化算法的基本位置更新方式与灰狼优化算法相同,见灰狼优化算法公式(1)至(4)。

鲸鱼优化算法基于一个随机数p∈[0,1]来决定当前搜索单元的行动,有50%的概率直接根据目标位置进行移动,有50%的概率以螺旋线逼近猎物。鲸鱼在捕猎时的行为被定义为:

X(t+1)={X(t)ADDeblcos(2πl)+X(t)p<0.5p0.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)\vec{X}^*(t)可能是当前最优解的位置也可能是一个随机搜索单元的位置,取决于A|\vec{A}|的值,b决定螺旋线形状,l为随机值∈[-1,1],D=X(t)X(t)\vec{D'}=|\vec{X}^*(t)-\vec{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*