蜜獾算法(HBA)(含MATLAB代码)

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

蜜獾算法(HBA):

生死看淡,不服就干!你知道这句话形容的是什么动物吗?你知道它为什么被吉尼斯世界纪录评为“世界上最无畏的动物”吗?今天的主角就是这个勇敢无畏、绝对疯狂的家伙——蜜獾。

大家可能了解更多的是这家伙爱偷蜂蜜,但是,它也为智能优化算的发展做出了突出贡献!正是基于它采蜂蜜的行为,一种新型群智能优化算法又问世了。这里再好奇地问一下,你是不是和我一样把这个字读成了guàn,人家叫蜜huān……”

蜜獾算法(Honey Badger Algorithm, HBA)是2022年提出的一种新型群智能优化算法,也是今年才提出的,热乎着呢。HBA主要通过模拟蜜獾在自然界中的觅食行为(主要就是挖洞和偷蜂蜜)来进行寻优,具有较强的搜索能力,且收敛速度快。它的原始参考文献如下:
“Hashim F A, Houssein E H, Hussain K, et al. Honey Badger Algorithm: New metaheuristic algorithm for solving optimization problems [J]. Mathematics and Computers in Simulation, 2022, 192: 84-110.”

蜜獾,江湖人称“平头哥”,世界上最无畏的动物(因为蜜獾以“世界上最无所畏惧的动物”被收录在吉尼斯世界纪录大全中数年之久)。之所以它的名字叫做蜜獾,不是因为它长相甜美可爱,而是因为它非常喜欢吃蜂蜜,甚至有蜜獾因为贪吃蜂蜜而被马蜂蛰死的情况发生过,不过它们依旧是乐此不疲。除此之外,平头哥还有一个特点:凶狠好斗,脾气暴躁。看见什么动物都敢上去嘶吼打斗一番,即使是狮子也不例外,如图1所示。这就是蜜獾被称为“哥”的原因,而“平头”是因为蜜獾的头顶比较宽阔和平坦,再加上布满了白色的毛发,如图2所示。这就是“平头哥”称号的由来,可以看出它是真的勇。因此,为了体现对世界上最无所畏惧的动物的尊敬,接下来我将使用“平头哥”进行阐述。

图1 平头哥单挑狮群


图2 平头哥的大平头

01

灵感来源

 平头哥具有老鼠的嗅觉技能,通过不断缓慢行走来定位猎物。它开始是通过挖掘来确定猎物的大致位置,并最终捕获猎物,如图3所示。在一天内,平头哥可以在半径40公里或更大的范围内挖50个洞觅食。此外,平头哥喜欢蜂蜜,但它不擅长定位蜂巢。而蜜䴕(喜欢吃蜂蜜的鸟,擅长寻找蜂巢)可以找到蜂巢,但不能得到蜂蜜。这种现象就导致了两者之间的双赢关系,蜜䴕把平头哥带到蜂巢,然后平头哥用它的长爪子打开蜂巢,最后双方享受合作得到的蜂蜜,如图4所示。

 图3 平头哥挖掘洞穴寻找食物

图4 平头哥跟随蜜䴕找到蜂巢

因此,作者是对平头哥挖掘洞穴觅食和跟随蜜䴕采食蜂蜜的两种捕食行为进行建模,将其抽象为优化问题中,种群个体搜索最优解的过程,即食物是最优解,平头哥是种群中的个体,最终设计出了基于平头哥觅食行为的智能优化算法HBA。

02

算法设计

第2部分就将详细解释作者对算法的具体设计。这里与上一期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。

HBA模拟了平头哥的觅食行为。从上文可以知道,为了寻找食物来源,平头哥要么挖掘洞穴,要么跟踪蜜䴕。作者将第一种情况称为挖掘模式,第二种情况称为采蜜模式。

由此,作者便将自然界中平头哥觅食的两种行为(挖掘和采蜜)抽象为数学公式,设计出了算法HBA。算法最精彩的地方就是对挖掘和采蜜两种行为的数学建模,巧妙地设计出了数学表达式来实现种群进化。 

03

计算步骤

HBA的计算步骤非常简单,将种群分别执行两种不同的觅食方式就可以完成种群进化。这里我用伪代码给出了HBA的计算流程,如图6所示。

图6 HBA的计算流程

04

实验仿真

算法提出后,当然要验证它的有效性与先进性。当然,这个过程需要非常充足的数值实验进行对比分析。这里我只简单测试一下算法的性能,在代码实现中,所有参数的取值与原始参考文献一致,种群规模N我设置的50,最大迭代次数T为500,问题维度D设置为30。

这里以单峰函数Sphere和多峰函数Ackley、Levy为例,展示HBA的收敛性能,这些基准函数的最优值都为0。先看HBA在单峰函数上的收敛情况,如图7所示。

图7 Sphere

可以看出,HBA在Shpere函数上收敛非常迅速,并且收敛精度不断提高,达到了10的-300指数级。这是因为在HBA的算法设计中,所有个体都是根据猎物来更新自身的位置,即种群中的最优个体。因此,种群始终向最优个体方向进化。而单峰函数不存在局部最优,算法的收敛曲线始终成下降的趋势。

多峰函数可以综合测试算法的性能,尤其跳出局部最优的能力。在展示之前,我先给大家看一下Ackley和Levy函数的图形,如图8所示。

(a) Ackley 

(b) Levy

图8 两个多峰函数的函数图(d=2)

 可以看出,它们存在一定数量的局部极小值,并且这只是二维的情况。随着维度的上升,局部最优的个数会大规模上升,算法要想求得最优解的难度越来越大。好了,现在我展示HBA在两个多峰函数上的收敛曲线,如图9所示。

(a) Ackley

(b) Levy

图9 HBA在两个多峰函数上的收敛曲线

 可以发现,HBA算法在Ackley函数上迅速朝着最优解方向进化,在不到50次的迭代中,收敛精度就达到了10的-15指数级。但是,HBA在Levy上的收敛精度有待提升,并且种群很快陷入局部最优。因此,算法性能的优越是针对具体问题而言的,不同的问题上会表现出不同的性能。

05

MATLAB代码

公众号:启发式算法讨论

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

algorithmzzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值