鳗鱼-石斑鱼优化算法(EGO)-鲸鱼算法作者又提出新算法!公式原理详解与性能测评 Matlab代码免费获取

news2024/12/25 13:32:02

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~

目录

原理简介

一、石斑鱼追踪猎物(勘探阶段)

二、给海鳗发信号

三、对猎物的合作攻击(开发阶段)

算法流程图和伪代码

性能测评

参考文献

完整代码


鳗鱼-石斑鱼优化算法(Eel and grouper optimizer ,EGO)是一种新型的元启发式算法(智能优化算法),灵感来源于海洋生态系统中鳗鱼和石斑鱼的共生作用和觅食策略。该成果由Ali Mohammadzadeh和Seyedali Mirjalili两位作者于2024年6月发表在SCI著名期刊《Cluster Computing》上!

注意,该算法的作者中包括了Seyedali Mirjalili等优化算法领域大名鼎鼎的学者。熟悉该作者的小伙伴都知道,非常经典的鲸鱼优化算法WOA、蜻蜓优化算法DA、海洋捕食者算法MPA等性能优异的算法都包含他的名字,说明这个算法的性能是有保证的!

由于发表时间较短,谷歌学术上还没人引用!你先用,你就是创新!

原理简介

灵感:当两种生物有有益的相互作用时,就会发生互惠共生。例如,海里的珊瑚和鱼。石斑鱼是一种大型鱼类,在珊瑚礁周围的开阔水域捕猎。海鳗在夜间滑过礁石捕食。当它们一起捕猎时,猎物存活的机会很小:如果猎物藏在暗礁里,鳗鱼会吃了它,然后跑向开阔的水域,石斑鱼会抓住它们。除了人类,这是唯一已知的两种不相关的生物一起狩猎的案例。石斑鱼邀请海鳗和它们一起狩猎,就像猎人带着狗驱赶兔子一样。

一、石斑鱼追踪猎物(勘探阶段)

石斑鱼根据猎物的位置寻找最佳的适合度。而在附近休息的海鳗的位置是从初始种群中随机选择的。我们还使用两个系数C1和C2,它们的随机值大于1或小于-1,以使搜索代理远离最佳位置。我们使用随机搜索代理来更新搜索代理在探索阶段的位置,而不是迄今为止最好的搜索代理。这种机制和系数值增强了搜索能力,使EGO算法能够执行全局搜索。数学模型如下:

其中t为第i维的当前迭代,Xrand表示随机位置向量。最后一次迭代的最佳解决方案由位置向量XG表示。C1, C2表示系数向量,r1, r2表示0到1之间的随机数,•表示元素间的乘法。需要注意的是,如果存在更好的位置,则应该在每次重复中更改XG。因为石斑鱼在狩猎后正在移动。

通过减小式5和式6中变量a的值来产生收缩包络行为。变量a随重复次数的增加呈递减趋势。C1是一个在[-a, a]范围内的随机数,C2是一个在[0,2]范围内的随机数,其中a在迭代过程中从2递减到0。变量a也减小了C1的变化范围。根据公式(4),C2是r2的系数。在公式(7)中,rand是0到1之间的随机数。

二、给海鳗发信号

石斑鱼通过摇头来分享它们的攻击位置和观察情况。石斑鱼,尤其是那些饥饿的目标刚刚逃进礁石的鱼,会游到最近的海鳗白天的藏身之处,在摆动背鳍的同时表演一种奇怪的摇头舞。为了用数学方法表示这种行为,每条鳗鱼的位置与石斑鱼的位置成正比,使用公式8进行更新。在这个公式中,石斑鱼饥饿程度影响信号。通过增加石斑鱼的饥饿程度,说服海鳗的机会就增加了。在公式9中,starvation_rate是一个介于0到100之间的数字,并且随着时间的推移而增加(重复次数)。r4也可以根据式7计算。如果鳗鱼没有关联,它的位置将改变为一个新的随机位置。

三、对猎物的合作攻击(开发阶段)

海鳗在礁石上爬行捕食,而石斑鱼则在珊瑚礁附近的开阔水域游过猎物。研究人员估计,这两条鱼一起捕食猎物的成功率是它们单独捕食的五倍。在58%的观察中,鳗鱼的反应是从裂缝中钻出来,然后两条鱼游过珊瑚礁。被每一种鱼——石斑鱼和鳗鱼——捕获的概率是相等的。为了模拟这种同时发生的行为,我们估计有50%的机会使用石斑鱼狩猎或鳗鱼狩猎模型来更新位置。r3也可以根据式6计算。数学模型如下:

如下图所示,波动更新定位技术首先测量鳗鱼在(XE, YE)和猎物在(XP, YP)之间的距离。然后在鳗鱼和猎物的位置之间构建一个圆形方程来模拟海鳗的波浪运动,如式10所示。由于正弦函数的循环结构,一个解可以移动到下一个解。这可以确保探索两个解决方案之间指定的空间。

算法流程图和伪代码

为了使大家更好地理解,这边给出作者算法的流程图和伪代码,非常清晰!

如果实在看不懂,不用担心,可以看下源代码,再结合上文公式理解就一目了然了!

性能测评

原文作者采用19个基准函数和张力/压缩弹簧、压力容器、活塞杆和汽车侧面碰撞这些工程设计问题以及CEC 2020真实世界基准对EGO的性能进行了测试。结果表明,EGO算法是一种可靠的软计算技术,可以有效地解决现实世界中的优化问题,并优于已有的文献算法。

这边为了方便大家对比与理解,采用23个标准测试函数,即CEC2005,并与Seyedali Mirjalili之前提出的非常经典的鲸鱼优化算法进行对比!这边展示其中5个测试函数的图,其余十几个测试函数大家可以自行切换尝试!

可以看到,EGO在大部分函数上性能都超过了原本的的WOA算法,如果原本想用WOA算法的同学可以试试换成EGO算法哦~

参考文献

[1]Mohammadzadeh A, Mirjalili S. Eel and grouper optimizer: a nature-inspired optimization algorithm[J]. Cluster Computing, 2024: 1-42.

完整代码

如果需要免费获得图中的完整测试代码,只需点击下方小卡片,再后台回复关键字,:

EGO

也可点击下方小卡片,再后台回复个人需求(比如EGO-KELM)定制以下鳗鱼-石斑鱼算法优化模型(看到秒回):

1.回归/时序/分类预测类:SVM、RVM、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、BP、XGBoost、TCN、BiTCN、ESN等等均可~

2.组合预测类:CNN/TCN/BiTCN/DBN/Adaboost结合SVM、RVM、ELM、LSTM、BiLSTM、GRU、BiGRU、Attention机制类等均可(可任意搭配非常新颖)~

3.分解类:EMD、EEMD、VMD、REMD、FEEMD、TVFEMD、CEEMDAN、ICEEMDAN、SVMD、FMD等分解模型均可~

4.其他:机器人路径规划、无人机三维路径规划、DBSCAN聚类、VRPTW路径优化、微电网优化、无线传感器覆盖优化、故障诊断等等均可~

5.原创改进优化算法(适合需要创新的同学):原创改进鳗鱼-石斑鱼优化算法EGO以及麻雀SSA、蜣螂DBO等任意优化算法均可,保证测试函数效果!

更多免费代码链接:更多代码链接

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

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

相关文章

QGroundControl@Jetson Orin Nano - 从代码编译安装

QGroundControlJetson Orin Nano - Build from Source 1. 源由2. 步骤2.1 QT 编译2.1.1 下载2.1.2 版本2.1.3 初始化2.1.4 配置2.1.5 编译2.1.6 安装 2.2 QGC 编译2.2.1 下载2.2.2 版本2.2.3 初始化2.2.4 配置2.2.5 编译2.2.6 安装2.2.7 QT5命令备注 3. 可行方案4. 总结5. 补充…

如何用GPT开发一个基于 GPT 的应用?

原文发自博客:GPT应用开发小记 如何开发一个基于 GPT 的应用?答案就在问题里,那就是用 GPT 来开发基于 GPT 的应用。本文以笔者的一个开源项目 myGPTReader 为例,分享我是如何基于 GPT 去开发这个系统的,这个系统的功能…

Typora failed to export as pdf. undefined

变换版本并没有用,调整图片大小没有用 我看到一个博客后尝试出方案 我的方法 解决:从上图中的A4,变为其他,然后变回A4 然后到处成功,Amazing! 参考: Typora 导出PDF 报错 failed to export…

Tesseract Python 图片文字识别入门

1、安装tesseract Index of /tesseract https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v5.3.0.20221214.exe 2、安装中文语言包 https://digi.bib.uni-mannheim.de/tesseract/tessdata_fast/ 拷贝到C:\Program Files\Tesseract-OCR\tessdata 3、注…

《重构》读书笔记【第1章 重构,第一个示例,第2章 重构原则】

文章目录 第1章 重构,第一个示例1.1 重构前1.2 重构后 第2章 重构原则2.1 何谓重构2.2 两顶帽子2.3 为何重构2.4 何时重构2.5 重构和开发过程 第1章 重构,第一个示例 我这里使用的IDE是IntelliJ IDEA 1.1 重构前 plays.js export const plays {&quo…

springcloud第4季 springcloud-alibaba之nacos+openfegin+gateway+sentinel熔断限流【经典案例】

一 说明 1.1 架构说明 本案例实现原理: 采用alibaba的nacos,openfegin,sentinel,gateway等组件实现熔断限流。 主要理解sentinel的ResouceSentinel和fallback的区别联系。 ResourceSentinel 主要是页面配置熔断限流规则&#…

海康+libtorch的血泪教训

一、LibTorch使用, 详见: /INCLUDE:?warp_sizecudaatYAHXZ 二、海康二次开发, 目前选4.31,只能c14。 三、做dll注意:

实用的vueuseHooks,提高编码效率

文章目录 写在前面vueuse 官网安装HooksuseStorage [地址](https://vueuse.org/core/useStorage/)传统方法数据持久化 举例子传统持久化的弊端useStorage 数据持久化 举例子使用useStorage 更改存储数据使用useStorage 删除存储数据 useScriptTag [地址](https://vueuse.org/co…

FinalShell:功能强大的 SSH 工具软件,Mac 和 Win 系统的得力助手

在当今数字化的时代,SSH 工具软件成为了许多开发者、运维人员以及技术爱好者不可或缺的工具。而 FinalShell 作为一款出色的中文 SSH 工具软件,无论是在 Mac 系统还是 Windows 系统上,都展现出了卓越的性能和便捷的使用体验。 FinalShell 拥…

go语言DAY7 字典Map 指针 结构体 函数

Go中Map底层原理剖析_go map底层实现-CSDN博客 目录 Map 键值对key,value 注意: map唯一确定的key值通过哈希运算得出哈希值 一、 map的声明及初始化: 二、 map的增删改查操作: 三、 map的赋值操作与切片对比: 四、 通用所有…

深入探讨C++的高级反射机制

反射是一种编程语言能力,允许程序在运行时查询和操纵对象的类型信息。它广泛应用于对象序列化、远程过程调用、测试框架、和依赖注入等场景。 由于C语言本身的反射能力比较弱,因此C生态种出现了许多有趣的反射库和实现思路。我们在本文一起探讨其中的奥秘…

深入解析内容趋势:使用YouTube API获取视频数据信息

一、引言 YouTube,作为全球最大的视频分享平台之一,汇聚了无数优质的内容创作者和观众。从个人分享到专业制作,从教育科普到娱乐休闲,YouTube上的视频内容丰富多彩,满足了不同用户的需求。对于内容创作者、品牌以及希…

langchain学习总结

大模型开发遇到的问题及langchain框架学习 背景: 1、微场景间跳转问题,无法实现微场景随意穿插 2、大模型幻读(推荐不存在的产品、自己发挥) 3、知识库检索,语义匹配效果较差,匹配出的结果和客户表述的…

nacos 整合 openfeign实现远程调用

结合之前写过的案例 Springcloud Alibaba nacos简单使用 Springcloud 之 eureka注册中心加feign调用 在微服务架构中,服务注册与发现是一个关键组件。Nacos 是一个开源的服务注册与发现、配置管理平台,而 OpenFeign 是一个声明式的 Web 服务客户端&am…

【智能算法】目标检测算法

目录 一、目标检测算法分类 二、 常见目标检测算法及matlab代码实现 2.1 R-CNN 2.1.1 定义 2.1.2 matlab代码实现 2.2 Fast R-CNN 2.2.1 定义 2.2.2 matlab代码实现 2.3 Faster R-CNN 2.3.1 定义 2.3.2 matlab代码实现 2.4 YOLO 2.4.1 定义 2.4.2 matlab代码实现…

eBPF技术揭秘:DeepFlow如何引领故障排查,提升运维效率

DeepFlow 实战:eBPF 技术如何提升故障排查效率 目录 DeepFlow 实战:eBPF 技术如何提升故障排查效率 微服务架构系统中各个服务、组件及其相互关系的全景 零侵扰分布式追踪(Distributed Tracing)的架构和工作流程 关于零侵扰持…

力扣 单链表元素删除解析及高频面试题

目录 删除元素的万能方法 构造虚拟头结点来应对删除链表头结点的情况 一、203.移除链表元素 题目 题解 二、19.删除链表中倒数第K个节点 题目 题解 三、 83.删除某个升序链表中的重复元素,使重复的元素都只出现一次 题目 题解 82.删除某个升序链表中的…

【UML用户指南】-23-对高级行为建模-状态机

目录 1、概述 2、状态 2.1、状态的组成 3、转移 3.1、转移的组成 4、高级状态和转移 4.1、进入效应和退出效应 4.2、内部转移 4.3、do活动 4.4、延迟事件 4.5、子状态机 5、子状态 5.1、非正交子状态 5.2、历史状态 5.3、正交子状态 6、分叉与汇合 7、主动对象…

【摄像头标定】双目摄像头标定及矫正-opencv(python)

双目摄像头标定及矫正 棋盘格标定板标定矫正 棋盘格标定板 本文使用棋盘格标定板,可以到这篇博客中下载:https://blog.csdn.net/qq_39330520/article/details/107864568 标定 要进行标定首先需要双目拍的棋盘格图片,20张左右,…

【最简单】解决windows安装wsl,出现WslRegisterDistribution failed with error: 0x8007019e的问题

从官网下载安装包安装ubuntu18.04的过程中出现了下面的错误 在Windows上安装Windows Subsystem for Linux (WSL) 时,可能会遇到以下错误: WslRegisterDistribution failed with error: 0x8007019e 这个错误通常是由于系统未启用必要的功能或未正确配置…