鲸鱼优化算法(Whale Optimization Algorithm,WOA)
鲸鱼优化算法(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的伪代码
- 初始化鲸鱼数量 N N N 和最大迭代次数 T T T 等
- 初始化种群: X i ( i = 1 , 2 , . . . , N ) X_i(i=1,2,...,N) Xi(i=1,2,...,N)
- While t < T t<T t<T do
- 检查是否有鲸鱼超出了搜索空间并进行修改
- 计算每条鲸鱼的饥饿值(适应度值),并找到吃的最饱的鲸鱼 X ∗ X^* X∗
- For i = 1 i=1 i=1 to N N N do
- 更新 a a a, A A A, C C C, l l l
- If r a n d < 0.5 rand<0.5 rand<0.5 then
- If ∣ A ∣ < 1 |A|<1 ∣A∣<1 then
- 使用公式(2)执行收缩包围策略
- Else
- 使用公式(9)执行搜索猎物策略
- End If
- Else
- 使用公式(6)执行螺旋更新策略
- End If
- End For
- t = t + 1 t=t+1 t=t+1
- End While
- 返回吃的最饱的鲸鱼(最优解) 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=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−xisin(∣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)相关推荐
- 两种鲸鱼优化算法 (whale optimization algorithm, WOA)及仿真实验——附代码
目录 摘要: 算法设计: WOA总体流程图如下: 增强型WOA(E-WOA) 仿真运行效果: 完整程序: 摘要: 鲸鱼优化算法 (whale optimization algorithm,WOA)是 ...
- 【WOA】鲸鱼优化算法(Whale Optimization Algorithm,WOA)理论分析与matlab性能仿真,使用CEC2017测试
一.WOA鲸鱼优化理论简介 WOA算法设计的既精妙又富有特色,它源于对自然界中座头鲸群体狩猎行为的模拟, 通过鲸鱼群体搜索.包围.追捕和攻击猎物等过程实现优时化搜索的目的.在原始的WOA中,提供了包围 ...
- 群智能优化算法之鲸鱼算法 Whale Optimization Algorithm (WOA) matlab版代码
MATLAB版 源码及相关工具箱下载地址:http://www.alimirjalili.com/WOA.html 页面如下: The Whale Optimization Algorithm (WO ...
- 多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)
一.鹈鹕优化算法 鹈鹕优化算法(Pelican Optimization Algorithm,POA)由Pavel Trojovský和Mohammad Dehghani 于2022年提出,该算法模拟 ...
- Adam优化算法(Adam optimization algorithm)
Adam优化算法(Adam optimization algorithm) Adam优化算法基本上就是将Momentum和RMSprop结合在一起. 初始化 2.在第t次迭代中,用mini-batch ...
- 【深度学习笔记】优化算法( Optimization Algorithm)
本文依旧是吴恩达<深度学习工程师>课程的笔记整理与拓展. 一.优化算法的目的与挑战 优化算法主要是用来加快神经网络的训练速度,使得目标函数快速收敛. 优化问题面临的挑战有病态解.鞍点.梯度 ...
- 瞪羚优化算法Gazelle optimization algorithm附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 鲸鱼优化算法(WOA)及其优秀变体(含MATLAB代码)
先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...
- Python实现WOA智能鲸鱼优化算法优化支持向量机回归模型(LinearSVR算法)项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 鲸鱼优化算法 (whale optimization algor ...
最新文章
- Docker 容器技术 — Compose 编排
- linux sqlserver_SQLServer和Oracle数据库相比谁更强?
- MySQL 打开federated存储引擎
- 【栈】栈的基本操作实现模板的总结
- spring cloud入门_Spring Boot 2.x基础教程:快速入门
- web 攻击靶机解题过程
- Laravel核心解读--Database(四) 模型关联
- 推荐一款接口文档在线管理系统-MinDoc
- FTP与SFTP两者有什么区别
- angular环境配置
- 大B与小b的区别(Bps与bps)
- wordpress更新主题时,显示无法连接到FTP服务器的问题解决
- drozer安全评估框架基础使用技法
- python打开ie浏览器_python+selenium启动IE浏览器
- 几种常用数据库的区别
- 逻辑 - 联言命题,选言命题
- 网页导航栏设计方法和技巧
- 11. kafka重试机制解读
- Tomcat启动startup.bat闪退普遍解决方案
- 红领巾小创客机器人活动计划_争当红领巾小创客--小创客 大梦想