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

news2024/11/17 9:51:36

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

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

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

00 目录

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

01 鲸鱼优化算法原理

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

在这里插入图片描述

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

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

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

搜索觅食机制的数学定义为:
在这里插入图片描述

式中: X⃗ rand(t)是从当前鲸鱼群体中随机选取的一个鲸鱼个体位置向量, X⃗ (t)是当前的鲸鱼个体位置向量, |C⃗X⃗ rand(t) −X⃗ (t)|表示当前鲸鱼个体和随机选取鲸鱼个体之间的距离向量,系数向量A⃗和C⃗的定义为:在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

图2 WOA流程图

02 代码目录

在这里插入图片描述

MATLAB
在这里插入图片描述

Python
在这里插入图片描述

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

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

部分代码:

MATLAB:
在这里插入图片描述

Python:

在这里插入图片描述

03 算法性能

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

在这里插入图片描述

在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.

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

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么亚马逊速卖通等跨境卖家都选择自养号测评,有哪些优势

自养号测评是一种对于跨境电商卖家来说非常重要的运营手段。通过自养号测评,卖家可以快速增加产品的销量、评论数量,并提升在平台中的排名,从而促进产品的流量转化和订单增长。自养号测评与传统的机刷方式不同,它通过伪装设备参数…

Linux TCP 通信并发

多进程 客户端 #include <stdio.h> #include <arpa/inet.h> #include <unistd.h> #include <string.h> #include <stdlib.h> int main() {//创建套接字int lfd socket(AF_INET, SOCK_STREAM, 0);if(lfd -1) {perror("socket");exi…

突发,美国再将42家中企列入实体名单 | 百能云芯

2023年10月6日&#xff0c;美国商务部工业和安全局&#xff08;BIS&#xff09;宣布对实体名单进行了更新&#xff0c;涉及到新增了49个实体。这些实体来自七个不同的国家&#xff0c;其中42家位于中国&#xff0c;其余七家分别位于爱沙尼亚、芬兰、德国、印度、土耳其、阿拉伯…

知识图谱系列Paper 1:Open-CyKG: An Open Cyber Threat Intelligence Knowledge Graph

向前进&#xff01; 一、摘要 Instant analysis of cybersecurity reports is a fundamental challenge for security experts as an immeasurable amount of cyber information is generated on a daily basis, which necessitates automated information extraction tools t…

英文论文实例赏析——如何写前言?

写作与实验、统计一样重要 研究生的学习往往会遵循这样的过程&#xff1a;实验——数据分析——写作。虽然写作是最后进行的&#xff0c;但写作的学习这应该和实验的学习、数据分析的学习保持同步&#xff0c;因为写作与统计和实验技能一样&#xff0c;是科研工具箱的必…

接口测试总结

一、了解一下HTTP与RPC 1. HTTP&#xff08;HyperText Transfer Protocol) 说明&#xff1a;超文本传输协议&#xff0c;是互联网上应用最为广泛的一种网络协议。 优点&#xff1a;就是简单、直接、开发方便&#xff0c;利用现成的http协议进行传输。 流程图&#xff1a; 2. R…

C++学习Day3:面向对象OOP、抽象

OOP特点&#xff1a;封装、继承、duotai 接口的好处&#xff1a;Communication & Protection&#xff08;向外界隐藏实现&#xff09; 抽象 类的析构函数 析构函数的名称与类的名称是完全相同的&#xff0c;只是在前面加了个波浪号&#xff08;~&#xff09;作为前缀&am…

C++ 提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数

#include <iostream>using namespace std;int main() {string str;cout << "请输入一个字符串>>>" << endl;getline(cin, str);int size str.size();int xiaoxie 0;int daxie 0;int shuzi 0;int kongge 0;int qita 0;for(int i0;i < …

厂商大盘点,让我们来看看国内有哪些RPA厂商?RPA厂商有没有开箱即用的产品呢?

一、什么是RPA&#xff1f; RPA(Robotic Process Automation)机器人流程自动化&#xff0c;指用软件机器人实现业务流程的自动化&#xff0c;以“模拟人工操作”的方式进行业务操作帮助企业处理重复的、规则固定的、繁琐的流程作业。 二、国内有哪些RPA厂商 我这边根据IDC最新…

【逐步剖C++】-第三章-C++内存管理

一、C/C内存分布 C/C的内存分布主要分为如下这么四个区域&#xff1a; 1、栈区&#xff08;stack&#xff09;&#xff1a;在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器…

电机控制、运动控制、过程控制三者关系

1. 电机控制 { 单电机参数&#xff1a;位置/角位移(方向)环、速度环(加减速、最大速度、启停速)、扭/转矩环三个控制环 } Motor Control 主要关注的是&#xff0c;控制单个电机的转距(torque control mode)、速度(speed control mode)、位置(position control mode)中的一个或…

自学(黑客)技术方法————网络安全

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…

若依分离版-前端使用

1 执行 npm install --registryhttps://registry.npm.taobao.org&#xff0c;报错信息如下 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: ktg-mes-ui3.8.2 npm ERR! Found: vue2.6.12 npm ERR! node_modu…

102-视频与网络应用篇-环境搭建

1.开发环境 本栏目开发所采集的操作系统是windows10Vmware上安装的Ubuntu18&#xff0c;关于Vmware和Ubuntu操作系统的安装过程本文不详细描述&#xff0c;具体安装步骤大家可以自己百度&#xff0c;有很丰富的安装教程。 本栏目查看资料、代码编辑、均在windows端&#xff0c;…

Unittest接口自动化测试

我又来了&#xff0c;来分享年前的unittest接口自动化实战啦。这次自动化接口框架比较简单&#xff0c;但是五脏俱全。(注:项目是针对我们公司内部系统的测试&#xff0c;我就不分享链接了。&#xff09; 项目简介 项目名称&#xff1a;****名片系统 项目目的&#xff1a;实…

wails window下打包安装包

官方文档https://wails.io/zh-Hans/docs/guides/windows-installer 版本&#xff1a;Wails CLI v2.6.0 问题 打包命令 wails build 打包出来的exe文件是直接打开的&#xff0c;不能包含程序安装功能 解决办法 1、chocolatey 安装包管理器工具安装 管理员身份打开powershell&a…

基于旗鱼优化的BP神经网络(分类应用) - 附代码

基于旗鱼优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于旗鱼优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.旗鱼优化BP神经网络3.1 BP神经网络参数设置3.2 旗鱼算法应用 4.测试结果&#xff1a;5.M…

vue解决:Parsing error: No Babel config file detected for ....

报错信息 Parsing error: No Babel config file detected for C:\Users\Admin\Desktop\shabi\work\src\App.vue. Either disable config file checking with requireConfigFile: false, or configure Babel so that it can find the config files. 分析错误&#xff1a;没有检测…

Pyside6 安装和简单界面开发

Pyside6 安装和简单界面开发 Pyside6介绍Pysied6开发环境搭建Python安装Pysied6安装 Pyside6界面开发简单界面设计界面设计界面编译 编写界面初始化代码软件打包 Pyside6介绍 对于Python的GUI开发来说&#xff0c;Python自带的可视化编程模块的功能较弱&#xff0c;PySide是跨…

嵌入式处理趋势,第一部分:超集成MCU

当今的嵌入式微控制器&#xff08;MCU&#xff09;是协同和创新的惊人例子。单个芯片上可容纳30,000至2百万个门&#xff0c;直到最近&#xff0c;各种集成的组件和模块都被视为独立的高级IC。 例如&#xff0c;当前典型的MCU设备&#xff08;下面的图1&#xff09;可能包含以…