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