人工兔优化(ARO)算法(含开源代码)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论

原文在这里:点一下

人工兔优化(ARO)算法:

人工兔优化(Artificial Rabbits Optimization, ARO)算法是2022年提出的一种新的智能优化算法,由河北工程大学水利水电学院的王利英教授团队提出,并将其应用于工程设计问题。它的原始参考文献如下:

“Wang L, Cao Q, Zhang Z, et al. Artificial rabbits optimization: A new bio-inspired meta-heuristic algorithm for solving engineering optimization problems[J]. Engineering Applications of Artificial Intelligence, 2022, 114: 105082.”

01
灵感来源

兔子是食草动物,主要以草、灌木和多叶杂草为食。就像我们进化史上的其他生物一样,兔子必须为了生存而进化。为了防止巢被捕食者发现,兔子不吃洞附近的草,它们总是在巢外寻找食物。兔子的视野非常开阔,它们可以很容易地在大范围内找到食物。作者将这种迂回觅食策略视为勘探。兔子的这种生存策略在中国广为流传,就像一句成语:“兔子不吃窝边草”。兔子的另一种生存策略是随机躲藏。兔子善于挖洞筑巢,为了躲避捕食者或猎人的踪迹,兔子会在自己的窝周围挖很多洞,随机选择一个作为躲避捕食者的避难所。兔子前腿短,后腿长,它们有强壮的肌肉和肌腱,这使它们跑得更快。此外,兔子还能在奔跑时突然停下,急转弯或以锯齿形跑回以逃避追赶。这种生存策略很容易迷惑敌人,帮助敌人逃脱跟踪,可以有效增加兔子的生存概率。作者将这种随机隐藏策略视为利用。

由于兔子处于食物链的低端,有很多捕食者,为了躲避危险,兔子必须快速奔跑,这样会使兔子的能量减少,所以兔子需要根据能量的不同,在绕路觅食和随机躲藏之间进行切换。在算法中就是勘探与开发之间的转换。

图1显示了一只兔子会同时拥有几个洞穴。

图1 “狡兔三窟”

因此,ARO算法的灵感来源于自然界中兔子的生存策略,包括绕道觅食和随机躲藏。ARO算法利用真实兔子的觅食和隐藏策略,通过能量递减在两种策略之间转换。作者设计了相应的数学模型,并对所提出的ARO算法进行了概述。

02
算法设计

如上所述,ARO算法应该包括勘探算子、开发算子,以及勘探到开发的转换。对应到兔子的行为,就是绕道觅食、随机躲藏,以及能量变换。与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。

图2 L在1000次迭代中的动态变化

图3 A在1000次迭代中的变化曲线

由此,作者便基于兔子的觅食和躲藏行为设计出了ARO算法。作者利用能量因子A巧妙地平衡了种群的勘探与开发,并根据兔子的绕道觅食和随机躲藏行为设计了对应的寻优算子,实现了算法的全局搜索与局部开发。ARO算法设计原理简单,是一种新的生物启发的元启发式算法。

03
计算流程

ARO算法的计算流程伪代码如下,图片截自算法的原始参考文献。

图4 ARO算法计算流程

04
实验仿真

这里对ARO算法的性能进行简单的测试。将ARO算法用于函数寻优,选择2019年的哈里斯鹰优化(HHO)算法和2022年的金豺优化(GJO)算法进行对比(往期推送有这两个算法的详细介绍,可以去翻)。算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模取的50,最大迭代次数为500,基准函数采用的是CEC2005测试集。

这里以CEC2005测试集中的单峰函数Sphere (f1)和多峰函数Ackley (f10)、Generalized Penalized 1 (f12)为例,展示ARO算法在30维环境下的收敛效果,如图5所示。实验环境与实验设置完全相同,大家可以观察一下3种算法的对比效果。这里就不再做进一步的分析了。

(a) f1

(b) f10

(c) f12

图5 ARO算法与HHO算法、GJO算法的收敛曲线对比

05
MATLAB代码

公众号里面有,开源的。自己关注吧

猜你喜欢

转载自blog.csdn.net/jieyanping/article/details/128472935