鲸鱼优化算法(Whale Optimization Algorithm,WOA)

一、算法灵感

  鲸鱼优化算法(Whale Optimization Algorithm, WOA)是2016年提出的一种元启发式优化算法,其灵感来自于座头鲸的狩猎行为。通过模拟随机或最佳个体捕食猎物的狩猎行为,研究者发现鲸鱼的气泡网捕食法可以分为两种,并将它们命名为“向上螺旋策略”和“双螺旋策略”。“向上螺旋策略”中,座头鲸会先下潜约12米,然后开始在螺旋中制造泡泡,并向水面游去。“双螺旋策略”包括三个不同的环节:珊瑚环节、鲸尾拍打水面环节和捕获环节。在WOA算法中只模拟了“向上螺旋策略”,并使用螺旋模拟座头鲸的气泡网捕食法,如图1所示。
在这里插入图片描述

图1 鲸鱼的气泡网捕食示意图

二、算法介绍

2.1 初始化

  在WOA中,初始化鲸鱼种群位置的计算公式如下:
X i = l b + r a n d × ( u b − l b ) (1) {X_i} = lb + rand \times (ub - lb) \tag{1} Xi=lb+rand×(ublb)(1)式中, X i {X_i} Xi 为个体 i {i} i 的位置, l b {lb} lb u b {ub} ub 是搜索空间的下界和上界, r a n d {rand} rand 0 0 0 1 1 1 之间的随机数。

2.2 包围猎物阶段

  在现实中座头鲸能够识别猎物的位置并将其围成一圈。但由于在搜索空间中的最优位置是未知的,因此,WOA算法假设当前最佳候选解位置为目标猎物位置。在定义了目标猎物位置后,其他鲸鱼将进行尝试包围到目标猎物的位置。该过程的计算公式如下:
X ( t + 1 ) = X ∗ ( t ) − A × D (2) X\left( {t + 1} \right) = {X^*}\left( t \right) - A \times D \tag{2} X(t+1)=X(t)A×D(2) A = 2 × a × r a n d − a (3) A = 2 \times a \times rand - a \tag{3} A=2×a×randa(3) D = ∣ C × X ∗ ( t ) − X ( t ) ∣ (4) D = \left| {C \times {X^*}\left( t \right) - X\left( t \right)} \right| \tag{4} D=C×X(t)X(t)(4) C = 2 × r a n d (5) C = 2 \times rand \tag{5} C=2×rand(5)其中, t t t 为当前迭代次数, A A A C C C 为系数, X X X 是当前解的位置, X ∗ X^* X 是当前最优解的位置, a a a 在迭代过程中逐渐从 2 2 2 减小至 0 0 0
  图2(a)展示了式(2)在应对二维问题时,通过调整A和C可以到达当前最优解周围的不同位置。图2(b)展示了式(2)在应对三维问题时,通过随机变量 r a n d rand rand,可以达到当前最优解周围的不同位置。从而模拟了鲸鱼包围猎物。
在这里插入图片描述

图2 鲸鱼下一个可能的位置

2.3 气泡网捕食法

2.3.1 收缩包围

  通过降低 a a a 的值来实现收缩包围,由于 A A A 的范围为 [ − a , a ] [-a,a] [a,a]。因此,当a减小时, A A A 的波动范围也会缩小。图3(a)展示了在二维空间中 0 ≤ A ≤ 1 0\le A \le1 0A1 时从 ( X , Y ) (X, Y) (X,Y) ( X ∗ , Y ∗ ) (X^*, Y^*) (X,Y) 的所有可能位置。该机制本质上与包围猎物阶段相同。

2.3.2 螺旋更新

在这里插入图片描述

图3 鲸鱼的气泡网捕食示意图

  如图3(b)所示,该方法首先计算 ( X , Y ) (X, Y) (X,Y) ( X ∗ , Y ∗ ) (X^*, Y^*) (X,Y) 之间的距离,然后使用螺旋更新公式(6)来模拟鲸鱼的螺旋前进。
X ( t + 1 ) = D ∗ × e b l × cos ⁡ ( 2 π l ) + X ∗ ( t ) (6) X\left( {t + 1} \right) = {D^*} \times {e^{bl}} \times \cos \left( {2\pi l} \right) + {X^*}\left( t \right) \tag{6} X(t+1)=D×ebl×cos(2πl)+X(t)(6) D ∗ = ∣ X ∗ ( t ) − X ( t ) ∣ (7) {D^*} = \left| { {X^*}\left( t \right) - X\left( t \right)} \right| \tag{7} D=X(t)X(t)(7)其中, D ∗ D^* D 表示第 i i i 个个体与最优个体之间的距离, b b b 为常数,用于定义对数螺线的形状, l l l [ − 1 , 1 ] [-1, 1] [1,1] 之间的随机数。
  为了同时模拟鲸鱼的收缩包围机制和螺旋更新机制,假设这两种机制执行的概率相等,可以用数学表达式表示如下:
X ( t + 1 ) = { X ∗ ( t ) − A × D     , i f   r a n d < 0.5 D ∗ × e b l × cos ⁡ ( 2 π l ) + X ∗ ( t ) , o t h e r (8) X\left( {t + 1} \right) = \left\{ \begin{aligned} &{X^*}\left( t \right) - A \times D \qquad\qquad\quad\quad\ \ \ ,if\ rand<0.5 \cr &{D^*} \times {e^{bl}} \times \cos \left( {2\pi l} \right) + {X^*}\left( t \right) \quad,other \cr \end{aligned}\right. \tag{8} X(t+1)={ X(t)A×D   ,if rand<0.5D×ebl×cos(2πl)+X(t),other(8)

2.4 搜索猎物

在这里插入图片描述

图4 鲸鱼下一个可能的位置

  除了气泡网捕食法,座头鲸还会随机寻找猎物,同样通过改变 A A A 的值来实现。当 A A A 的绝对值大于 1 1 1 时,鲸鱼将会远离目标猎物,如图4所示。与气泡网捕食阶段相反,这里将随机选择一个个体的位置作为参考来更新下一个位置,而不是目前为止最优的个体位置。该阶段相当于探索阶段。数学公式如下:
X ( t + 1 ) = X r a n d − A × D (9) X\left( {t + 1} \right) = {X_{rand}} - A \times D \tag{9} X(t+1)=XrandA×D(9) D = ∣ C × X r a n d − X ∣ (10) D = \left| {C \times {X_{rand}} - X} \right| \tag{10} D=C×XrandX(10)其中, X r a n d X_{rand} Xrand为随机一条鲸鱼的位置。

2.5 WOA的伪代码

  1. 初始化鲸鱼数量 N N N 和最大迭代次数 T T T
  2. 初始化种群: X i ( i = 1 , 2 , . . . , N ) X_i(i=1,2,...,N) Xi(i=1,2,...,N)
  3. While t < T t<T t<T do
  4.   检查是否有鲸鱼超出了搜索空间并进行修改
  5.   计算每条鲸鱼的饥饿值(适应度值),并找到吃的最饱的鲸鱼 X ∗ X^* X
  6.   For i = 1 i=1 i=1 to N N N do
  7.     更新 a a a A A A C C C l l l
  8.     If r a n d < 0.5 rand<0.5 rand<0.5 then
  9.       If ∣ A ∣ < 1 |A|<1 A<1 then
  10.         使用公式(2)执行收缩包围策略
  11.       Else
  12.         使用公式(9)执行搜索猎物策略
  13.       End If
  14.     Else
  15.       使用公式(6)执行螺旋更新策略
  16.     End If
  17.   End For
  18.    t = t + 1 t=t+1 t=t+1
  19. End While
  20. 返回吃的最饱的鲸鱼(最优解) X ∗ X^* X

三、实验结果

WOA在23个经典测试函数(设置维度 d i m = 30 dim=30 dim=30)的F1、F5、F8中的收敛曲线,测试函数公式如下:

函数 公式 理论值
F1 F 1 ( x ) = ∑ i = 1 n x i 2 {F_1}(x) = \sum\nolimits_{i = 1}^n {x_i^2} F1(x)=i=1nxi2 0.00 0.00 0.00
F5 F 5 ( x ) = ∑ i = 1 n − 1 [ 100 ( x i + 1 − x i 2 ) 2 + ( x i − 1 ) 2 ] {F_5}(x) = \sum\nolimits_{i = 1}^{n - 1} {[100{ {({x_{i + 1}} - x_i^2)}^2} + { {({x_i} - 1)}^2}]} F5(x)=i=1n1[100(xi+1xi2)2+(xi1)2] 0.00 0.00 0.00
F8 F 8 ( x ) = ∑ i = 1 n − x i sin ⁡ ( ∣ x i ∣ ) {F_8}(x) = \sum\nolimits_{i = 1}^n { - {x_i}\sin (\sqrt {|{x_i}|} )} F8(x)=i=1nxisin(xi ) − 418.9829 × d i m -418.9829×dim 418.9829×dim

3.1 F1收敛曲线

3.2 F5收敛曲线

在这里插入图片描述

3.3 F8收敛曲线

请添加图片描述

四、参考文献

[1] Seyedali Mirjalili, Andrew Lewis. The Whale Optimization Algorithm[J]. Advances in Engineering Software. 2016, 95, 51-67.

猜你喜欢

转载自blog.csdn.net/jiaheming1983/article/details/129294210