䲟鱼优化算法(ROA)(含MATLAB代码)

news/2024/12/22 20:28:53/

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。

 

“今天推送的䲟鱼优化算法(ROA)是三明学院信息工程学院贾鹤鸣教授于2021年提出的,关于ROA的详细介绍,大家可以关注贾教授的CSDN博客:鹤鸣优化”

 

䲟鱼优化算法(Remora Optimization Algorithm, ROA)是2021年提出的一种元启发式优化算法,其灵感来自于海洋中䲟鱼的寄生行为。作者通过29个基准问题和5个实际工程问题验证了ROA的有效性。与其他10种启发式算法进行比较,实验结果表明,与其他先进的启发式技术相比,ROA具有很好的应用前景和较强的竞争力。ROA的原始参考文献如下:

“Jia H, Peng X, Lang C. Remora optimization algorithm[J]. Expert Systems with Applications, 2021, 185: 115665.”

01
灵感来源

作为海洋中最聪明的鱼之一,为了免受敌人的入侵,同时也为了节省体力,䲟鱼会寄生在旗鱼、鲸鱼或其他生物上觅食。算法以䲟鱼寄生在旗鱼和鲸鱼身上为例来设计数学模型。因此,ROA借鉴了旗鱼优化(Sailfish Optimizer, SFO)和鲸鱼优化算法(Whale Optimization Algorithm, WOA)的更新公式,进行全局和局部的位置更新。换言之,ROA可以看作是SFO和WOA的混合算法。因此,对于两种组成算法不了解的同学,可以先阅读往期推送,了解SFO和WOA:

旗鱼优化(SFO)算法(含MATLAB代码)

鲸鱼优化算法(WOA)及其优秀变体(含MATLAB代码)

此外,为了确定是否需要更换宿主,䲟鱼会在宿主周围进行小范围移动,即经验积累,若不需要更换宿主,则进行宿主边觅食。图1展示了䲟鱼捕食的详细过程。

图1 䲟鱼捕食过程

02
算法设计

为了不误解作者的设计意图,对于算法的描述,采用了贾教授本人给出的解释。图片截自贾教授的CSDN博客。

03
计算流程

ROA的计算流程如下:

04
实验仿真

这里对算法ROA的性能进行简单的测试。首先将ROA用于函数寻优,算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模取N等于50,Benchmark函数分别采用了CEC2005测试集、CEC2013测试集、CEC2014测试集、CEC2017测试集和CEC2020优化函数测试集。这里对仿真结果进行简要展示,就不再进一步做分析了。

首先,我们来检验一下ROA对全局勘探和局部开发的平衡能力。如图2所示,是ROA在CEC2005测试函数f7上的勘探和开发占比曲线。

图2 ROA在CEC2005 f7上的勘探和开发百分占比变化曲线

其次,以CEC2005的单峰函数Schwefel's 2.22 (f2)和多峰函数Ackley (f10)为例,展示ROA在30维环境下的收敛效果,如图3所示。

(a) 单峰函数Schwefel's 2.22 (f2)

(b) 多峰函数Ackley (f10)

图3 ROA在CEC2005两个测试函数上的收敛曲线

再次,以CEC2013测试集中的单峰函数F5为例,展示ROA在30维环境下的收敛效果,如图4所示。(注意是画的误差曲线)

图4 ROA在CEC2013 F5上的误差收敛曲线

接着,以CEC2014测试集中的混合函数F19为例,展示ROA在30维环境下的收敛效果,如图5所示。(注意是画的误差曲线)

图5 ROA在CEC2014 F19上的误差收敛曲线

再然后,以CEC2017测试集中的多模态函数F4为例,展示ROA在30维环境下的收敛效果,如图6所示。(注意是画的误差曲线)

图6 ROA在CEC2017 F4上的误差收敛曲线

最后,以CEC2020优化函数测试集中的复合函数F9为例,展示ROA在30维环境下的收敛效果,如图7所示。(注意是画的误差曲线)

图7 ROA在CEC2020优化函数 F9上的误差收敛曲线

进一步,可将ROA应用于复杂工程约束优化问题,例如之前推送的两期算法应用内容:

算法应用:基于DBO算法的工程优化设计(第1期)(含MATLAB代码)

算法应用:工程优化设计(第2期)(含MATLAB代码)

这里以焊接梁设计问题为例,展示ROA求解效果。收敛曲线如图8所示。

图8 ROA在焊接梁设计问题上的目标函数收敛曲线

05
MATLAB代码

公众号里有链接

ROA跑CEC2005测试集:

(关注公众号:启发式算法讨论)

ROA跑CEC2013测试集:

(关注公众号:启发式算法讨论)

ROA跑CEC2014测试集:

(关注公众号:启发式算法讨论)

ROA跑CEC2017测试集:

(关注公众号:启发式算法讨论)

ROA跑CEC2020优化函数测试集:

(关注公众号:启发式算法讨论)

ROA的勘探(Exploration)和开发(Exploitation)占比分析:

(关注公众号:启发式算法讨论)

ROA的工程应用(第1期):压力容器设计、滚动轴承设计、拉伸/压缩弹簧设计、悬臂梁设计、轮系设计、三杆桁架设计。

(关注公众号:启发式算法讨论)

ROA的工程应用(第2期):焊接梁设计、多盘离合器制动器设计问题、步进圆锥滑轮问题、减速机设计问题、行星轮系设计优化问题、机器人夹持器问题。

(关注公众号:启发式算法讨论)

关于其他智能优化算法的MATLAB代码,可访问我的个人主页查看:

(关注公众号:启发式算法讨论)


http://www.ppmy.cn/news/102626.html

相关文章

CompletableFuture与多线程结合使用

公众号请关注"果酱桑", 一起学习,一起进步! 前言 在Java 8中,引入了CompletableFuture类,它是Future的增强版,提供了更加灵活的异步编程方式,能够更好地利用多线程的优势。本文将详细讲解CompletableFuture的使用方法…

【运维】speedtest测试

目录 docker 布署 布署云端 docker布署 云端放置于已有容器里 librespeed/speedtest: Self-hosted Speedtest for HTML5 and more. Easy setup, examples, configurable, mobile friendly. Supports PHP, Node, Multiple servers, and more (github.com) docker 布署 获取…

Hadoop3.1.4分布式搭建

Hadoop3.1.4分布式搭建 1. 基础环境准备 1.1 实验网络规划 hostnameip addrroleotherk8s-m13310.10.10.133NameNode, DataNode, NodeManageerk8s-m13410.10.10.134SecondaryNameNode, DataNode, NodeManageerk8s-m13510.10.10.135ResourceManager, DataNode, NodeManageerk8…

链表反转方法汇总

反转范围之前有节点,prev就指向该节点,没有就prevnull; 一、头插法 class Solution {public ListNode reverseList(ListNode head) {ListNode header new ListNode(-1);ListNode cur head;while(cur ! null) {ListNode tmp cur.next;cur.…

香豆素荧光标记652966-03-5,ATTO425 acid,ATTO 425 羧酸,进行简析说明

中文名称:ATTO 425 羧酸 英文名称:ATTO425 COOH,ATTO-425 carboxylic acid 规格标准:10mg,25mg,50mg CAS:652966-03-5 分子式:C22H27NO6 分子量:401.46结构式&#xff1a…

Git——三大分区【工作区 / 暂存区 / 版本区】

前言:Git作为一个版本管理工具,最核心组成思想是它的三个分区:工作区、暂存区和工作区。 1. 工作区 Git的工作区也就是我们平时编辑代码的目录文件夹。 2. 暂存区 暂存区就是一个暂时放置修改文件记录的地方。以往仓库中放货物为例&#xf…

科技云报道:2023年安全运营之风将吹向何方?

科技云报道原创。 在实战演练成为常态化的背景下,建立实战化安全运营能力是一个绕不开的话题。作为网络安全发展的时代产物,安全运营被认为是解决现有挑战的有利方法。 但随着有安全形势、政策导向、发展需求的变化,安全运营的理念也在不断演…

YOLOv7 tiny 新增小目标检测层

YOLOv7 tiny 新增小目标检测层 YOLOv7 tiny 新增小目标检测层修改yolov7-tiny.yaml文件YOLOv7 tiny 结构图调用 models/yolo.py验证 YOLOv7 tiny 新增小目标检测层 根据已有的结构进行新增小目标层,,个人理解,仅供参考!&#xff…