先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附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.”
塘鹅在天空中发现猎物后,会根据猎物在水中的深浅程度,分为U型和V型两种方式潜入水中,将塘鹅的这种行为模式模拟为勘探阶段;进入水中之后,根据塘鹅的捕捉能力,分为两种探索模式:如果捕捉能力不足,塘鹅会随机游走去发现新的食物,如果捕捉能力比较强,会跟随猎物突然旋转去捕捉猎物,这种行为模式被模拟为开发阶段。
基于这样的思想,作者便设计出了GOA。
2.1初始化阶段
2.2勘探阶段
2.3开发阶段
GOA的计算流程图如图1所示(注意:图1截自GOA的原文,因此图中的公式序号需要对照原文看):
图1 GOA的计算流程图
这里对GOA的性能进行简单的测试。首先将GOA用于函数寻优,算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模取N等于50,Benchmark函数分别采用了CEC2005测试集、CEC2013测试集、CEC2014测试集、CEC2017测试集、CEC2020优化函数测试集和CEC2022优化函数测试集。这里对仿真结果进行简要展示,就不再进一步做分析了。
首先,我们来检验一下GOA对全局勘探和局部开发的平衡能力。如图2所示,是GOA在CEC2005测试函数f7上的勘探和开发占比曲线。
图2 GOA在CEC2005 f7上的勘探和开发百分占比变化曲线
其次,以CEC2005的单峰函数Schwefel's 2.22 (f2)和多峰函数Ackley (f10)为例,展示GOA在30维环境下的收敛效果,如图3所示。
(a) f2
(b) f10
图3 GOA在CEC2005两个测试函数上的收敛曲线
再次,以CEC2013测试集中的单峰函数F1为例,展示GOA在30维环境下的收敛效果,如图4所示。(注意是画的误差曲线)
图4 GOA在CEC2013 F1上的误差收敛曲线
接着,以CEC2014测试集中的多模态函数F14为例,展示GOA在30维环境下的收敛效果,如图5所示。(注意是画的误差曲线)
图5 GOA在CEC2014 F14上的误差收敛曲线
再然后,以CEC2017测试集中的多模态函数F4为例,展示GOA在30维环境下的收敛效果,如图6所示。(注意是画的误差曲线)
图6 GOA在CEC2017 F4上的误差收敛曲线
在此之后,以CEC2020优化函数测试集中的复合函数F9为例,展示GOA在10维环境下的收敛效果,如图7所示。(注意是画的误差曲线)
图7 GOA在CEC2020优化函数 F9上的误差收敛曲线
最后,以CEC2022优化函数测试集中的单峰函数F1为例,展示GOA在10维环境下的收敛效果,如图8所示。(注意是画的误差曲线)
图8 GOA在CEC2022优化函数 F1上的误差收敛曲线
进一步,可将GOA应用于复杂工程约束优化问题,例如之前推送的两期算法应用内容:
算法应用:基于DBO算法的工程优化设计(第1期)(含MATLAB代码)
算法应用:工程优化设计(第2期)(含MATLAB代码)
这里以压力容器设计(Pressure vessel design)问题为例,展示GOA求解效果。收敛曲线如图9所示。
图9 GOA在压力容器设计问题上的目标函数收敛曲线
GOA跑CEC2005测试集
关注公众号:启发式算法讨论
GOA跑CEC2013测试集:
关注公众号:启发式算法讨论
GOA跑CEC2014测试集:
关注公众号:启发式算法讨论
GOA跑CEC2017测试集:
关注公众号:启发式算法讨论
GOA跑CEC2020优化函数测试集:
关注公众号:启发式算法讨论
GOA跑CEC2022优化函数测试集:
关注公众号:启发式算法讨论
GOA的勘探(Exploration)和开发(Exploitation)占比分析:
关注公众号:启发式算法讨论
GOA的工程应用(第1期):压力容器设计、滚动轴承设计、拉伸/压缩弹簧设计、悬臂梁设计、轮系设计、三杆桁架设计。
关注公众号:启发式算法讨论
GOA的工程应用(第2期):焊接梁设计、多盘离合器制动器设计问题、步进圆锥滑轮问题、减速机设计问题、行星轮系设计优化问题、机器人夹持器问题。
关注公众号:启发式算法讨论