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

引言

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

那么,本期照猫画虎推出cec2020测试函数的使用,1分钟让你学会。

本期所有代码+数据在文末下载

该cec2020测试函数共有10个单目标测试函数,从cec2014和cec2017测试函数中选几个函数组成的(有划水摸鱼嫌疑

图片

),搜索区间也一样都在[-100,100]之间。所有的测试函数都是解决最小化问题,D为维数(可选 2维, 5维, 10维, 15维, 20维),如下形式:

图片

图片

1. 下载cec2020函数

cec2020函数的格式为cpp文件,cec20_func.cpp。在matlab里需要编译。在matlab的命令行输入:

mex cec20_func.cpp

图片

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

 2. 加载cec2020测试函数

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

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

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

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

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

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

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

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

 3. 调用算法测试应用

用以下5个算法简单试验一下:经典算法,粒子群优化算法PSO;高被引算法,哈里斯鹰优化算法HHO;最近发表的算法,非洲秃鹫优化算法AVOA(2021),大猩猩优化算法GTO(2021),海马优化器SHO(2022)。

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

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

  3. 非洲秃鹫优化算法(AVOA下载地址:优化算法-20种动物园优化算法(附Matlab代码)

  4. 大猩猩优化算法(GTO下载地址:优化算法-20种动物园优化算法(附Matlab代码)

  5. 海马优化器(SHO下载地址:优化算法-海马优化器Sea-horse optimizer(附Matlab代码)

整体的代码如下

% 微信公众号:优化算法侠,Swarm-Opticlc;clear;close all%%nPop=50; % 种群数Max_iter=500; % 最大迭代次数
%%  选择函数dim = 20; % 维数,可选 2, 5, 10, 15, 20Function_name=10; % 函数名:1 - 10% lb->下限,ub->上限,fobj->目标函数,dim-> 维度[lb,ub,dim,fobj] = Get_Functions_cec2020(Function_name, dim);
%% 调用算法Optimal_results={}; % 保存Optimal resultsindex = 1;% PSOtic[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;% HHOtic[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;% GTOtic[Best_score,Best_x,cg_curve]=GTO(nPop,Max_iter,lb,ub,dim,fobj);Optimal_results{1,index}="GTO";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;% AVOAtic[Best_score,Best_x,cg_curve]=AVOA(nPop,Max_iter,lb,ub,dim,fobj);Optimal_results{1,index}="AVOA";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;% SHOtic[Best_score,Best_x,cg_curve]=SHO(nPop,Max_iter,lb,ub,dim,fobj);Optimal_results{1,index}="SHO";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 onendtitle(['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 tightgrid onbox oneval(ax.Tag)set(gcf,'Position',[400 200 400 250])legend(Optimal_results{1, :})

 4. 测试结果简单展示

dim = 2 结果:

图片

图片

dim = 5 结果:

图片

图片

dim = 10 结果:

图片

图片

完整Matlab代码下载

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

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

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

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

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值