【获取资源请见文章第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. 仿真结果展示
文章来源:https://www.toymoban.com/news/detail-835688.html
5. 资源获取说明
可以获取完整代码资源。👇👇👇文章来源地址https://www.toymoban.com/news/detail-835688.html
到了这里,关于【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!