1 简介
该算法由Fatma A. Hashima等人于2021年提出,主要模拟了蜜獾的挖掘和寻找蜂蜜的动态搜索行为,因其实验结果良好,结构简单,故在未来具有广泛的应用前景。
蜜獾算法
蜜獾是一种皮毛黑白相间的哺乳动物,常生活在非洲、亚洲西南部和印度次大陆的半沙漠和雨林中,以其无畏的天性而闻名:
图1 平头哥珍贵照片
蜜獾是一种聪明的动物,它们能够使用工具,而且非常喜欢蜂蜜。由于它们勇敢的天性(蜜之自信),当它们无法逃脱时,即会毫不犹豫地与对手硬刚:
图2 蜜獾与狮子对线
通常来讲,一只蜜獾可以使用嗅觉持续定位它的猎物。蜜獾喜欢蜂蜜,但它不善于定位蜂巢。不过有意思的是,蜂蜜向导(一种鸟)可以找到蜂巢,但不能得到蜂蜜。这些现象即使两者形成了合作关系:向导鸟将蜜獾带到蜂巢,后者利用前爪打开蜂巢,然后两者都享受团队合作的回报。
因此为了找到蜂巢,蜜獾要么狂嗅+狂挖,要么跟着向导鸟。文中称第一种情况为挖掘模式,而第二种情况为蜂蜜模式。在挖掘模式中,蜜獾利用自己的嗅觉能力来定位蜂巢,当接近蜂巢时,它会选择合适的地点进行挖掘;在蜂蜜模式中,蜜獾直接利用向导鸟定位蜂巢。
种群初始化
第一步仍然是熟悉的种群位置初始化:
式中ub、lb分别为搜索空间的上、下限。
蜂蜜吸引度
蜂蜜吸引度与蜂巢和第i 只蜜獾之间的距离有关:
式中xprey 即为蜂巢的位置,在算法中视作最优个体的位置。由图3可以看出,蜜獾与蜂巢的距离越近,这种吸引力越强:
图3 吸引程度与距离成反比
更新密度因子
在算法中,密度因子(α)控制着时变随机化,以确保从勘探到开采的平稳过渡:
式中t 为当前迭代次数,C=2。
挖掘阶段
此阶段,蜜獾的位置更新范围类似于图4所示的心形:
图4 蓝色轮廓表示气味强度,黑色圆线表示猎物位置
这个图是不是很眼熟?没错,学过高等数学的同学一定不陌生:
图5 高等数学教材附录
在算法中此心形位置更新可表示为:
不得不说,这个核心公式有点复杂!式中β=6表示指蜜獾获取食物的能力,di 在式(2)中已有介绍,r3、r4、r5、r6均为[0,1]内的随机数。F 为控制方向的参数:
这种参数在很多算法中均有它的身影,欲深入了解可通过我的毒爆虫优化算法进行学习:
蜂蜜阶段
此时蜜獾跟随向导鸟,直捣黄龙:
式中各参数前往前文均有介绍。至此,算法迭代伪代码为:
2 部分代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Honey Badger Algorithm source code % paper: % Hashim, Fatma A., Essam H. Houssein, Kashif Hussain, Mai S. % Mabrouk, Walid Al-Atabany. % "Honey Badger Algorithm: New Metaheuristic Algorithm for % % Solving Optimization Problems." % Mathematics and Computers in Simulation, 2021. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % clc;clear all; close all; fitfun = @sumsqu; dim=30; T=1000; Lb=-10; Ub=10; N=30; [xmin,fmin,CNVG]=HBA(fitfun,dim,Lb,Ub,T,N); figure, semilogy(CNVG,'r') xlim([0 T]); title('Convergence curve') xlabel('Iteration'); ylabel('Best fitness obtained so far'); legend('HBA') display(['The best location= ', num2str(xmin)]); display(['The best fitness score = ', num2str(fmin)]);
3 仿真结果