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)−A⋅D(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= C⋅Xbest(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(2k−1)C=2k(3)
收敛因子:
a = 2 − 2 i / i max (4) a=2-2i / i_{\max}\tag{4} a=2−2i/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)−A⋅D(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=∣C⋅Xrand(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)=D⋅ebl⋅cos(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.代码获取
相关文章:
SCI二区|鲸鱼优化算法(WOA)原理及实现【附完整Matlab代码】
目录 1.背景2.算法原理2.1算法思想 3.结果展示4.参考文献5.代码获取 1.背景 2016年,S Mirjalili受到自然界座头鲸社会行为启发,提出了鲸鱼优化算法(Whale Optimization Algorithm, WOA)。 2.算法原理 WOA模拟了座头鲸的社会行为…...
人脸匹配——OpenCV
人脸匹配 导入所需的库加载dlib的人脸识别模型和面部检测器读取图片并转换为灰度图比较两张人脸选择图片并显示结果比较图片创建GUI界面运行GUI主循环运行显示全部代码 导入所需的库 cv2:OpenCV库,用于图像处理。 dlib:一个机器学习库&#x…...
韩顺平0基础学java——第22天
p441-459 异常exception 选中代码块,快捷键ctraltt6,即trt-catch 如果进行了异常处理,那么即使出现了异常,但是会继续执行 程序过程中发生的异常事件分为两大类: 异常体系图※ 常见的运行异常:类型转换…...
神经网络介绍及教程案例
神经网络介绍及教程&案例 神经网络(Neural Networks)是机器学习和人工智能中的一种关键技术,模仿了人类大脑的工作方式,能够处理复杂的数据和任务。以下是神经网络的一些基础介绍: 基本概念 神经元(N…...
16个不为人知的资源网站,强烈建议收藏!
整理了16个不为人知的资源网站,涵盖了课程学习、办公技能、娱乐休闲、小说音乐等多种资源,强烈建议收藏! #学习网站 1、中国大学MOOC icourse163.org/ 这是一个汇集了国内顶尖大学免费课程资源的平台,众多985工程院校如北京大…...
pandas获取某列最大值的所有数据
第一种方法: 按照某列进行由大到小的排序,然后再进去去重,保留第一个值,最终保留的结果就是最大值的数据 # 由大到小排序 data_frame data_frame.sort_values(bycolumn_a, ascendingFalse)# 按照column_b列去重保留第一条&#…...
App UI 风格展现非凡创意
App UI 风格展现非凡创意...
rocketmq-5.1.2的dleger高可用集群部署
1、背景 原先为5.0.0版本,因检查出有漏洞,升级到5.1.2版本。 【Rocketmq是阿里巴巴在2012年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量堆积、顺序收发等特点。在一定条件下…...
无线网络与物联网技术[1]之近距离无线通信技术
无线网络与物联网技术 近距离无线通信技术WIFIWi-Fi的协议标准Wi-Fi的信道Wi-Fi技术的术语Wi-Fi的组网技术Ad-hoc模式无线接入点-APAP:FAT AP vs FIT AP Wi-Fi的特点与应用Wi-Fi的安全技术 Bluetooth蓝牙技术概论蓝牙的技术协议蓝牙的组网技术微微网piconet(了解)散…...
Codeforces Round 952 (Div. 4)
题解写到博客园了,懒得复制过来了了,放个链接 https://www.cnblogs.com/yxcblogs/p/18243276 推广一下自己记录的算法编程竞赛模板仓库 GitHub - yxc-s/programming-template: This repository contains C programming templates optimized for competi…...
spark MLlib (DataFrame-based) 中的聚类算法Bisecting K-Means、K-Means、Gaussian Mixture
Bisecting K-Means 核心原理: Bisecting K-Means 是一种层次 K-Means 聚类算法,基于 Steinbach、Karypis 和 Kumar 的论文《A comparison of document clustering techniques》,并对 Spark 环境进行了修改和适应。 该算法通过递归地将数据集…...
天降流量于雀巢?元老品牌如何创新营销策略焕新生
大家最近有看到“南京阿姨手冲咖啡”的视频吗?三条雀巢速溶咖啡入杯,当面加水手冲,十元一份售出,如此朴实的售卖方式迅速在网络上走红。而面对这一波天降的热度,雀巢咖啡迅速做出了回应,品牌组特地去到了阿…...
新疆在线测宽仪配套软件实现的9大功能!
在线测宽仪可应用于各种热轧、冷轧板带材的宽度尺寸检测,材质不限,木质、钢制、铁质、金属、纸质、塑料、橡胶等都可以进行无损非接触式的检测,在各式各样的产线应用中,有些厂家,需要更加详尽完备的分析信息࿰…...
考研计组chap3存储系统
目录 一、存储器的基本概念 80 1.按照层次结构 2.按照各种分类 (41)存储介质 (2)存取方式 (3)内存是否可更改 (4)信息的可保存性 (5)读出之后data是否…...
杨氏矩阵和杨辉三角的空间复杂度较小的解题思路
文章目录 题目1 杨氏矩阵题目2 杨辉三角 题目1 杨氏矩阵 有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。 要求:时间复杂度小于O(N); 思路: 我们可以通过题目…...
【第六篇】SpringSecurity的权限管理
一、权限管理的实现 服务端的各种资源要被SpringSecurity的权限管理控制可以通过注解和标签两种方式来处理。 放开了相关的注解后在Controller中就可以使用相关的注解来控制了 JSR250注解 /*** JSR250*/ @Controller @RequestMapping("/user") public class UserC…...
未来工作场所:数字化转型的无限可能
探索技术如何重塑我们的工作环境与协作方式 引言 在21世纪的第三个十年,数字化转型已不再仅仅是科技公司的专利,它如同一股不可阻挡的潮流,深刻地渗透到了每一个行业的血脉之中。从灵活的远程办公模式到工作流程的智能化重构,技术…...
Landsat8的质量评估波段的一个应用
Landsat8一直是遥感界的热门话题。这不仅延续了自1972年以来NASA连续对地观测,而且这颗卫星为科学界带来了一些新的东西——质量评估波段(the Quality Assessment (QA) Band)。根据USGS Landsat Missions webpage,“QA通过标示哪个…...
OpenZeppelin Ownable合约 怎么使用
文章目录 智能合约的访问控制Ownable合约使用方法 智能合约的访问控制 熟悉OpenZeppelin的智能合约库的开发者都知道这个库已经提供了根据访问等级进行访问限制的选项,其中最常见的就是Ownable合约管理的onlyOwner模式,另一个是OpenZeppelin的Roles库&a…...
vue3框架基本使用(基础指令)
一、响应式数据 1.ref ref可以定义 基本类型的响应式数据, 也可以定义对象类型响应式数据 <template><h1>{{ name }}</h1><button click"test">修改姓名</button> </template><script setup lang"ts"…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...
二维数组 行列混淆区分 js
二维数组定义 行 row:是“横着的一整行” 列 column:是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...
