【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】

这篇具有很好参考价值的文章主要介绍了【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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


1. 蜜獾算法(HBA)

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

1.1 挖掘阶段

在挖掘阶段,蜜獾的动作类似于一个心形,这个心形的挖掘行为可以被如下的公式描述:
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法
其中, x p r e y x_{prey} xprey表示到目前为止的全局最优解, F F F取-1或者1, I I I表示某个个体的强度值(强度值和当前个体与猎物的距离等有关),其余参数为随机值或者常量。

1.2 蜂蜜阶段

在蜂蜜阶段,蜜獾会跟随导蜜鸟到达蜂巢,从而寻找到蜂蜜。这个过程可以被如下的公式来描述:
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法

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

2.1 Tent映射种群初始化

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

Tent映射的公式如下:
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法
Tent映射使种群分布广泛,并确保种群在全局范围内随机漫游。

2.2 随机扰动的控制参数

原始HBA算法中的控制参数 α \alpha α的变化是平滑的。一旦种群陷入局部最优,就很难保持种群的多样性,导致整个算法的寻优效果很差。本文引入了一种具有随机扰动特性的控制参数。
改进前后的控制参数 α \alpha α对比如下图所示:
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法

2.3 小孔成像反向学习策略

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

小孔成像反向学习的原理如下图所示:
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法
小孔成像反向学习策略的实现如下:
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法

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

【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法
【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】,Matlab,#群智能算法改进,算法,matlab,蜜獾算法

5. 资源获取说明

可以获取完整代码资源。👇👇👇文章来源地址https://www.toymoban.com/news/detail-835688.html

到了这里,关于【群智能算法改进】一种改进的蜜獾算法 IHBA算法[1]【Matlab代码#62】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包