智能优化算法常用指标一键导出为EXCEL,CEC2017函数集最优值,平均值,标准差,最差值,中位数,秩和检验,箱线图...

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

之前出了一篇关于CEC2005函数集的智能算法指标一键统计,然而后台有很多小伙伴在询问其他函数集该怎么调用。今天采用CEC2017函数集为例,进行展示。

为了突出改进智能优化算法的效果,常常会将改进的智能算法与其他算法进行对比。

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

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

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

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



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

算法替换十分简单,只替换算法名字即可! 测试集替换也十分简单!

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

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

代码目录如下:

其中plotCEC2017_Main.m还是往常的绘制算法对比图的程序,这个一直都有。

重点是:runsCEC2017_Main.m这个脚本,运行后可以一键生成ranksumresult.xls和result.xls两个excel。

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

其中ranksumresult.xls是秩和检验的结果统计,result.xls是五个指标的统计。结果如下:

ranksumresult.xls表格:

result.xls表格:

程序中设置了可以选择是否绘制箱线图的代码,也可以一键更改。箱线图如下:

部分代码展示

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

makefile 复制代码
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 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30];%因为第二个函数被删了!
variables_no = 30; % 可选 2, 10, 30, 50, 100
disp(['正在统计的是维度为',num2str(variables_no),'的CEC2017函数集'])
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_details(['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)

代码获取

或者点击下方阅读原文跳转链接。

或者直接复制下方链接跳转:

https://mbd.pub/o/bread/ZZWUmJhu

相关推荐
通信小呆呆几秒前
收发分离多基地雷达椭圆联合定位:原理、算法与误差分析
算法·目标检测·信息与通信·信号处理
bmcyzs2 小时前
【展厅多媒体】触摸查询一体机实现数据可视化
经验分享·科技·信息可视化·数据挖掘·数据分析·设计规范
丁浩6664 小时前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
B站_计算机毕业设计之家4 小时前
计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
大数据·爬虫·python·机器学习·信息可视化·课程设计·农业
伏小白白白5 小时前
【论文精度-2】求解车辆路径问题的神经组合优化算法:综合展望(Yubin Xiao,2025)
人工智能·算法·机器学习
无敌最俊朗@5 小时前
数组-力扣hot56-合并区间
数据结构·算法·leetcode
囚生CY6 小时前
【速写】优化的深度与广度(Adam & Moun)
人工智能·python·算法
hqyjzsb6 小时前
2025年市场岗位能力重构与跨领域转型路径分析
c语言·人工智能·信息可视化·重构·媒体·改行学it·caie
码农多耕地呗6 小时前
力扣94.二叉树的中序遍历(递归and迭代法)(java)
数据结构·算法·leetcode
懒羊羊不懒@6 小时前
Java基础语法—最小单位、及注释
java·c语言·开发语言·数据结构·学习·算法