先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。
赵世杰教授等从自然界中海马的运动、捕食和繁殖行为入手,提出了一种基于群体智能的元启发式算法:海马优化器(Sea-horse Optimizer, SHO)。在23个Benchmark函数和CEC2014测试套件上对SHO的性能进行了评估,并与6种state-of-the-art算法进行了比较。最后,作者利用五个实际工程问题验证了该方法的有效性。实验结果表明,该算法是一种高性能的优化器,对约束优化问题同样具有良好的适应性。SHO的原始参考文献如下:
“Zhao S, Zhang T, Ma S, et al. Sea-horse optimizer: a novel nature-inspired meta-heuristic for global optimization problems[J]. Applied Intelligence, 2023, 53(10): 11833-11860.”
01
灵感来源
运动、捕食和繁殖行为对海马的生活尤为重要,描述如下:
就运动行为而言,海马有时会把尾巴卷在藻类的茎(或叶子)上。由于藻茎在海洋涡旋的作用下围绕藻根呈现螺旋漂浮变化,海马此时进行螺旋运动。在其他时候,当海马倒挂在漂浮的藻类或其他物体上,随波浪随意移动时,就会发生Brownian运动。
在捕食行为方面,海马利用头部的特殊形状偷袭猎物,然后以高达90%的成功率捕获猎物。
在繁殖行为上,雄性和雌性海马随机交配,产生新的后代,这有助于从父亲和母亲那里继承某些优秀的信息。
综上所述,这三种行为使海马能够更好地适应环境,更好地生存。作者提出的SHO算法主要是受上述三种行为的启发。因此,这些行为是作者通过数学建模开发这种新型优化器的动机。
02
算法设计
作者提出的SHO算法由三个关键部分组成,即运动、捕食和繁殖。为了平衡对SHO的勘探和开发,分别针对运动和捕食的社会行为设计了局部搜索和全局搜索策略。繁殖行为是在前两种行为完成后进行的。它们的数学模型将被详细地表达和讨论如下。
03
计算流程
SHO算法的计算流程稍微繁琐了一些,伪代码如下:
04
实验仿真
这里对SHO算法的性能进行简单的测试。首先将SHO算法用于函数寻优,算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模取N等于50,Benchmark函数分别采用了CEC2005测试集、CEC2013测试集、CEC2014测试集、CEC2017测试集、CEC2020优化函数测试集和CEC2022优化函数测试集。这里对仿真结果进行简要展示,就不再进一步做分析了。
首先,我们来检验一下SHO算法对全局勘探和局部开发的平衡能力。如图4所示,是SHO算法在CEC2005测试函数f8上的勘探和开发占比曲线。
图4 SHO在CEC2005 f8上的勘探和开发百分占比变化曲线
其次,以CEC2005的单峰函数Schwefel's 2.22 (f2)和多峰函数Ackley (f10)为例,展示SHO算法在30维环境下的收敛效果,如图5所示。
(a) f2
(b) f10
图5 SHO在CEC2005两个测试函数上的收敛曲线
再次,以CEC2013测试集中的单峰函数F5为例,展示SHO在30维环境下的收敛效果,如图6所示。(注意是画的误差曲线)
图6 SHO在CEC2013 F5上的误差收敛曲线
接着,以CEC2014测试集中的多模态函数F14为例,展示SHO在30维环境下的收敛效果,如图7所示。(注意是画的误差曲线)
图7 SHO在CEC2014 F14上的误差收敛曲线
再然后,以CEC2017测试集中的多模态函数F4为例,展示SHO在30维环境下的收敛效果,如图8所示。(注意是画的误差曲线)
图8 SHO在CEC2017 F4上的误差收敛曲线
在此之后,以CEC2020优化函数测试集中的复合函数F9为例,展示SHO在10维环境下的收敛效果,如图9所示。(注意是画的误差曲线)
图9 SHO在CEC2020优化函数 F9上的误差收敛曲线
最后,以CEC2022优化函数测试集中的单峰函数F1为例,展示SHO在10维环境下的收敛效果,如图10所示。(注意是画的误差曲线)
图10 SHO在CEC2022优化函数 F1上的误差收敛曲线
进一步,可将SHO算法应用于复杂工程约束优化问题,例如之前推送的两期算法应用内容:
算法应用:基于DBO算法的工程优化设计(第1期)(含MATLAB代码)
算法应用:工程优化设计(第2期)(含MATLAB代码)
这里以焊接梁设计(Welded beam design)问题为例,展示SHO算法求解效果。收敛曲线如图11所示。
图11 SHO在焊接梁设计问题上的目标函数收敛曲线
05
MATLAB代码
SHO算法跑CEC2005测试集的MATLAB是开源的,大家可复制下方地址进入提取:
链接:https://pan.baidu.com/s/1JM4l1sH_2w372Gq7FqCcdA
提取码:8023
SHO算法跑CEC2013测试集:
关注公众号:启发式算法讨论
SHO算法跑CEC2014测试集:
关注公众号:启发式算法讨论
SHO算法跑CEC2017测试集:
关注公众号:启发式算法讨论
SHO算法跑CEC2020优化函数测试集:
关注公众号:启发式算法讨论
SHO算法跑CEC2022优化函数测试集:
关注公众号:启发式算法讨论
SHO算法的勘探(Exploration)和开发(Exploitation)占比分析:
关注公众号:启发式算法讨论
SHO算法的工程应用(第1期):压力容器设计、滚动轴承设计、拉伸/压缩弹簧设计、悬臂梁设计、轮系设计、三杆桁架设计。
关注公众号:启发式算法讨论
SHO算法的工程应用(第2期):焊接梁设计、多盘离合器制动器设计问题、步进圆锥滑轮问题、减速机设计问题、行星轮系设计优化问题、机器人夹持器问题。
关注公众号:启发式算法讨论