先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附带MATLAB代码。
这篇文章在这里:点一下
哈里斯鹰优化(HHO)算法:
哈里斯鹰优化(Harris Hawk Optimization, HHO)算法是2019年提出的一种群智能优化算法,由德黑兰大学的Heidari等人提出。HHO算法的寻优能力强,并且没有繁琐的调参环节。它的原始参考文献如下:
“Heidari A A, Mirjalili S, Faris H, et al. Harris hawks optimization: Algorithm and applications[J]. Future generation computer systems, 2019, 97: 849-872.”
这里先分享一个WOS上的数据,HHO算法在提出的3年时间里,被广泛引用和研究。如图1所示,HHO算法是一个被高引的工作,具有广泛的认可度。所以,这一期的推送,还是值得大家看一下~
图1 HHO算法在WOS上的引用数据
01
灵感来源
哈里斯鹰捕捉猎物的主要战术是突袭。在这种策略中,几只鹰试图从不同的方向合作攻击。捕杀可能会在几秒钟内迅速完成,但考虑到猎物的逃跑能力,捕杀也可能会持续几分钟。哈里斯鹰会在猎物附近进行多次短距离的俯冲,如图1所示。哈里斯鹰可以根据环境的动态性质和猎物的逃跑模式,展示出各种各样的追逐方式。
图1 哈里斯鹰短距离俯冲
当最好的鹰(首领)俯冲捕食猎物时,往往会出现转换策略,追逐将由另一名成员继续进行。这种转换有利于迷惑逃跑的猎物。这种战术的主要优势是,哈里斯鹰可以将猎物追到筋疲力尽,最后,其中一只鹰(通常是最强大和最有经验的鹰)毫不费力地抓住了疲惫的猎物,并与其他成员分享。
因此,HHO算法是基于哈里斯鹰捕食猎物的过程而提出的智能优化算法,通过对哈里斯鹰不同捕食策略的数学建模,实现种群的进化。算法设计相对复杂,计算公式较多,但大部分公式是相似的。
02
算法设计
HHO算法主要分为三部分:勘探、勘探与开发的转换、开发。与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。
图2 HHO算法勘探与开发的转换方式
由此,作者便通过模拟哈里斯鹰捕食猎物的行为设计出了HHO算法。HHO算法的计算公式较多,但并没有涉及参数的选取,也就是说,HHO算法的性能基本不受参数的影响,参数灵敏度低。此外,HHO算法的位置更新公式较多,实际上都是高度相似的,看起来确实有点恐怖,但也有效地平衡了算法的勘探与开发。
03
计算流程
HHO算法虽然计算公式多,但并没有增加额外的循坏,只是存在更多的判断步骤。只要理清楚每个判断下的具体位置更新方式就能弄清它的计算流程了。这里我用visio绘制了HHO算法的计算流程图,如图3所示。大家跟着我的流程图进行编码,就很容易了~
图3 HHO算法的计算流程
04
实验仿真
HHO算法的设计相对来说,比较复杂,计算公式较多,计算流程也比较繁琐。这里就来检验一下作者通过牺牲一定的计算量是否换来了算法的先进性能。HHO算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模N我取的50,最大迭代次数T为500,问题维度D为50,基准函数采用的是CEC2005。
这里以多峰函数Ackley、Levy和单峰函数Zakharov为例,展示HHO算法在50维环境下的收敛效果,如图4所示。这里就不再进一步做分析了。
(a) Ackley
(b) Levy
(c) Zakharov
图4 HHO算法的收敛曲线
05
MATLAB代码
HHO算法的MATLAB代码可关注公众号获取。代码严格按照原始参考文献编写,附有详细注释。我个人建议是自己动手编,在理清算法计算流程后,编码是非常容易的!
关于其他智能优化算法的介绍,可关注我的个人公众号:启发式算法讨论