火鹰优化(FHO)算法(含MATLAB代码)
先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。
火鹰优化(Fire Hawk Optimizer, FHO)算法是一种基于黑鸢(Milvus migrans)、啸栗鸢(Haliastur sphenurus)和褐隼(Falco berigora)的觅食行为提出的进化算法。严格来说,应该叫火鹰优化器。作者为了检验性能,总共使用了十种不同的经典和新的元启发式算法作为对比算法。实验结果表明,FHO算法比文献中比较的算法具有更好的性能。它的原始参考文献如下:
“Azizi M, Talatahari S, Gandomi A H. Fire Hawk Optimizer: A novel metaheuristic algorithm[J]. Artificial Intelligence Review, 2023, 56(1): 287-363.”
01
灵感来源
研究人员在研究澳洲野火扑灭的过程中发现,有一些老鹰会叼着着火的木棒往没有着火的地方扔。老鹰通过叼着一只燃烧的火棍,寻找猎物的踪迹,一旦发现猎物就抛下口中燃烧的火棍,使那些昆虫和小型哺乳动物用于藏匿的树林和草丛着火,当猎物纷纷出逃时,老鹰就会乘机捕猎。
不仅如此,当老鹰经过火场时,还会将没有燃烧的木棍丢进去,点燃后就捡走,到别处进行“趁火打劫”,这一过程如同奥运会传递圣火一般,但其实它们是在纵火,当地原住民称它们为“火鹰”。火鹰不仅仅是指一种鸟类,而是三种常见的鹰类:黑鸢、啸栗鸢、褐隼。这三种鹰类体积不大,体长只有40-50厘米,翼展110厘米左右,体重约在500-800克之间。一旦火鹰们纵火成功,有些会去捕捉慌乱出逃的猎物,然而更聪明的火鹰会在附近静静地等待,一旦火被扑灭,它们就会奋勇冲刺,享受这盛大的“烤肉自助餐”。这便是火鹰的觅食行为。图1显示了这些鸟在火周围的行为。
图1 火鹰在火场周围的行为
因此,FHO算法正是通过模拟火鹰的这种捕食方式而得到的。
02
算法设计
与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。
03
计算流程
FHO算法的计算流程如图2所示:
图2 FHO算法计算流程
04
实验仿真
对FHO算法的性能进行简单的测试。将FHO算法用于函数寻优,它的MATLAB程序严格按照原始参考文献进行编写。此外,种群规模N为50,最大迭代次数T取1000,Benchmark函数采用的是CEC2005测试集。
这里以CEC2005测试集中的单峰函数Sphere (f1)和多峰函数Ackley (f10)为例,展示FHO算法在30维环境下的收敛效果,对比算法选择了灰狼优化(GWO)、鲸鱼优化( WOA)、人工电场算法( AEFA)、蜣螂优化( DBO)和金豺优化( GJO)。如图3所示,这里就不再做进一步的分析了。
(a) f1
(b) f10
图3 6种进化算法的收敛曲线对比
其次,我们来检验一下FHO算法对全局勘探和局部开发的平衡能力。如图4所示,是FHO算法在CEC2005测试函数f7上的勘探和开发占比曲线。可以看到,FHO算法能在勘探和开发之间达到动态平衡,且Exploitation占比最后达到了90%。
图4 FHO在CEC2005 f7上的勘探和开发百分占比变化曲线
05
MATLAB代码
FHO算法的MATLAB代码可通过复制下方链接进入获得。代码严格按照原始参考文献编写,附有详细注释。
(公众号里有,关注公众号:启发式算法讨论)
FHO算法的勘探(Exploration)和开发(Exploitation)占比分析:
(公众号里有,关注公众号:启发式算法讨论)
weixin_46556269: 在滚粪球和跳舞的地方的不是取绝对值吗,为啥代码中没有那
2401_84676939: 请问,如果遇到不规则障碍物怎么处理?
学不进去要我命: 感谢!很有帮助。坐标轴上的数字没办法直接鼠标删除,但可以通过属性检查器里将Xtick清空达到删除的目的。
菠萝还是凤梨: 可以通过在同一图片上再建立一个坐标轴,绘制想要放大部分的数据,参考题主进行移动小图,解决问题
代码搬运工*: 啥都不明白还发啥文?