获取资源请见文章第5节:资源获取】


1. 蜜獾算法(HBA)

蜜獾算法(Honey Badger Algorithm,HBA)是模仿蜜獾觅食行为而形成的一种优化算法。为了定位食物来源,蜜獾通常有两种方式,一是通过闻和挖,二是通过跟着导蜜鸟的方式。
在蜜獾算法中,我们将第一种情况称为挖掘模式,第二种是蜂蜜模式。在前一种模式中,它利用自己的嗅觉能力来接近猎物的位置;当到达猎物附近时,它会在猎物周围移动,选择合适的地方挖掘和捕捉猎物。在后一种模式中,蜜獾以导蜜鸟为向导直接定位蜂窝。

1.1 挖掘阶段

在挖掘阶段,蜜獾的动作类似于一个心形,这个心形的挖掘行为可以被如下的公式描述:
在这里插入图片描述
其中, x p r e y x_{prey} xprey表示到目前为止的全局最优解, F F F取-1或者1, I I I表示某个个体的强度值(强度值和当前个体与猎物的距离等有关),其余参数为随机值或者常量。

1.2 蜂蜜阶段

在蜂蜜阶段,蜜獾会跟随导蜜鸟到达蜂巢,从而寻找到蜂蜜。这个过程可以被如下的公式来描述:
在这里插入图片描述

2. 改进后的蜜獾算法(IHBA)

2.1 Tent映射种群初始化

原始的HBA算法随机的获得初始解,这很难确保所有个体能均匀地覆盖整个解空间。混沌映射在优化算法中经常被用来分散种群和减少聚集。主要的两类混沌映射是Logistic混沌映射和Tent混沌映射,而后者创建了一个更均匀的混沌序列,并且具有更快的收敛速度。

Tent映射的公式如下:
在这里插入图片描述
Tent映射使种群分布广泛,并确保种群在全局范围内随机漫游。

2.2 随机扰动的控制参数

原始HBA算法中的控制参数 α \alpha α的变化是平滑的。一旦种群陷入局部最优,就很难保持种群的多样性,导致整个算法的寻优效果很差。本文引入了一种具有随机扰动特性的控制参数。
改进前后的控制参数 α \alpha α对比如下图所示:
在这里插入图片描述

2.3 小孔成像反向学习策略

蜜獾寻找猎物的过程主要由当前最优个体引导。如果当前最优个体是局部最优个体,算法可能会出现收敛过早的情况。因此本文提出了一种小孔成像策略,并将其逐维应用于当前的最佳个体,它不仅消除了个体维度之间的相互干扰,也提高了当前最优个体的多样性。

小孔成像反向学习的原理如下图所示:
在这里插入图片描述
小孔成像反向学习策略的实现如下:
在这里插入图片描述

3. 部分代码展示

%% 清空环境变量
clear;clc;close all
SearchAgents_no=30; % 种群数量
Function_name='F3'; % 标准测试函数编号(F1~F23)
Max_iteration=500; % 最大迭代次数

% 获取目标函数对应参数
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
% 寻优
[Best_score_HBA,Best_pos_HBA,cg_curve_HBA]=HBA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
[Best_score_PSO,Best_pos_PSO,cg_curve_PSO]=PSO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
[Best_score_GA,Best_pos_GA,cg_curve_GA]=GA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
[Best_score_DBO,Best_pos_DBO,cg_curve_DBO]=DBO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
[Best_score_IHBA,Best_pos_IHBA,cg_curve_IHBA]=IHBA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);

figure('Position',[500 500 660 290])
% 绘制搜索空间
subplot(1,2,1);
func_plot(Function_name);
title('Test function')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
grid off

% 绘制收敛曲线
subplot(1,2,2);
semilogy(cg_curve_PSO,'LineWidth',2,'Color','b')
hold on
semilogy(cg_curve_GA,'LineWidth',2,'Color','g')
hold on
semilogy(cg_curve_DBO,'LineWidth',2,'Color','m')
hold on
semilogy(cg_curve_HBA,'LineWidth',2,'Color','k')
hold on
semilogy(cg_curve_IHBA,'LineWidth',2,'Color','r')
title('Convergence curve')
xlabel('Iteration');
ylabel('Best score obtained so far');

axis tight
grid off
box on
legend('PSO','GA','DBO','HBA','IHBA')

4. 仿真结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 资源获取说明

可以获取完整代码资源。👇👇👇👀名片

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐