✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
- 改进1:将固定的开关概率调整为一个动态变化的值,提高算法后期的收敛性
- 改进2:在全局搜索阶段,对最优位置进行邻域扰动,确保能跳出局部最优
- 改进3:引入随机惯性权重改变前一位置对当前位置更新的影响,确保能跳出局部最优
和Satvir Singora 算法的两个算法,通过观察蝴蝶智能行为而受到启发,新的一种群优化——蝴蝶优化算法(Butterfly Optimization Algorithm )。该算法的主要思想是模拟蝴蝶的觅食算法。对目标问题的求偶行为实现。
具体原理如下:
close all
clear
clc
warning off all
SearchAgents_no=30; % Number of search agents
Max_iteration=200; % Maximum number of iterations
Function_name='F5';
[lb,ub,dim,fobj]=Get_Functions_detailsPRO(Function_name);
[Best_score_BOA,Best_pos_BOA,cg_curve_BOA]=BOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
[Best_score_IBOA,Best_pos_IBOA,cg_curve_IBOA]=IBOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
% 绘图
figure('Position',[500 400 700 290])
subplot(1,2,1);
func_plot(Function_name);
title('Function Topology')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
% Convergence curve
subplot(1,2,2);
semilogy(cg_curve_BOA,'Color','k','Linewidth',2)
hold on
semilogy(cg_curve_IBOA,'Color','r','Linewidth',2)
title('Convergence curve')
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid on
box on
legend('BOA','IBOA')
display(['The best optimal value of the objective funciton found by BOA is : ', num2str(Best_score_BOA)]);
display(['The best optimal value of the objective funciton found by IBOA is : ', num2str(Best_score_IBOA)]);
[1]高文欣, 刘升, 肖子雅,等. 柯西变异和自适应权重优化的蝴蝶算法[J]. 计算机工程与应用, 2020, 56(15):8.
[2]王依柔, 张达敏, 徐航,等. 基于自适应扰动的疯狂蝴蝶算法[J]. 计算机应用研究, 2020(011):037.
❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除