适合做应用的算法-鲸鱼优化算法(WOA)详细原理-附matlab代码

news2024/11/25 18:40:30

鲸鱼优化算法 (Whale optimization Algorithm, WOA)是 2016 年由 Mirjalili 等提出的一种新型启发式搜索算法,该算法通过模仿座头鲸在海洋中的捕食行为, 对鲸鱼群体搜索、包围和攻击过程模拟实现来寻找最优解. 与传统的元启发式优化算法相比, 鲸鱼优化算法具有操作简单, 需要设置的参数少, 寻优能力强等优点 . 目前 WOA 已应用在特征规划、光伏发电短期预测、云计算任务调度、路径规划等多个领域。如果你还在为你的应用寻找合适的算法,那么不妨试试这个算法,这个算法一般能在较好的效果的基础上够很好地满足约束体条件和惩罚项。

图片

目前谷歌学术引用量达到10651次,基本上各种应用都有,使用非常广泛

图片

        目前在中国知网上相关的额文献为2104篇,尽管它是2016年提出的,但是并不是特别久远,属于现在应用比较多、流行的算法。

图片

可以看出,基本山各行各业都有一定的应用。

图片

基本原理:

    鲸鱼优化算法是模仿座头鲸独特的捕猎行为, 根据鲸鱼的捕食特点, 将鲸鱼的捕食行为分为三个阶段: 收缩包围,与泡网攻击, 随机搜索.

  1. 收缩包围

    在自然界中,鲸鱼可以找到猎物的位置并对它们进行包围捕食,WOA中假设当前种群的最优个体是猎物,种群中其他鲸鱼个体均向最优鲸鱼位置包围来更新其自身位置,其位置由公式(1)和(2)更新:

图片

图片

图片

2.气泡网

座头鲸在捕猎时,以螺旋运动的轨迹游向猎物,在WOA,鲸鱼个体通过公式(6)和(7)来更新位置:

图片

图片

3.开发阶段

鲸鱼优化算法的开发阶段包括收缩包围和气泡网攻击两个阶段。当A的绝对值小于1时,由于鲸鱼在缩小的包围圈内围绕猎物沿着螺旋轨迹游动,因此鲸鱼有50%的可能选择包围猎物,还有50的可能会选择气泡网攻击,这个过程通过公式(8)得到:

图片

4.探索阶段(随机搜索)

当A的绝对值大于等于1时,鲸鱼根据其位置随机搜索和捕食,在WOA中,鲸鱼通过公式(9)和(10)更新其位置:

图片

图片

执行过程:

图片

在cec2005上运行,

F1:

图片

F3:

图片

F5:

图片

F7:

图片

matlab代码,微信公众号:算法仓库,后台回复:WOA鲸鱼

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

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

相关文章

3D透视图模型转模型变形?---模大狮模型网

3D建模是数字艺术和设计领域中的重要技术,它可以为我们带来丰富多彩的视觉体验和创意表达。在本文中,我们将探讨一个引人注目的话题:3D透视图中模型转换是否会导致变形?通过深入探讨这个问题,我们希望能够帮助您更好地理解在3D建…

Docker安装文档

Docker安装文档 小有所得,生活便充满希望的微光;小有所望,未来便值得期待。小有知足,幸福便如影随形;小有可期,每一天都充满希望。在今日小满之际,感受这小小确幸,心中满是爱意&…

跟TED演讲学英文:Do schools kill creativity by Sir Ken Robinson

Do schools kill creativity? Link: https://www.ted.com/talks/sir_ken_robinson_do_schools_kill_creativity Speaker: Sir Ken Robinson Date: February 2006 文章目录 Do schools kill creativity?IntroductionVocabularySummaryTranscriptAfterword Introduction Sir…

FTP介绍

FTP 1、FTP—文件传输协议 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输&…

攻防世界-mobile-easy-app详解

序言 这道题网上很多分析,但是分析的都是arm版本的,我选了arm64的来分析,arm64相比arm难度高一些,因为arm64编译器搞了inline优化,看起来略抽象 分析 这道题逻辑很简单,输入flag然后一个check函数验证&a…

av_dump_format经验分析,FFmpeg获取媒体文件总时长(FLV获取总时长的误区)

播放器有个功能,当用户打开视频时,需要读取媒体文件的总时长等信息,不巧的时,获取FLV时总失败,下面来具体分析下FLV和MP4获取总时长的原因和区别: 播放器有个获取MediaInfo的接口,功能如下&am…

9.5 Go语言入门(条件语句和循环语句)

Go语言入门(条件语句和循环语句) 目录四、条件语句和循环语句1. 条件语句1.1 if 语句1.2 if-else 语句1.3 if-else if-else 语句1.4 带初始化语句的 if1.5 switch 语句1.6 带条件的 switch1.7 多个条件的 case 2. 循环语句2.1 基本 for 循环2.2 省略初始…

C语言简要(四)

有没有好心师傅教教孩子逆向和pwn啊꒰๑ꀾ๑꒱ 数组 <类型> 变量名称[元素数量]; int grades[100]; double weight[20]; 元素数量必须是整数 C99之前&#xff1a;元素数量必须是编译时刻确定的字面量 是一种容器&#xff0c;特点是&#xff1a; 其中所以的元素具有相同的…

debian nginx upsync consul 实现动态负载

1. consul 安装 wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_r…

sh控制台输入文字多行 按“# ꧂ ꧁”结束

如果在Unix shell中输入多行文字&#xff0c;那么这样操作&#xff1a; 1. 打开您的终端&#xff08;Terminal&#xff09;。 2. 输入您的文字&#xff0c;每行文字后按回车键。 3. 当您完成输入所有文字后&#xff0c;输入“# ꧂ ꧁”然后按回车键&#xff0c;表示输入结束。…

人脸识别:基于卷积神经网络(CNN)分类思想的人脸识别系统

本文来自公众号 “AI大道理” —————— 项目配套视频课程&#xff1a; 平台&#xff1a;荔枝微课 链接&#xff1a;十方教育 项目地址&#xff1a;https://github.com/AIBigTruth/CNN_faces_recognition 之前很多人来询问这个项目怎么做&#xff0c;代码跑不起来&#…

Window GDI+ API有BUG?GetBounds测不准?

文章目录 GraphicsPath的GetBounds测不准&#xff1f;方法一&#xff1a;GetBounds ()实战 方法二&#xff1a;GetBounds(Matrix)实战 GraphicsPath的GetBounds测不准?实战 .NET 版本的问题&#xff1f;C也一样&#xff0c;不是.NET的问题怀疑人生MiterLimit惹得祸完美结果结束…

【Vue】Vue2中的Vuex

目录 Vuex介绍Vuex 中的核心概念 在vue2中使用Vuex安装 Vuex创建一个 Vuex Store在 Vue 实例中使用 Vuex编写 Vuex 的 state、mutations 和 actions在组件中使用 Vuex Vuex的核心State组件中获取 Vuex 的状态mapState 辅助函数对象展开运算符 Getter基本使用示例 通过属性访问通…

[协议]stm32读取AHT20程序示例

AHT20温度传感器使用程序&#xff1a; 使用i2c读取温度传感器数据很简单&#xff0c;但市面上有至少两个手册&#xff0c;我这个对应的手册贴出来&#xff1a; main: #include "stm32f10x.h" // Device header #include <stdint.h> #includ…

MQTT到串口的转发(node.js)

本文针对以下应用场景&#xff1a;已有通过串口通信的设备或软件&#xff0c;想要实现跨网的远程控制。 node.js安装 从 Node.js — Run JavaScript Everywhere下载LTS版本安装包&#xff0c;运行安装程序。&#xff08;傻瓜安装&#xff0c;按提示点击即可&#xff09; 设置环…

RabbitMQ - SimpleMessageListenerContainer的实现逻辑

RabbitMQ - SimpleMessageListenerContainer的实现逻辑 Queue&#xff08;队列&#xff09;&#xff1a;在 RabbitMQ 中用于存储消息的数据结构。生产者将消息发送到队列中&#xff0c;而消费者从队列中接收消息。 Connection&#xff08;连接&#xff09;&#xff1a;连接是应…

【代码随想录 二叉树】二叉树前序、中序、后序遍历的迭代遍历

文章目录 1. 二叉树前序遍历&#xff08;迭代法&#xff09;2. 二叉树后序遍历&#xff08;迭代法&#xff09;3. 二叉树中序遍历&#xff08;迭代法&#xff09; 1. 二叉树前序遍历&#xff08;迭代法&#xff09; 题目连接 &#x1f34e;因为处理顺序和访问顺序是一致的。所…

小程序开发的基本用法

一:基本组件 1.view和scroll-view view等同于div,view写在小程序显示和div一样的效果. srcoll-view scroll-x/scroll-y是div能移动的.但是小程序没有显示大的划的. 且scroll-view才能实现这个,要这个组件且要属性,内部基本结构才能实现. view没有属性实现. 2.swiper和swi…

【Centos7+JDK1.8】Jenkins安装手册

一、安装环境 Centos7 JDK1.8 Jenkins-2.346.3 JDK1.8安装以及网络配置等 自行搜索资料解决。 二、卸载历史安装的Jenkins&#xff0c;直接全部复制粘贴下面的命令 service jenkins stop yum -y remove jenkins rpm -e jenkins rpm -ql jenkins rm -rf /etc/sysconfig/je…

Vue从入门到实战Day12

一、Pinia快速入门 1. 什么是Pinia Pinia是Vue的最新状态管理工具&#xff0c;是Vuex的替代品 1. 提供更加简单的API&#xff08;去掉了mutation&#xff09; 2. 提供符合组合式风格的API&#xff08;和Vue3新语法统一&#xff09; 3. 去掉了modules的概念&#xff0c;每一…