【优化求解】基于蜜獾算法(HBA)求解最优目标matlab代码

1 简介

该算法由Fatma A. Hashima等人于2021年提出,主要模拟了蜜獾的挖掘和寻找蜂蜜的动态搜索行为,因其实验结果良好,结构简单,故在未来具有广泛的应用前景。

蜜獾算法

蜜獾是一种皮毛黑白相间的哺乳动物,常生活在非洲、亚洲西南部和印度次大陆的半沙漠和雨林中,以其无畏的天性而闻名:

图1 平头哥珍贵照片

蜜獾是一种聪明的动物,它们能够使用工具,而且非常喜欢蜂蜜。由于它们勇敢的天性(蜜之自信),当它们无法逃脱时,即会毫不犹豫地与对手硬刚:

图2 蜜獾与狮子对线

通常来讲,一只蜜獾可以使用嗅觉持续定位它的猎物。蜜獾喜欢蜂蜜,但它不善于定位蜂巢。不过有意思的是,蜂蜜向导(一种鸟)可以找到蜂巢,但不能得到蜂蜜。这些现象即使两者形成了合作关系:向导鸟将蜜獾带到蜂巢,后者利用前爪打开蜂巢,然后两者都享受团队合作的回报。

因此为了找到蜂巢,蜜獾要么狂嗅+狂挖,要么跟着向导鸟。文中称第一种情况为挖掘模式,而第二种情况为蜂蜜模式。在挖掘模式中,蜜獾利用自己的嗅觉能力来定位蜂巢,当接近蜂巢时,它会选择合适的地点进行挖掘;在蜂蜜模式中,蜜獾直接利用向导鸟定位蜂巢。

种群初始化

第一步仍然是熟悉的种群位置初始化:

式中ub、lb分别为搜索空间的上、下限。

蜂蜜吸引度

蜂蜜吸引度与蜂巢和第只蜜獾之间的距离有关:

式中xprey 即为蜂巢的位置,在算法中视作最优个体的位置。由图3可以看出,蜜獾与蜂巢的距离越近,这种吸引力越强:

图3 吸引程度与距离成反比

更新密度因子

在算法中,密度因子(α)控制着时变随机化,以确保从勘探到开采的平稳过渡:

式中为当前迭代次数,C=2。

挖掘阶段

此阶段,蜜獾的位置更新范围类似于图4所示的心形:

图4 蓝色轮廓表示气味强度,黑色圆线表示猎物位置

这个图是不是很眼熟?没错,学过高等数学的同学一定不陌生:

图5 高等数学教材附录

在算法中此心形位置更新可表示为:

不得不说,这个核心公式有点复杂!式中β=6表示指蜜獾获取食物的能力,di 在式(2)中已有介绍,r3、r4、r5、r6均为[0,1]内的随机数。为控制方向的参数:

这种参数在很多算法中均有它的身影,欲深入了解可通过我的毒爆虫优化算法进行学习:

蜂蜜阶段

此时蜜獾跟随向导鸟,直捣黄龙:

式中各参数前往前文均有介绍。至此,算法迭代伪代码为:

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Matlab科研辅导帮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值