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

本文主要是介绍智能优化算法常用指标一键导出为EXCEL,CEC2017函数集最优值,平均值,标准差,最差值,中位数,秩和检验,箱线图...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

aa47d662025ba0cf22b7191739972fc0.png

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

a1ca3c42247d083afa0c4958b3bfbdc5.jpeg

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

7970a5ce19bd4ebcd630f3a1115e6e9f.png

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



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

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

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

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

代码目录如下:

b169c3d925fb60820275403d967d4213.png

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

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

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

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

ranksumresult.xls表格:

57a2c2939aef847277ead26800512de9.png

result.xls表格:

370146f91185deafcac99cf092645011.png

7efe6c317655b4d8c5696ed295d48a01.png

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

1778cef0093ba8bdb72dbb8d8f88094c.png

部分代码展示

runsCEC2017_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 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 ==1figure('Name', '箱型图', 'Color', 'w','Position', [50 50 1400 700])
endfor func_num = 1:length(F)    % Display the comprehensive resultsdisp(['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

这篇关于智能优化算法常用指标一键导出为EXCEL,CEC2017函数集最优值,平均值,标准差,最差值,中位数,秩和检验,箱线图...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/182022

相关文章

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe