超详细 | 鲸鱼优化算法原理及其实现(Matlab/Python)

这篇具有很好参考价值的文章主要介绍了超详细 | 鲸鱼优化算法原理及其实现(Matlab/Python)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

鲸鱼优化算法(whale optimization algorithm,WOA)是由Mirjalili和Lewis[1]于2016年提出的一种新型群体智能优化搜索方法,它源于对自然界中座头鲸群体狩猎行为的模拟,该算法整个过程包含搜索觅食、收缩包围和螺旋更新位置三个阶段。

鲸鱼优化算法的三个种群更新机制相互独立,因此其寻优阶段的全局探索和局部开发过程得以分别运行及控制。此外, 鲸鱼优化算法不需要人为的设置各种控制参数值, 提高了算法的使用效率并降低了应用难度。与其它群体智能优化算法相比, WOA算法结构新颖, 控制参数少,在许多数值优化和工程问题的求解中表现出较好的寻优性能,优于蚁群算法和粒子群算法等智能优化算法[1-2]。

下面对其原理及其编程实现作详细阐述,(ps:最近我也在学习Python,因此在编程实现中,我加入了Python的实现,写的不好请原谅,希望对朋友们有帮助)

00 目录

1 鲸鱼优化算法原理
2 代码目录
3 算法性能
4 源码获取

01 鲸鱼优化算法原理

鲸鱼优化算法模拟鲸鱼的泡泡网捕食行为。这种攻击是座头鲸包围猎物时,沿着螺旋路径形成独特气泡来完成的[3],如图1所示。

鲸鱼优化算法,MATLAB,算法,matlab,python

图1 鲸鱼的泡泡网觅食行为

基于上述鲸鱼的泡泡网觅食行为,Mirjalili和Lewis 衍生出了鲸鱼优化算法。

WOA 算法假设鲸鱼捕捉的猎物为最优解,鲸鱼所在位置为潜在解。每次迭代时,通过随机数 p的取值和系数向量 A 的模来决定每头鲸鱼的位置更新策略(更新策略即三种更新机制)。随着迭代的进行,鲸鱼种群不断向最优解靠拢。WOA 算法的3种种群更新机制中,

搜索觅食机制的数学定义为:
鲸鱼优化算法,MATLAB,算法,matlab,python

式中: X⃗ rand(t)是从当前鲸鱼群体中随机选取的一个鲸鱼个体位置向量, X⃗ (t)是当前的鲸鱼个体位置向量, |C⃗X⃗ rand(t) −X⃗ (t)|表示当前鲸鱼个体和随机选取鲸鱼个体之间的距离向量,系数向量A⃗和C⃗的定义为:鲸鱼优化算法,MATLAB,算法,matlab,python

式中控制参数向量⃗a随着迭代次数的增加从2线性减小到0, ⃗r是一个分布于[0, 1]之间的随机向量。

收缩包围机制的数学模型定义如下:

鲸鱼优化算法,MATLAB,算法,matlab,python

式中: X⃗ best(t)是当前鲸鱼群体中目标函数值最优的 鲸鱼个体位置向量; A⃗ |C⃗ X⃗ best(t) − X⃗ (t)|为当前鲸鱼个体的包围步长, A⃗越小时鲸鱼游走的步长越小。

螺旋更新位置阶段, 其数学模型可表示为:

鲸鱼优化算法,MATLAB,算法,matlab,python

式中: |X⃗ best(t) − X⃗ (t)|表示当前鲸鱼个体与最佳位置鲸鱼之间的距离向量; 常量系数b决定了鲸鱼个体螺旋前进时的螺旋线形状, b取值为1时即为普通的对数螺旋线, l是[−1, 1]之间的随机数. WOA算法中鲸鱼个体位置向量X⃗ (t)的每一个分量在种群更新时均独立进行。

综上所述,基本WOA算法流程图如下:

鲸鱼优化算法,MATLAB,算法,matlab,python

图2 WOA流程图

02 代码目录

鲸鱼优化算法,MATLAB,算法,matlab,python

MATLAB
鲸鱼优化算法,MATLAB,算法,matlab,python

Python
鲸鱼优化算法,MATLAB,算法,matlab,python

包含MATLAB和Python的程序、乱码解决以及一篇参考文献

考虑到很多同学获取代码后有乱码(matlab版本问题),可以将matlab版本改为2020或2021,或使用乱码解决文件夹中的txt文件即可。

部分代码:

MATLAB:
鲸鱼优化算法,MATLAB,算法,matlab,python

Python:

鲸鱼优化算法,MATLAB,算法,matlab,python

03 算法性能

采用CEC的测试函数F10来初步检验其寻优性能,F10的数学表达式如下:

鲸鱼优化算法,MATLAB,算法,matlab,python

在MATLAB中执行程序结果如下:
鲸鱼优化算法,MATLAB,算法,matlab,python

在Python中执行程序结果如下:

鲸鱼优化算法,MATLAB,算法,matlab,python

04 源码获取

在公众号(KAU的云实验台)回复: WOA (大写字母)

鲸鱼算法同样也有许多针对性的改进方法,作者在后面也会进行介绍和实现。

参考文献

[1]MIRJALILI S,LEWIS A. The whale optimization algorithm[J].Advances in Engineering Software,2016,95:51一 67.

[2] BUI D T,ABDULLAHI M M,GHAREH S,et al. Fine-tuning of neural computing using whale optimization algorithm for predicting compressive strength of concrete[J]. Engineering with Computers,2021,37(1):701- 712.

[3] Watkins W A, Schevill WE.Aerial observation of feeding behavior in four baleen whales: Eubalaena glacialis,Balaenoptera borealis,Megaptera novaeangliae,and Balaenoptera physalus[J]. Journal of Mammalogy,1979,60(1): 155-163.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。文章来源地址https://www.toymoban.com/news/detail-763153.html

到了这里,关于超详细 | 鲸鱼优化算法原理及其实现(Matlab/Python)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包