SCI二区|鲸鱼优化算法(WOA)原理及实现【附完整Matlab代码】

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
    • 3.结果展示
    • 4.参考文献
    • 5.代码获取


1.背景

2016年,S Mirjalili受到自然界座头鲸社会行为启发,提出了鲸鱼优化算法(Whale Optimization Algorithm, WOA)。

在这里插入图片描述
在这里插入图片描述

2.算法原理

WOA模拟了座头鲸的社会行为,主要包括包围猎物、随机搜索、螺旋捕猎阶段。

在这里插入图片描述

2.1算法思想

包围猎物

鲸鱼优化算法假设当前种群中最优解为猎物位置或已接近目标猎物的位置,种群中其他鲸鱼个体根据当前最优解更新自身位置:
X ( i + 1 ) = X b e s t ( i ) − A ⋅ D (1) X\left(i+1\right)=X_{best}\left(i\right)-A\cdot D\tag{1} X(i+1)=Xbest(i)AD(1)
D为当前鲸鱼与最优解之间的距离:
D = ∣ C ⋅ X b e s t ( i ) − X ( i ) ∣ (2) D=\begin{vmatrix}C\cdot X_{best}\begin{pmatrix}i\end{pmatrix}-X\begin{pmatrix}i\end{pmatrix}\end{vmatrix}\tag{2} D= CXbest(i)X(i) (2)
A和C为搜索控制系数:
A = a ( 2 k − 1 ) C = 2 k (3) \begin{aligned}&A=a\bigl(2k-1\bigr)\\&C=2k \end{aligned}\tag{3} A=a(2k1)C=2k(3)
收敛因子:
a = 2 − 2 i / i max ⁡ (4) a=2-2i / i_{\max}\tag{4} a=22i/imax(4)

随机搜索

鲸鱼种群根据自己当前的位置、全局最优解和一定的随机性来更新自己的位置,使得鲸鱼能够在搜索空间中以一定的概率跳出局部最优解,从而提高搜索到全局最优解的可能性:
X ( i + 1 ) = X r a n d ( i ) − A ⋅ D (5) X\left(i+1\right)=X_{rand}\left(i\right)-A\cdot D\tag{5} X(i+1)=Xrand(i)AD(5)
Xrand 为当前进行随机搜索的鲸鱼位置,D表述为:
D = ∣ C ⋅ X r a n d ( i ) − X ( i ) ∣ (6) D=\left|C\cdot X_{rand}\left(i\right)-X\left(i\right)\right|\tag{6} D=CXrand(i)X(i)(6)

螺旋捕猎

当鲸鱼靠近全局最优解时,它们会以螺旋的方式在局部范围内进行搜索。螺旋行为的策略是在当前位置和全局最优解的位置之间生成一个螺旋路径,然后鲸鱼沿着这个路径进行移动:
X ( i + 1 ) = D ⋅ e b l ⋅ cos ⁡ ( 2 π l ) + X b e s t ( i ) (7) X\left(i+1\right)=D\cdot e^{bl}\cdot\cos\left(2\pi l\right)+X_{best}\left(i\right)\tag{7} X(i+1)=Deblcos(2πl)+Xbest(i)(7)
其中,b 为定义螺旋捕猎的常量系数,l为在[-1,1]随机数,D更新为:
D = ∣ X b e s t ( i ) − X ( i ) ∣ (8) D=\begin{vmatrix}X_{best}\begin{pmatrix}i\end{pmatrix}-X\begin{pmatrix}i\end{pmatrix}\end{vmatrix}\tag{8} D= Xbest(i)X(i) (8)

在这里插入图片描述
在这里插入图片描述

伪代码

在这里插入图片描述

3.结果展示

在这里插入图片描述
在这里插入图片描述

4.参考文献

[1] Mirjalili S, Lewis A. The whale optimization algorithm[J]. Advances in engineering software, 2016, 95: 51-67.

5.代码获取

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于FPGA对 DDR4 (MT40A256M16)的读写控制 I

关于FPGA对 DDR4 (MT40A256M16)的读写控制 I 语言 :Verilg HDL EDA工具:ISE、Vivado 关于FPGA对 DDR4 (MT40A256M16)的读写控制 I一、引言二、DDR4的特性(MT40A256M16)(1…

计算机msvcp100.dll丢失怎么办,分享5种亲测有效的解决方法

电脑已经成为我们生活中不可或缺的一部分。然而,在使用电脑的过程中,我们常常会遇到一些问题,其中之一就是电脑提示缺失msvcp100.dll。这个问题可能会让我们感到困惑和烦恼,但是只要我们了解其原因并采取相应的解决方法&#xff0…

汇聚荣科技有限公司实力强吗?

汇聚荣科技有限公司实力强吗?在当今快速发展的科技行业中,公司的实力往往决定了其市场竞争力和发展前景。对于汇聚荣科技有限公司而言,其是否具备强大的实力,不仅关系到自身的发展,也影响着投资者和合作伙伴的选择。因此&#xf…

A股上市公司MSCI ESG评级面板数据(2017-2023)

数据简介:MSCI ESG(Environmental, Social, and Governance)评级是由 MSCI Inc. 提供的一项服务,旨在评估公司在环境、社会和治理方面的表现。MSCI 是一家全球领先的投资研究和指数提供商,其 ESG 评级被广泛用于评估企…

ArrayList浅析

目录 一、ArrayList源码1.1 迭代器1.1.1 Itr源码浅析1.1.2 ListItr源码浅析 1.2 常用方法1.3 System.arraycopy1.4 ArrayList 的创建方式 二、引申问题2.1 ArrayList的大小是如何增加的?2.2 什么情况下你会使用ArrayList2.3 在索引中ArrayList的增加或者删除某个对象…

编译原理:语法分析

目录 引言上下文无关文法 CFG: Context-Free Grammar定义推导方法最左推导和最右推导 分析树分析树->抽象语法树常见的上下文无关文法文法设计二义性文法扩展巴科斯范式:EBNF extended Backus Normal Form 文法和语言分类相关术语直接推导推导*推导句型、句子、语…

Kettle 数据抽取工具使用教程:从入门到实战

一、简介 Kettle 是 Pentaho Data Integration (PDI) 的一个组成部分,是一个开源的数据集成工具。它被广泛用于数据的抽取、转换和加载 (ETL) 过程。Kettle 提供了一个易于使用的图形界面,可以轻松设计和执行 ETL 流程。 github 源码地址:ht…

机器学习第四十三周周报 aGNN

文章目录 week43 aGNN摘要Abstract1. 题目2. Abstract3. 网络架构3.1 aGNN3.1.1 输入与输出模块3.1.2 嵌入层3.1.3编码器解码器模块:带有多头注意力层的GCN 3.2 可释性模型:SHAP 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 实验区域以及场…

Golang免杀-分离式加载器(传参)AES加密

目录 enc.go 生成: dec.go --执行dec.go...--上线 cs生成个c语言的shellcode. enc.go go run .\enc.go shellcode 生成: --key为公钥. --code为AES加密后的数据, ----此脚本每次运行key和code都会变化. package mainimport ("bytes""crypto/aes"&…

Linux - 复盘一次句柄数引发的故障

文章目录 Pre(内核、用户、进程)句柄数设置问题 shell修复 Pre Linux - 深入理解/proc虚拟文件系统:从基础到高级 (内核、用户、进程)句柄数设置 在Linux系统中,进程打开的最大句柄数可以通过多种方式配置…

立创·天空星开发板-GD32F407VE-Timer

本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。 立创天空星开发板-GD32F407VE-Timer 定时器基本定时器示例 定时器 定时器是嵌入式系统中常用的一种外设,它可以产生一定的时间间隔、延时、定时等功能,广泛应用于…

如何自动生成数据库的样本数据(以MySQL和SQLynx为例)

目录 1 功能概述 2 主要特点 3 使用场景 4 使用示例 5 结论 SQLynx 是一款领先的 SQL 集成开发环境(IDE),其强大的功能得到了全球用户的广泛认可。SQLynx 不仅在数据库管理和 SQL 查询方面表现出色,还提供了一项特别实用的功能…

VMware 三种网络模式

目录 一、网卡、路由器、交换机 二、虚拟网络编辑器 三、网络模式 1.桥接模式 通信方式 特点 配置 连通情况 使用场景 2.NAT模式 通信方式 特点 配置 连通情况 使用场景 3.仅主机 通信方式 特点 配置 连通情况 使用场景 一、网卡、路由器、交换机 网卡(Ne…

visio添加表格

插入Excel表格: 打开Microsoft Visio,新建一个空白画布。点击菜单栏中的“插入”。在插入中点击“图表”。在弹出的插入对象设置页面中选择“Microsoft Excel工作表”。点击确定按钮,然后在表格中输入内容。将鼠标点击到画布的空白处&#x…

OpenCV计算形状之间的相似度ShapeContextDistanceExtractor类的使用

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 1.功能描述 ShapeContextDistanceExtractor是OpenCV库中的一个类,主要用于计算形状之间的相似度或距离。它是基于形状上下文(Shape Co…

OpenStack云平台管理

OpenStack云平台管理 文章目录 OpenStack云平台管理资源列表基础环境一、部署Openstack二、创建网络和路由2.1、删除默认的网络2.2、创建网络和路由2.2.1、创建外部网络2.2.2、创建内部网络 2.3、创建路由 三、创建实例3.1、配置实例3.2、配置NAT转换 四、绑定浮动IP地址五、添…

C# WinForm —— 34 ToolStrip 工具栏 介绍

1. 简介 工具栏 ToolStrip,一般紧贴在菜单栏下面 2. 属性 属性解释(Name)控件ID,在代码里引用的时候会用到Enabled控件是否启用Dock定义要绑定到容器的控件边框,默认是topAnchor定义某个控件绑定到的容器的边缘。当控件锚定到某个边缘时&a…

分类模型:MATLAB判别分析

1. 判别分析简介 判别分析(Discriminant Analysis) 是一种统计方法,用于在已知分类的样本中构建分类器,并根据特征变量对未知类别的样本进行分类。常见的判别分析方法包括线性判别分析(Linear Discriminant Analysis, …

韩顺平0基础学java——第22天

p441-459 异常exception 选中代码块,快捷键ctraltt6,即trt-catch 如果进行了异常处理,那么即使出现了异常,但是会继续执行 程序过程中发生的异常事件分为两大类: 异常体系图※ 常见的运行异常:类型转换…

EFuse概念解析

EFuse概念解析 EFUSE Key Parameter iNOM 代表的是,Efuse运行时候的电流 tNOM 代表的是,Efuse电流与时间的曲线 INOM通过VOC_Thrs设置 VOC_THRS VOC_THRS/Rsense Vsense采样小于VOC_THRS时候不动作 Vsense采样大于VOC_THRS时候根据Efuse_I2T曲线来…