• 智能优化算法常用指标一键导出为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部分代码展示如下:

    1. clear
    2. clc
    3. close all
    4. addpath(genpath(pwd));
    5. pop_size=30; %种群数目
    6. max_iter=500; %迭代次数
    7. run = 30;
    8. box_pp = 1; %可选1,或者其他。当等于1,绘制箱型图,否则不绘制
    9. RESULT=[]; %统计标准差,平均值,最优值等结果
    10. rank_sum_RESULT=[]; %统计秩和检验结果
    11. 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];%因为第二个函数被删了!
    12. variables_no = 30; % 可选 2, 10, 30, 50, 100
    13. disp(['正在统计的是维度为',num2str(variables_no),'的CEC2017函数集'])
    14. if box_pp ==1
    15. figure('Name', '箱型图', 'Color', 'w','Position', [50 50 1400 700])
    16. end
    17. for func_num = 1:length(F)    
    18. % Display the comprehensive results
    19. disp(['F',num2str(F(func_num)),'函数计算结果:'])
    20. [lower_bound,upper_bound,variables_no,fhd]=Get_Functions_details(['F',num2str(F(func_num))]);
    21. resu = []; %统计标准差,平均值,最优值等结果
    22. rank_sum_resu = []; %统计秩和检验结果
    23. box_plot = []; %统计箱型图结果
    24. ……
    25. end
    26. %% 将秩和检验结果写入elcex中
    27. B = string();
    28. for i = 1:length(F)
    29. str = string(['F',num2str(F(i))]);
    30. B(i,1)= str;
    31. end
    32. B = cellstr (B);
    33. B = [B,num2cell(rank_sum_RESULT)];
    34. title = {" ","DBO","PSO","GWO","SSA"};% 秩和检验是和改进的算法做比较,因此这里没有改进的算法
    35. B = [title;B];
    36. xlswrite('ranksumresult.xls', B)
    37. %% 将标准差,平均值,最优值等结果写入elcex中
    38. A = string();
    39. A = cellstr (A);
    40. A = [A,num2cell(RESULT)];
    41. title = {" "," ","ASFSSA","DBO","PSO","GWO","SSA"};
    42. A = [title;A];
    43. xlswrite('result.xls', A)

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

  • 相关阅读:
    【AFL学习笔记(一)】简单的使用AFL进行漏洞挖掘测试
    Java,常用类与API,日期时间API的使用
    opencv从入门到精通 哦吼03
    《web课程设计》用HTML CSS做一个简洁、漂亮的个人博客网站
    IOS自动化之批量解锁&锁定屏幕
    关于python函数,你该了解这些
    域名系统与IP地址分配
    PostgreSQL的学习心得和知识总结(一百一十)|深入理解PostgreSQL数据库 日志格式jsonlog 的使用场景和实现原理
    OG 488, acid|195136-52-8|Oregon Green 488 Carboxylic Acid
    Java多态的理解和应用
  • 原文地址:https://blog.csdn.net/woaipythonmeme/article/details/133725251