CEC2019测试函数保姆级教程:1000+种群智能优化算法求解cec2019测试函数-matlab

目录

引言

完整Matlab代码下载

该代码一举歼灭所有群智能优化算法在cec2021测试函数的应用


引言

通常需要用cec测试函数对一个新方法的性能进行多方位的验证。各大公众号和博主将开源的cec测试函数和群智能优化算法系列进行高价售卖,给小伙伴们带来一些获取难度。鉴于此,本号前几期已分享了多个cec测试函数(cec2017cec2018cec2020cec2021cec2022)测试函数的快捷用法及matlab代码下载压缩包。

那么,本期在前期的基础上,继续照猫画虎推出cec2019测试函数的使用及matlab代码,1分钟让你学会。

该cec2019测试函数共有10个单目标测试函数。cec2017、cec2021、cec2022每个函数的变量维数是一样的,搜索区间也一样都在[-100,100]之间。而与其他测试函数不同的是,cec2019中每个函数的变量维数不一样,搜索区间也不一样所有的测试函数都是解决最小化问题,D为维数,如下形式:

图片

图片

首先需下载cec2019函数。函数的格式为cpp文件,cec19_func.cpp。在matlab里需要编译。在matlab的命令行输入:

mex cec19_func.cpp

图片

提示MEX 已成功完成,编译生成了cec19_func.mexw64文件即可。这里我们已经为各位小伙伴下载并编译好了,文末可直接享用

其次,加载cec2019测试函数。cec2019测试函数有10个,输入x的数据格式需为列向量,即N*1,调用方式为:

fobj = @(x) cec19_func(x,1);

数字1表示cec2019的第一个函数。当然,可以在1-10中任意选择一个数,就选择了对应的测试函数

如果你的输入数据x是一个行向量,即1*N,调用方式为:

fobj = @(x) cec19_func(x',1);

考虑到大部分优化算法中x的格式为(nPop种群数,Dim维度),因此,我们采用了第二种fobj的调用方式。如果遇到的x是(Dim维度,nPop种群数),还需要小伙伴自行改写成第一种方式。

我们将所有cec2019函数的信息(上限ub,下限lb,维度dim,cec测试目标函数fobj)封装成了一个名为Get_Functions_cec2019.m的文件中,便于使用。

Function_name=2; % 函数名:1 - 10% lb->下限,ub->上限,fobj->目标函数,dim-> 维度[lb,ub,dim,fobj] = Get_Functions_cec2019(Function_name);

最后,调用算法测试应用。用以下7个算法简单试验一下:经典算法,粒子群优化算法PSO;高被引算法,鲸鱼优化算法WOA,灰狼优化算法GWO,哈里斯鹰优化算法HHO;最近发表的算法,蜣螂优化算法DBO(2022),长鼻浣熊优化算法COA(2022),杨氏双缝实验优化器YDSE(2022)。

  1. 粒子群优化算法(PSO下载地址:优化算法-20种动物园优化算法(附Matlab代码)

  2. 鲸鱼优化算法(WOA下载地址:优化算法-鲸鱼优化算法Whale Optimization Algorithm(附Matlab代码)

  3. 哈里斯鹰优化算法(HHO下载地址:优化算法-哈里斯鹰优化算法Harris hawks optimization(附Matlab代码)

  4. 灰狼优化算法(GWO下载地址:优化算法-灰狼优化算法 Grey Wolf Optimizer(附Matlab代码)

  5. 蜣螂优化算法(DBO下载地址:优化算法-蜣螂优化器 Dung beetle optimizer(附Matlab代码)

  6. 长鼻浣熊优化算法(COA下载地址:优化算法-长鼻浣熊优化算法Coati Optimization Algorithm(附Matlab代码))

  7. 杨氏双缝实验优化器(YDSE下载地址:优化算法-杨氏双缝实验优化器Young’s double-slit experiment (附Matlab代码)


% 微信公众号:优化算法侠,Swarm-Opti
clc;clear;close all
%%
nPop=50; % 种群数
Max_iter=500; % 最大迭代次数

%%  选择函数
Function_name=2; % 函数名:1 - 10
% lb->下限,ub->上限,fobj->目标函数,dim-> 维度
[lb,ub,dim,fobj] = Get_Functions_cec2019(Function_name);

%% 调用算法
Optimal_results={}; % 保存Optimal results
index = 1;
% WOA
tic
[Best_score,Best_x,cg_curve]=WOA(nPop,Max_iter,lb,ub,dim,fobj);
Optimal_results{1,index}="WOA";        % 算法名字
Optimal_results{2,index}=cg_curve;     % 收敛曲线
Optimal_results{3,index}=Best_score;   % 最优函数值
Optimal_results{4,index}=Best_x;       % 最优变量
Optimal_results{5,index}=toc;          % 运行时间
index = index +1;
% HHO
tic
[Best_score,Best_x,cg_curve]=HHO(nPop,Max_iter,lb,ub,dim,fobj);
Optimal_results{1,index}="HHO";
Optimal_results{2,index}=cg_curve;
Optimal_results{3,index}=Best_score;
Optimal_results{4,index}=Best_x;
Optimal_results{5,index}=toc;
index = index +1;
% GWO
tic
[Best_score,Best_x,cg_curve]=GWO(nPop,Max_iter,lb,ub,dim,fobj);
Optimal_results{1,index}="GWO";
Optimal_results{2,index}=cg_curve;
Optimal_results{3,index}=Best_score;
Optimal_results{4,index}=Best_x;
Optimal_results{5,index}=toc;
index = index +1;
% DBO
tic
[Best_score,Best_x,cg_curve]=DBO(nPop,Max_iter,lb,ub,dim,fobj);
Optimal_results{1,index}="DBO";
Optimal_results{2,index}=cg_curve;
Optimal_results{3,index}=Best_score;
Optimal_results{4,index}=Best_x;
Optimal_results{5,index}=toc;
index = index +1;
% COA
tic
[Best_score,Best_x,cg_curve]=COA(nPop,Max_iter,lb,ub,dim,fobj);
Optimal_results{1,index}="COA";
Optimal_results{2,index}=cg_curve;
Optimal_results{3,index}=Best_score;
Optimal_results{4,index}=Best_x;
Optimal_results{5,index}=toc;
index = index +1;
% PSO
tic
[Best_score,Best_x,cg_curve]=PSO(nPop,Max_iter,lb,ub,dim,fobj);
Optimal_results{1,index}="PSO";
Optimal_results{2,index}=cg_curve;
Optimal_results{3,index}=Best_score;
Optimal_results{4,index}=Best_x;
Optimal_results{5,index}=toc;
index = index +1;
% YDSE
tic
[Best_score,Best_x,cg_curve]=YDSE(nPop,Max_iter,lb,ub,dim,fobj);
Optimal_results{1,index}="YDSE";
Optimal_results{2,index}=cg_curve;
Optimal_results{3,index}=Best_score;
Optimal_results{4,index}=Best_x;
Optimal_results{5,index}=toc;
index = index +1;
%% plot 绘图
figure

for i = 1:size(Optimal_results, 2)
%     plot(Optimal_results{2, i},'Linewidth',2)
    semilogy(Optimal_results{2, i},'Linewidth',2)
    hold on
end
title(['Convergence curve, Dim=' num2str(dim)])
xlabel('Iteration');
ylabel(['Best score F' num2str(Function_name) ]);
ax = gca;
set(ax,'Tag',char([100,105,115,112,40,39,20316,32773,58,...
    83,119,97,114,109,45,79,112,116,105,39,41]));
axis tight
grid on
box on
eval(ax.Tag)
set(gcf,'Position',[400 200 400 250])
legend(Optimal_results{1, :})

测试结果展示:

F1结果:

图片

图片

F2结果:

图片

完整Matlab代码下载

该代码一举歼灭所有群智能优化算法在cec2019测试函数的应用

该代码一举歼灭所有群智能优化算法在cec2019测试函数的应用

该代码一举歼灭所有群智能优化算法在cec2019测试函数的应用

 1分钟学会使用cec2019测试函数(附Matlab代码)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 智能优化算法是一种基于计算智能原理和方法的算法,旨在通过优化搜索策略,提高求解问题的效率和准确性。CEC2020测试函数是计算智能领域中常用的一组标准测试函数,被广泛用于评估不同优化算法的性能。 对于智能优化算法在CEC2020测试函数上的测试,首先需要选择适当的智能优化算法作为测试算法,并确定测试问题的维度和优化目标。然后,将测试算法应用于CEC2020测试函数,通过迭代搜索的过程,找到最优解或接近最优解的解。 在测试过程中,需要记录和分析算法的收敛性能、收敛速度、最优解精度等指标。对于CEC2020测试函数中的每个函数,可以通过多次运行算法并取平均值的方式进行评估,以消除测试结果的随机性。 至于算法Matlab实现,可以根据测试算法的原理和步骤,利用Matlab编程语言开发相应的代码。在实现过程中,可以利用Matlab提供的向量化运算和优化工具箱,简化编码过程并提高算法效率。同时,为了便于测试和对比不同算法的性能,可以采用统一的接口和数据格式,以便于后续的分析和可视化展示。 综上所述,智能优化算法在CEC2020测试函数上的测试能够评估算法的优劣,为算法的应用和改进提供参考。通过Matlab实现测试算法,可以进一步加深对算法原理的理解,并为实际问题的求解提供可行的解决方案。 ### 回答2: 智能优化算法是一种基于计算机算法的方法,用于解决复杂问题中的优化问题。CEC2020是计算智能领域的一个国际竞赛,用于评估智能优化算法的性能和效果。CEC2020测试函数是一系列经过精心设计的函数,用于模拟真实世界的复杂问题,包括连续优化问题、多模态优化问题等。 智能优化算法在CEC2020测试函数上进行测试的目的是评估算法的搜索能力、收敛性能和鲁棒性等指标。通过对多个测试函数的优化结果进行对比和分析,可以评估算法的优劣,并进行参数调整和改进,提升算法的性能。 在Matlab中,可以实现多种智能优化算法来进行CEC2020测试函数的优化。常见的智能优化算法包括遗传算法(GA)、粒子群优化算法(PSO)、蚁群算法(ACO)等。这些算法都有相应的Matlab工具箱可以直接调用。 在实现时,可以定义CEC2020测试函数,并选择适当的智能优化算法和参数进行优化。通过迭代运行算法,并用测试函数的输出值来评估每一代的优化性能。最终,得到一个优化结果。 总之,对智能优化算法在CEC2020测试函数上的测试及其Matlab实现,是一项重要任务,可以帮助我们评估和改进智能优化算法的性能,并为解决复杂问题提供有力的工具和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值