[免费]30种最新智能优化算法求解多个基准测试函数(MATLAB代码)

笔者整理了30种智能优化算法对多个测试函数进行测试,效果表现明显。免费分享给大家。

祝大家生活愉快,记得点赞哦!、

免费获取: 相关资源已上传本人资源,可免费下载。   【免费】基于多个测试函数的30种智能优化算法合集免费分享资源-CSDN文库

clear;clc;close all
Function_name='F3'; % 使用方程的名字,对应 Functions_details 文件
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);  %得到具体的方程即目标函数,变量的维度,变量的上下限
figure(1)
x=lb/2:0.1:ub/2;  %x轴,y轴范围
y=x;
L_num=length(x);
f_value=[];      %对应x,y的函数值
for i=1:L_num
    for j=1:L_num
        f_value(i,j)=fobj([x(i),y(j)]);
    end
end
surfc(x,y,f_value,'LineStyle','none');
pop_num=100;  % Number of search agents 种群数量
Max_iter=1000;    % Maximum numbef of iterations 最大迭代次数
%以下是各种优化算法的比较
Time_compare=[];      %算法的运行时间比较
Fival_compare=[];       %算法的最终目标比较
curve_compare=[];     %算法的过程函数比较
%麻雀搜索算法
name_all=[];     %算法的名称记录
%%
t1=clock;
iter=1;
[fMin_SSA,bestX_SSA,SSA_curve]=SSA(pop_num,Max_iter,lb,ub,dim,fobj);    %麻雀搜索算法
t2=clock;
time_SSA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_SSA];   
Time_compare=[Time_compare,time_SSA(end)];
curve_compare=[curve_compare;SSA_curve];
name_all{1,iter}='SSA';
iter=iter+1;
%%
% 粒子群优化算法
% t1=clock;
% [fMin_PSO,bestX_PSO,PSO_curve]=PSO(pop_num,Max_iter,lb,ub,dim,fobj);  % 粒子群优化算法
% t2=clock;
% time_PSO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
% Fival_compare=[Fival_compare,fMin_PSO];
% Time_compare=[Time_compare,time_PSO(end)];
% curve_compare=[curve_compare;PSO_curve];
% name_all{1,iter}='PSO';
% iter=iter+1;

% 模拟退火优化算法
t1=clock;
[fMin_SA,bestX2,SA_curve]=SA(Max_iter,lb,ub,dim,fobj);                               % 模拟退火优化算法
t2=clock;
time_SA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_SA];
Time_compare=[Time_compare,time_SA(end)];
curve_compare=[curve_compare;SA_curve];
name_all{1,iter}='SA';
iter=iter+1;

% % 遗传算法优化算法 
% t1=clock;
% [fMin_GA,bestX_GA,GA_curve]=GA(pop_num,Max_iter,lb,ub,dim,fobj);     % 遗传算法优化算法    
% time_GA=(clock-t1);
% Fival_compare=[Fival_compare,fMin_GA];
% Time_compare=[Time_compare,time_GA(end)];
% curve_compare=[curve_compare;GA_curve];
% name_all{1,iter}='GA';
% iter=iter+1;

% 灰狼优化算法 
t1=clock;
[fMin_GWO,bestX_GWO,GWO_curve]=GWO(pop_num,Max_iter,lb,ub,dim,fobj);      % 灰狼优化算法 
t2=clock;
time_GWO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_GWO];
Time_compare=[Time_compare,time_GWO(end)];
curve_compare=[curve_compare;GWO_curve];
name_all{1,iter}='GWO';
iter=iter+1;

% 改进灰狼优化算法 
t1=clock;
[fMin_IGWO,bestX_IGWO,IGWO_curve]=IGWO(pop_num,Max_iter,lb,ub,dim,fobj);  
t2=clock;
time_IGWO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_IGWO];
Time_compare=[Time_compare,time_IGWO(end)];
curve_compare=[curve_compare;IGWO_curve];
name_all{1,iter}='IGWO';
iter=iter+1;

%鲸鱼优化算法
t1=clock;
[fMin_WOA,bestX_WOA,WOA_curve]=WOA(pop_num,Max_iter,lb,ub,dim,fobj); % 鲸鱼优化算法    
t2=clock;
time_WOA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_WOA];
Time_compare=[Time_compare,time_WOA(end)];
curve_compare=[curve_compare;WOA_curve];
name_all{1,iter}='WOA';
iter=iter+1;

%改进鲸鱼优化算法
t1=clock;
[fMin_EWOA,bestX_EWOA,EWOA_curve]=E_WOA(pop_num,Max_iter,lb,ub,dim,fobj); 
t2=clock;
time_EWOA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_EWOA];
Time_compare=[Time_compare,time_EWOA(end)];
curve_compare=[curve_compare;EWOA_curve];
name_all{1,iter}='EWOA';
iter=iter+1;

% %蚁群算法
% %时间略长
% t1=clock;
% [fMin_ALO,bestX_ALO,ALO_curve]=ALO(pop_num,Max_iter,lb,ub,dim,fobj);     
% t2=clock;
% time_ALO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
% Fival_compare=[Fival_compare,fMin_ALO];
% Time_compare=[Time_compare,time_ALO(end)];
% curve_compare=[curve_compare;ALO_curve];
% name_all{1,iter}='ALO';
% iter=iter+1;

%蝴蝶优化算法
t1=clock;
[fMin_MFO,bestX_MFO,MFO_curve]=MFO(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_MFO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_MFO];
Time_compare=[Time_compare,time_MFO(end)];
curve_compare=[curve_compare;MFO_curve];
name_all{1,iter}='MFO';
iter=iter+1;
%%
% %蜻蜓优化算法
% %时间略长
% t1=clock;
% [fMin_DA,bestX_DA,DA_curve]=DA(pop_num,Max_iter,lb,ub,dim,fobj);     
% t2=clock;
% time_DA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
% Fival_compare=[Fival_compare,fMin_DA];
% Time_compare=[Time_compare,time_DA(end)];
% curve_compare=[curve_compare;DA_curve];
% name_all{1,iter}='DA';
% iter=iter+1;
%%
% % %蝗虫优化算法
% %%速度太慢了
% t1=clock;
% [fMin_GOA,bestX_GOA,GOA_curve]=GOA(pop_num,Max_iter,lb,ub,dim,fobj);     
% t2=clock;
% time_GOA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
% Fival_compare=[Fival_compare,fMin_GOA];
% Time_compare=[Time_compare,time_GOA(end)];
% curve_compare=[curve_compare;GOA_curve];
% name_all{1,iter}='GOA';
% iter=iter+1;

% % %改进版蝗虫优化算法
% % 时间还是略长
% t1=clock;
% [fMin_IGOA,bestX_IGOA,IGOA_curve]=IGOA(pop_num,Max_iter,lb,ub,dim,fobj);     
% t2=clock;
% time_IGOA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
% Fival_compare=[Fival_compare,fMin_IGOA];
% Time_compare=[Time_compare,time_IGOA(end)];
% curve_compare=[curve_compare;IGOA_curve];
% name_all{1,iter}='IGOA';
% iter=iter+1;

% %多版本优化器  Multi-Verse Optimizer
% t1=clock;
% [fMin_MVO,bestX_MVO,MVO_curve]=MVO(pop_num,Max_iter,lb,ub,dim,fobj);     
% t2=clock;
% time_MVO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
% Fival_compare=[Fival_compare,fMin_MVO];
% Time_compare=[Time_compare,time_MVO(end)];
% curve_compare=[curve_compare;MVO_curve];
% name_all{1,iter}='MVO';
% iter=iter+1;

%正弦余弦优化算法 Sine Cosine Algorithm
t1=clock;
[fMin_SCA,bestX_SCA,SCA_curve]=SCA(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_SCA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_SCA];
Time_compare=[Time_compare,time_SCA(end)];
curve_compare=[curve_compare;SCA_curve];
name_all{1,iter}='SCA';
iter=iter+1;

%水母优化算法?Salp Swarm Algorithm
t1=clock;
[fMin_SS,bestX_SS,SS_curve]=SS(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_SS=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_SS];
Time_compare=[Time_compare,time_SS(end)];
curve_compare=[curve_compare;SS_curve];
name_all{1,iter}='SS';
iter=iter+1;

% % %平衡优化器 Equilibrium Optimizer
% %感觉时间有点慢
% t1=clock;
% RUN_NUM=30;
% [fMin_EO,bestX_EO,EO_curve]=EO(pop_num,Max_iter,lb,ub,dim,fobj,RUN_NUM);     
% t2=clock;
% time_EO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
% Fival_compare=[Fival_compare,fMin_EO];
% Time_compare=[Time_compare,time_EO(end)];
% curve_compare=[curve_compare;EO_curve];
% name_all{1,iter}='EO';
% iter=iter+1;

%秃鹰优化算法 African vultures optimization algorithm
t1=clock;
[fMin_AVOA,bestX_AVOA,AVOA_curve]=AVOA(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_AVOA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_AVOA];
Time_compare=[Time_compare,time_AVOA(end)];
curve_compare=[curve_compare;AVOA_curve];
name_all{1,iter}='AVOA';
iter=iter+1;

%人工蜂鸟算法 Artificial Hummingbird Algorithm
t1=clock;
[fMin_AHA,bestX_AHA,AHA_curve]=AHA(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_AHA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_AHA];
Time_compare=[Time_compare,time_AHA(end)];
curve_compare=[curve_compare;AHA_curve'];
name_all{1,iter}='AHA';
iter=iter+1;

%人工大猩猩部队优化算法 Artificial gorilla troops optimizer
t1=clock;
[fMin_GTO,bestX_GTO,GTO_curve]=GTO(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_GTO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_GTO];
Time_compare=[Time_compare,time_GTO(end)];
curve_compare=[curve_compare;GTO_curve'];
name_all{1,iter}='GTO';
iter=iter+1;

%流向算法 Flow Direction Algorithm
alpha=50; % Number of flows
beta=1; %Number of neighborhoods
t1=clock;
[fMin_FDA,bestX_FDA,FDA_curve]=FDA(Max_iter,lb,ub,dim,fobj,alpha,beta);     
t2=clock;
time_FDA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_FDA];
Time_compare=[Time_compare,time_FDA(end)];
curve_compare=[curve_compare;FDA_curve];
name_all{1,iter}='FDA';
iter=iter+1;

% 算术优化算法 The Arithmetic Optimization Algorithm
t1=clock;
[fMin_AOA,bestX_AOA,AOA_curve]=AOA(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_AOA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_AOA];
Time_compare=[Time_compare,time_AOA(end)];
curve_compare=[curve_compare;AOA_curve];
name_all{1,iter}='AOA';
iter=iter+1;

%鹈鹕优化算法 The Pelican Optimization Algorithm
t1=clock;
[fMin_POA,bestX_POA,POA_curve]=POA(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_POA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_POA];
Time_compare=[Time_compare,time_POA(end)];
curve_compare=[curve_compare;POA_curve];
name_all{1,iter}='POA';
iter=iter+1;

%变色龙优化算法 Chameleon Swarm Algorithm (CSA)  
t1=clock;
[fMin_CSA,bestX_CSA,CSA_curve]=CSA(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_CSA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_CSA];
Time_compare=[Time_compare,time_CSA(end)];
curve_compare=[curve_compare;CSA_curve];
name_all{1,iter}='CSA';
iter=iter+1;

%蛇优化算法 SO 
t1=clock;
[fMin_SO,bestX_SO,SO_curve]=SO(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_SO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_SO];
Time_compare=[Time_compare,time_SO(end)];
curve_compare=[curve_compare;SO_curve];
name_all{1,iter}='SO';
iter=iter+1;

%北方苍鹰优化算法Northern_Goshawk_Optimization_A_New_Swarm-Based_Algorithm
t1=clock;
[fMin_NGO,bestX_NGO,NGO_curve]=NGO(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_NGO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_NGO];
Time_compare=[Time_compare,time_NGO(end)];
curve_compare=[curve_compare;NGO_curve];
name_all{1,iter}='NGO';
iter=iter+1;

% % 矮猫鼬优化算法Dwarf Mongoose Optimization Algorithm source codes (version 1.0)   
% t1=clock;
% [fMin_DMOA,bestX_DMOA,DMOA_curve]=DMOA(pop_num,Max_iter,lb,ub,dim,fobj);     
% t2=clock;
% time_DMOA=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
% Fival_compare=[Fival_compare,fMin_DMOA];
% Time_compare=[Time_compare,time_DMOA(end)];
% curve_compare=[curve_compare;DMOA_curve'];
% name_all{1,iter}='DMOA';
% iter=iter+1;
%%
% 白鲨优化算法 White Shark Optimizer (WSO)
t1=clock;
[fMin_WSO,bestX_WSO,WSO_curve]=WSO(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_WSO=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_WSO];
Time_compare=[Time_compare,time_WSO(end)];
curve_compare=[curve_compare;WSO_curve];
name_all{1,iter}='WSO';
iter=iter+1;

% 阿狸八八和四十大盗优化算法 Ali baba and the Forty Thieves (AFT) algorithm 
t1=clock;
[fMin_AFT,bestX_AFT,AFT_curve]=AFT(pop_num,Max_iter,lb,ub,dim,fobj);     
t2=clock;
time_AFT=(t2(end)+t2(end-1)*60+t2(end-2)*3600-t1(end)-t1(end-1)*60-t1(end-2)*3600);
Fival_compare=[Fival_compare,fMin_AFT];
Time_compare=[Time_compare,time_AFT(end)];
curve_compare=[curve_compare;AFT_curve];
name_all{1,iter}='AFT';
iter=iter+1;
%%
load('color_list')
figure(2)
color_all=color_list(randperm(length(color_list)),:);
%画迭代过程曲线
for N=1:length(Fival_compare)
     plot(curve_compare(N,:),'Color',color_all(N,:),'LineWidth',2)
     hold on
end
xlabel('迭代次数');
ylabel('目标函数值');
grid on
box on
legend(name_all)
%以下可以显示
% display(['The best solution obtained by SSA is : ', num2str(bestX)]);
% display(['The best optimal value of the objective funciton found by SSA is : ', num2str(fMin)]);
%%  智能优化算法和内点法比较
t1=clock;
lb= lb.*ones( 1,dim );    %     约束上限
ub= ub.*ones( 1,dim );    %   约束下限   
x0 = zeros( 1, dim );   %随机初始化n个种群
[xsol,fval] = fmincon(fobj,x0,[],[],[],[],lb,ub);
time_interpoint=(clock-t1);         %内点法
Fival_compare=[Fival_compare,fval];
Time_compare=[Time_compare,time_interpoint(end)];
name_all{1,iter}='inter-point';
iter=iter+1;
%%  运行值和最终目标函数比较
figure(3)
color=color_list(randperm(length(color_list)),:);
width=0.7; %柱状图宽度
for  i=1:length(Fival_compare) 
   set(bar(i,Fival_compare(i),width),'FaceColor',color(i,:),'EdgeColor',[0,0,0],'LineWidth',2)
   hold on
    
   %在柱状图 x,y 基础上 绘制误差 ,low为下误差,high为上误差,LineStyle 误差图样式,'Color' 误差图颜色  
   % 'LineWidth', 线宽,'CapSize',误差标注大小
%    errorbar(i, y(i), low(i), high(i), 'LineStyle', 'none', 'Color', color(i+3,:), 'LineWidth', 1.5,'CapSize',18);
end
ylabel('obj-value')
ax=gca;
ax.XTick = 1:1:length(Fival_compare);
set(gca,'XTickLabel',name_all,"LineWidth",2);
set(gca,"FontName","Times New Roman","FontSize",12,"LineWidth",2)
%% 运行时间比较
figure(4)
color=color_list(randperm(length(color_list)),:);
width=0.7; %柱状图宽度
for  i=1:length(Fival_compare) 
   set(bar(i,Time_compare(i),width),'FaceColor',color(i,:),'EdgeColor',[0,0,0],'LineWidth',2)
   hold on
   %在柱状图 x,y 基础上 绘制误差 ,low为下误差,high为上误差,LineStyle 误差图样式,'Color' 误差图颜色  
   % 'LineWidth', 线宽,'CapSize',误差标注大小
%    errorbar(i, y(i), low(i), high(i), 'LineStyle', 'none', 'Color', color(i+3,:), 'LineWidth', 1.5,'CapSize',18);
end
ylabel('Time')
ax=gca;
ax.XTick = 1:1:length(Fival_compare);
set(gca,'XTickLabel',name_all,"LineWidth",2);
set(gca,"FontName","Times New Roman","FontSize",12,"LineWidth",2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值