Matlab中实现智能优化算法的平均排序图

Matlab中实现智能优化算法的平均排序图

平均排序图作用参考:秦兴宝,叶春明.嵌入蝴蝶算法及多策略融合的蜣螂优化器及应用[J/OL].计算机工程与应用.

在这篇文章中,提到了关于算法排序的问题,原文描述为:
"为对比分析改进算法的寻优能力,对各算法的平均适应度结果进行排序,若相等则比较标准差。若均值与标 准差均相等则并列排名。算法的平均性能排序结果越小,代表算法的优化能力越优越,寻优性能越好"

matlab 复制代码
function plotAvgRank(alg_rank,alg_name,xlabel_name,ylable_name)
% 这个函数是用于画算法的平均排序图
% 示例数据
% alg_name = {'SSA', 'HHO', 'PSO', 'CSO', 'MPA', 'DE','CSD','ABO'};
% alg_rank = [2.1, 4.5, 3.2, 5.1, 2.9, 3.5, 4.5, 4.2];
% xlabel_name = 'Algorithm';
% ylable_name = 'Average rank';
% 该方法最多支持8种算法的平均排序

    figure()
    % 绘制条形图
    colors = [
    1 0 0;
    0 0.4470 0.7410;
    0 1 0;
    0.9290 0.6940 0.1250;
    0.4940 0.1840 0.5560;
    0.4660 0.6740 0.1880;
    0.3010 0.7450 0.9330;
    0.6350 0.0780 0.1840;
    ];
    b = bar(alg_rank,0.3,'FaceColor','flat','EdgeColor','flat'); % 1.0表示宽度
    for i = 1:numel(alg_rank)
        b.CData(i,:) = colors(i,:);
    end
    
    xtips1 = b(1).XEndPoints;
    ytips1 = b(1).YEndPoints + 0.15;
    labels1 = string(b(1).YData);
    text(xtips1,ytips1,labels1,'HorizontalAlignment','center','VerticalAlignment','bottom')
    
    hold on;
    % 插值点数量(比原数据点多,以生成更平滑的曲线)  
    num_points = 100;
    x = 1:numel(alg_rank);
    xq = linspace(min(x), max(x), num_points);  
    % 使用样条插值  
    yq = interp1(x, alg_rank, xq, 'spline');  
    % 绘图  
    plot(x, alg_rank, 'o', 'MarkerFaceColor', '#D95319'); % 原始数据点  
    plot(xq, yq, 'LineStyle','-', 'Color','#D95319', 'LineWidth',2); % 插值后的光滑曲线  
    
    hold off;
    
    % 设置X轴标签
    set(gca, 'XTickLabel', alg_name);
    xlabel(xlabel_name);
    ylabel(ylable_name);
end

以下是对上述函数的调用代码:

matlab 复制代码
clear;clc;
alg_name = {'SSA', 'HHO', 'PSO', 'CSO', 'MPA', 'DE'};
alg_rank = round(1+4*rand(1,6),2);
xlabel_name = 'Algorithm';
ylable_name = 'Average rank';
plotAvgRank(alg_rank,alg_name,xlabel_name,ylable_name)

结果如下图所示:

相关推荐
крон29 分钟前
【Auto.js例程】华为备忘录导出到其他手机
开发语言·javascript·智能手机
zh_xuan1 小时前
c++ 单例模式
开发语言·c++·单例模式
老胖闲聊1 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1182 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
曹勖之2 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
豆沙沙包?2 小时前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
军训猫猫头3 小时前
96.如何使用C#实现串口发送? C#例子
开发语言·c#
liuyang-neu3 小时前
java内存模型JMM
java·开发语言
int型码农3 小时前
数据结构第八章(一) 插入排序
c语言·数据结构·算法·排序算法·希尔排序
UFIT3 小时前
NoSQL之redis哨兵
java·前端·算法