塘鹅优化算法(GOA)(含MATLAB代码)

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

塘鹅优化算法(Gannet Optimization Algorithm, GOA)将塘鹅在觅食过程中的各种独特行为数学化,并用于勘探和开发。GOA的U形和V形潜水模式负责在搜索空间中探索最优区域,突然旋转和随机游走确保在搜索区域找到更精确的解决方案。将GOA与其他进化算法在28个Benchmark函数上进行比较。结果表明,GOA在高维上的运行时间更短,可以提供更好的解决方案。它的原始参考文献如下:

“Pan J S, Zhang L G, Wang R B, et al. Gannet optimization algorithm: A new metaheuristic algorithm for solving engineering optimization problems[J]. Mathematics and Computers in Simulation, 2022, 202: 343-373.”

塘鹅优化算法(GOA)(含MATLAB代码)_第1张图片

01
灵感来源

塘鹅优化算法(GOA)(含MATLAB代码)_第2张图片

塘鹅在天空中发现猎物后,会根据猎物在水中的深浅程度,分为U型和V型两种方式潜入水中,将塘鹅的这种行为模式模拟为勘探阶段;进入水中之后,根据塘鹅的捕捉能力,分为两种探索模式:如果捕捉能力不足,塘鹅会随机游走去发现新的食物,如果捕捉能力比较强,会跟随猎物突然旋转去捕捉猎物,这种行为模式被模拟为开发阶段。

基于这样的思想,作者便设计出了GOA。

02
算法设计

2.1初始化阶段

塘鹅优化算法(GOA)(含MATLAB代码)_第3张图片


 

2.2勘探阶段

塘鹅优化算法(GOA)(含MATLAB代码)_第4张图片

塘鹅优化算法(GOA)(含MATLAB代码)_第5张图片

2.3开发阶段

塘鹅优化算法(GOA)(含MATLAB代码)_第6张图片

03
计算流程

GOA的计算流程图如图1所示(注意:图1截自GOA的原文,因此图中的公式序号需要对照原文看):

塘鹅优化算法(GOA)(含MATLAB代码)_第7张图片

图1 GOA的计算流程图

04
实验仿真

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

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

塘鹅优化算法(GOA)(含MATLAB代码)_第8张图片

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

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

塘鹅优化算法(GOA)(含MATLAB代码)_第9张图片

(a) f2

塘鹅优化算法(GOA)(含MATLAB代码)_第10张图片

(b) f10

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

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

塘鹅优化算法(GOA)(含MATLAB代码)_第11张图片

图4 GOA在CEC2013 F1上的误差收敛曲线

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

塘鹅优化算法(GOA)(含MATLAB代码)_第12张图片

图5 GOA在CEC2014 F14上的误差收敛曲线

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

塘鹅优化算法(GOA)(含MATLAB代码)_第13张图片

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

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

塘鹅优化算法(GOA)(含MATLAB代码)_第14张图片

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

最后,以CEC2022优化函数测试集中的单峰函数F1为例,展示GOA在10维环境下的收敛效果,如图8所示。(注意是画的误差曲线)

塘鹅优化算法(GOA)(含MATLAB代码)_第15张图片

图8 GOA在CEC2022优化函数 F1上的误差收敛曲线

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

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

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

这里以压力容器设计(Pressure vessel design)问题为例,展示GOA求解效果。收敛曲线如图9所示。

塘鹅优化算法(GOA)(含MATLAB代码)_第16张图片

图9 GOA在压力容器设计问题上的目标函数收敛曲线

05
MATLAB代码

GOA跑CEC2005测试集

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

GOA跑CEC2013测试集:
关注公众号:启发式算法讨论

GOA跑CEC2014测试集:
关注公众号:启发式算法讨论

GOA跑CEC2017测试集:

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

GOA跑CEC2020优化函数测试集:

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

GOA跑CEC2022优化函数测试集:

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

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

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

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

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

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

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

你可能感兴趣的:(算法,matlab,开发语言,人工智能,启发式算法,进化算法)