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 仿真结果