CEC2005/2017/2019/2021/2022函数集智能优化算法对比实验常用指标一键导出为EXCEL,一文全部搞定!...

声明:对于作者的原创代码,禁止转售倒卖,违者必究!

之前出了一篇关于CEC2005函数集的智能算法指标一键统计,然而后台有很多小伙伴在询问其他函数集该怎么调用。今天就为大家带来一期常用函数集CEC2005/2017/2019/2021/2022的智能优化算法对比实验常用指标一键导出为EXCEL。

常用指标包含:平均值,标准差,最优值,最差值,中位数指标。除此之外还包含箱线图,秩和检验。

也有很多小伙伴问到,箱线图与秩和检验的作用是什么。

这里也简单介绍一下。

箱线图也称箱须图、箱形图、盒图,用于反映一组或多组连续型定量数据分布的中心位置和散布范围。智能算法在对不同问题进行优化时,存在着一定的偶然性,因此需要进行多次实验,判断这个算法的好与坏可以将该算法经多次实验得到的最优值组成一个阵列,对这个阵列进行箱线图的绘制,就能够直观的看出这个算法寻优的稳定性与寻优能力。这个箱线图并非是必要的,有些文献放了,有些没放,大家根据需要进行选择!具体箱线图的定义,网上有很多,大家可以自行查阅。

秩和检验一般是为了比较改进的智能算法与其他算法的区别性,将改进的算法经过多次实验得到的最优值阵列与其他算法多次实验得到的最优值阵列进行秩和检验,得到的值越小,证明了这两个算法之间的差异性越大。这个秩和检验并非是必要的,有些文献放了,有些没放,大家根据需要进行选择!

这里浅浅看一下别人论文中的指标对比,秩和检验以及箱线图:

在一些期刊论文中,经常会看到一个超级大的表格,统计着每个算法的平均值,标准差,最优值,最差值,中位数等指标,例如:

332f9eb7a76dd8b250ce5878a1ac476a.png

还有的为了比较改进算法与对比算法的区别,会进行秩和检,例如:

d2f17e3cd18200b43274fced6aebc2f1.jpeg

还有一些论文为了更直观的表现会放上箱线图,例如:

f0ec1004743e5d3d19698757e0b53714.png

然而如果一遍一遍的运行代码去手动统计,估计闪电侠都不会这么做吧!


接下来上正菜!

今天就采用matlab工具,教大家直接一键完成统计,并导出EXCEL表格,同时绘制箱线图。

算法替换十分简单,只替换算法名字即可!

本期同样以自适应螺旋飞行麻雀搜索算法(ASFSSA)(点击链接跳转,这个算法可以免费获取)为例,与蜣螂优化算法,麻雀优化算法,粒子群优化算法,灰狼优化算法进行对比。

将每个算法运行30次,一键统计最优值,平均值,标准差,中位数,最差值五个指标,秩和检验结果,同时绘制箱线图。

CEC2005函数:

五种指标统计结果:

4d16b89e0f9ac968aa9bb7ad1836b333.png

秩和检验结果:

1cc0f228aaec41ab8cfe6a07aee7df96.png

箱线图:

aa7164f7b602d77f6c47dd89c4695ef6.png

CEC2017函数:

五种指标统计结果:

fc72f97ac8109b0034c84f3c6477efe4.png

秩和检验结果:

ed4e7133bfdc20ac603320550dab4620.png

箱线图:

9ed74ac7f8ac750ab5abd62093bfcfbe.png

注意 :CEC2017官方函数中,将F2函数删除了,因此现在只有29个函数。

CEC2019函数:

五种指标统计结果:

b82bb8a5d4544857ae5e7f81070939c8.png

秩和检验统计结果:

af0343a2f4d999d00f9c6bb21d94b612.png

箱线图:

c65794a164c60bdc2d4e7b465652ed9e.png

CEC2021函数:

五种指标统计结果:

62320c82a1b69a3215270fbbdc4d864a.png

秩和检验结果:

3f28e81872f838262317ec3763ca992a.png

箱线图:

7b8ff8001cbca3fc13e7a0607bfa30a2.png

CEC2022函数:

五种指标统计结果:

f0e884071d80fa8438e75ad3f7695660.png

秩和检验结果:

5236d6a8798db5b277087150f4405601.png

箱线图:

b302e56f017695a2e34a948b40f9fb18.png

代码目录

这里以CEC2022为例进行介绍,其他函数集目录均为如此。

32cd27557169ad4e322b81c78d2e66ea.png

可以运行的脚本有两个,即plotCEC2022_Main.m和runsCEC2022_Main.m。

其中plotCEC2022_Main.m还是往常的绘制算法对比图的程序,这个一直都有。简单举例,类似这样的:

ad8eeba75c4563f883584cd8eb1bb48d.png

重点是:runsCEC2022_Main.m这个脚本,运行后可以一键生成ranksumresult.xls和result.xls两个excel。其中ranksumresult.xls是秩和检验的结果统计,result.xls是五个指标的统计。

除此之外,在runsCEC2022_Main.m程序中还设置了可以选择是否绘制箱线图的代码,如果不需要可以将box_pp变量设置为0。

部分代码展示

runsCEC2022_Main.m部分代码展示如下:

clear
clc
close all
addpath(genpath(pwd));
pop_size=30;   %种群数目
max_iter=500;   %迭代次数


run = 30;
box_pp = 1;  %可选1,或者其他。当等于1,绘制箱型图,否则不绘制
RESULT=[];   %统计标准差,平均值,最优值等结果
rank_sum_RESULT=[];  %统计秩和检验结果


F = [1 2 3 4 5 6 7 8 9 10 11 12 ];
variables_no = 10; % 可选 2, 10, 20
disp(['正在统计的是维度为',num2str(variables_no),'的CEC2022函数集'])
if box_pp ==1
    figure('Name', '箱型图', 'Color', 'w','Position', [50 50 1400 700])
end


for func_num = 1:length(F)    
    % Display the comprehensive results
    disp(['F',num2str(F(func_num)),'函数计算结果:'])
    [lower_bound,upper_bound,variables_no,fhd]=Get_Functions_cec2022(['F',num2str(F(func_num))]);
    resu = [];  %统计标准差,平均值,最优值等结果
    rank_sum_resu = [];   %统计秩和检验结果
    box_plot = [];  %统计箱型图结果
    ……
end
%% 将秩和检验结果写入elcex中
B = string();
for i = 1:length(F)
    str = string(['F',num2str(F(i))]);
    B(i,1)= str;
end
B = cellstr (B);
B = [B,num2cell(rank_sum_RESULT)];
title = {" ","DBO","PSO","GWO","SSA"};% 秩和检验是和改进的算法做比较,因此这里没有改进的算法
B = [title;B];
xlswrite('ranksumresult.xls', B)


%% 将标准差,平均值,最优值等结果写入elcex中
A = string();
A = cellstr (A);
A = [A,num2cell(RESULT)];
title = {" "," ","ASFSSA","DBO","PSO","GWO","SSA"};
A = [title;A];
xlswrite('result.xls', A)

点击下方卡片获取更多代码!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘个代码_

不想刀我的可以选择爱我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值