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

  • 一、算法灵感
  • 二、算法介绍
    • 2.1 初始化
    • 2.2 包围猎物阶段
    • 2.3 气泡网捕食法
      • 2.3.1 收缩包围
      • 2.3.2 螺旋更新
    • 2.4 搜索猎物
    • 2.5 WOA的伪代码
  • 三、实验结果
    • 3.1 F1收敛曲线
    • 3.2 F5收敛曲线
    • 3.3 F8收敛曲线
  • 四、参考文献

一、算法灵感

  鲸鱼优化算法(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×(ub−lb)(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×rand−a(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 0≤A≤1 时从 ( 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)=Xrand​−A×D(9) D = ∣ C × X r a n d − X ∣ (10) D = \left| {C \times {X_{rand}} - X} \right| \tag{10} D=∣C×Xrand​−X∣(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=1n​xi2​ 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=1n−1​[100(xi+1​−xi2​)2+(xi​−1)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=1n​−xi​sin(∣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.

鲸鱼优化算法(Whale Optimization Algorithm,WOA)相关推荐

  1. 两种鲸鱼优化算法 (whale optimization algorithm, WOA)及仿真实验——附代码

    目录 摘要: 算法设计: WOA总体流程图如下: 增强型WOA(E-WOA) 仿真运行效果: 完整程序: 摘要: 鲸鱼优化算法 (whale optimization algorithm,WOA)是 ...

  2. 【WOA】鲸鱼优化算法(Whale Optimization Algorithm,WOA)理论分析与matlab性能仿真,使用CEC2017测试

    一.WOA鲸鱼优化理论简介 WOA算法设计的既精妙又富有特色,它源于对自然界中座头鲸群体狩猎行为的模拟, 通过鲸鱼群体搜索.包围.追捕和攻击猎物等过程实现优时化搜索的目的.在原始的WOA中,提供了包围 ...

  3. 群智能优化算法之鲸鱼算法 Whale Optimization Algorithm (WOA) matlab版代码

    MATLAB版 源码及相关工具箱下载地址:http://www.alimirjalili.com/WOA.html 页面如下: The Whale Optimization Algorithm (WO ...

  4. 多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)

    一.鹈鹕优化算法 鹈鹕优化算法(Pelican Optimization Algorithm,POA)由Pavel Trojovský和Mohammad Dehghani 于2022年提出,该算法模拟 ...

  5. Adam优化算法(Adam optimization algorithm)

    Adam优化算法(Adam optimization algorithm) Adam优化算法基本上就是将Momentum和RMSprop结合在一起. 初始化 2.在第t次迭代中,用mini-batch ...

  6. 【深度学习笔记】优化算法( Optimization Algorithm)

    本文依旧是吴恩达<深度学习工程师>课程的笔记整理与拓展. 一.优化算法的目的与挑战 优化算法主要是用来加快神经网络的训练速度,使得目标函数快速收敛. 优化问题面临的挑战有病态解.鞍点.梯度 ...

  7. 瞪羚优化算法Gazelle optimization algorithm附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  8. 鲸鱼优化算法(WOA)及其优秀变体(含MATLAB代码)

    先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...

  9. Python实现WOA智能鲸鱼优化算法优化支持向量机回归模型(LinearSVR算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 鲸鱼优化算法 (whale optimization algor ...

最新文章

  1. Docker 容器技术 — Compose 编排
  2. linux sqlserver_SQLServer和Oracle数据库相比谁更强?
  3. MySQL 打开federated存储引擎
  4. 【栈】栈的基本操作实现模板的总结
  5. spring cloud入门_Spring Boot 2.x基础教程:快速入门
  6. web 攻击靶机解题过程
  7. Laravel核心解读--Database(四) 模型关联
  8. 推荐一款接口文档在线管理系统-MinDoc
  9. FTP与SFTP两者有什么区别
  10. angular环境配置
  11. 大B与小b的区别(Bps与bps)
  12. wordpress更新主题时,显示无法连接到FTP服务器的问题解决
  13. drozer安全评估框架基础使用技法
  14. python打开ie浏览器_python+selenium启动IE浏览器
  15. 几种常用数据库的区别
  16. 逻辑 - 联言命题,选言命题
  17. 网页导航栏设计方法和技巧
  18. 11. kafka重试机制解读
  19. Tomcat启动startup.bat闪退普遍解决方案
  20. 红领巾小创客机器人活动计划_争当红领巾小创客--小创客 大梦想

热门文章

  1. 如何规避量化交易接口带给我们的风险?
  2. Vs2019安装---QT vs TOOLS的方法及出错原因
  3. 2021年高级保安员模拟试题及答案
  4. 家里电脑做服务器没有显示器,服务器主机怎么打开没有显示器
  5. JAVA编程入门——计算机硬件
  6. 网站高并发解决方案LVS
  7. 人生太短,人生太短,人生太短
  8. Win11如何修改用户名?
  9. 八位二进制乘法器VHDL
  10. 基于总线技术的武器装备测试系统