文章目录
【获取资源
请见文章第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 Sine映射种群初始化
原始的HBA算法随机的获得初始解,这很难确保所有个体能均匀地覆盖整个解空间。混沌映射在优化算法中经常被用来分散种群和减少聚集。
Sine混沌映射具有结构简单,效率高等特点。Sine混沌映射公式如下:
2.2 黄金正弦策略扰动
黄金正弦算法通过组合正弦函数和黄金比例的方法进行迭代搜索,以接近最优解。黄金正弦作用时,搜索空间逐渐变窄,并在可能达到最优解的区域进行搜索,以提高收敛效率。黄金正弦的参考公式如下:
3. 部分代码展示
%% 清空环境变量
clear;clc;close all
SearchAgents_no=30; % 种群数量
Function_name='F9'; % 标准测试函数编号(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_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_HBA,'LineWidth',2,'Color','b')
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('HBA','IHBA')
display(['The best optimal value of the objective funciton found by HBA is : ', num2str(Best_score_HBA)]);
display(['The best optimal value of the objective funciton found by IHBA is : ', num2str(Best_score_IHBA)]);
4. 仿真结果展示
5. 资源获取说明
可以获取完整代码资源。👇👇👇👀名片