【杂文】【演化学习】platEMO提取缓存Data

platEMO提取运行后的save数据

github地址:https://github.com/BIMK/PlatEMO

platEMO介绍

在github上下载后使用matlab打开,运行main(),会出现如下所示的GUI界面

这个比较方便实验
其中具体使用在这里有介绍

在这里插入图片描述
可以注意到这里,他有一个缓存机制
在这里插入图片描述
数据会在Data文件夹下保存起来
在这里插入图片描述
大致是这么个命名
在这里插入图片描述

处理数据

platEMO的数据不能直接在GUI窗口调节,也没有直接留在工作区因此我写了一个小的脚本来处理,不过只是为了生成几个图可能代码复用性不是很强,en应该可以直接把下面写的更简单的

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 
%       2019.11.17
%       show the plot
% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear;
clc;

Path{1} = '.\Data\ARMOEA\';                   % 设置数据存放的文件夹路径
Path{2} = '.\Data\MOEAD\';
Path{3} = '.\Data\NSGAII\';
Path{4} = '.\Data\NSGAIII\';
%% 初始化存储变量
for i = 1:4
    for j = 1:7
        a_dtlz{i}{j}.runtime = zeros(30,1);
        a_dtlz{i}{j}.IGD = zeros(30,1);
        a_dtlz{i}{j}.Coverage = zeros(30,1);
        a_dtlz{i}{j}.GD = zeros(30,1);
        a_dtlz{i}{j}.HV = zeros(30,1);
    end
end
%% 读出指标量
for i = 1:4
    File{i} = dir(fullfile(Path{i},'*.mat'));
    len_file = size(File{i}, 1);
    for j = 1:len_file
        % 按 _ 分割文件名,将变量读出来
        split_name = strsplit(File{i}(j).name, {'_', '.'});
        F_Trace = strcat( Path{i}, File{i}(j).name );
        eval(['temp','=','load( F_Trace )',';']);
        metric = temp.metric;
        % disp(File{i}(j).name);
        % 确认限制测试集
        if str2num(split_name{2}(end)) > 7 | str2num(split_name{2}(1)) ~= 'W'
            continue;
        end
        a_dtlz{i}{ str2num(split_name{2}(end)) }.runtime( str2num(split_name{5}) ) = metric.runtime;
        a_dtlz{i}{ str2num(split_name{2}(end)) }.IGD( str2num(split_name{5}) ) = metric.IGD;
        a_dtlz{i}{ str2num(split_name{2}(end)) }.Coverage( str2num(split_name{5}) ) = metric.Coverage;
        a_dtlz{i}{ str2num(split_name{2}(end)) }.GD( str2num(split_name{5}) ) = metric.GD;
        a_dtlz{i}{ str2num(split_name{2}(end)) }.HV( str2num(split_name{5}) ) = metric.HV;
    end
end
%% prepare the plot data
col = ['r', 'g', 'b', 'k', 'c', 'm', 'y'];

for i = 1:4
    a_show{i} = zeros(1, 7);
end

% figure;
%% plot runtime
% subplot(5,1,1);
figure;
for i = 1:7
    for j = 1:4
        a_show{j}(i) = a_dtlz{j}{i}.runtime(30);
    end
end
plot(a_show{1}, col(1));
for j = 2:4
    hold on; plot(a_show{j}, col(j));
end
title('runtime WFG');
legend('ARMOEA','MOEAD','NSGAII','NSGAIII');

%% plot IGD
% subplot(5,1,2);
figure;
for i = 1:7
    for j = 1:4
        a_show{j}(i) = a_dtlz{j}{i}.IGD(30);
    end
end
plot(a_show{1}, col(1));
for j = 2:4
    hold on; plot(a_show{j}, col(j));
end
title('IGD WFG');
legend('ARMOEA','MOEAD','NSGAII','NSGAIII');

%% plot Coverage
% subplot(5,1,3);
figure;
for i = 1:7
    for j = 1:4
        a_show{j}(i) = a_dtlz{j}{i}.Coverage(30);
    end
end
plot(a_show{1}, col(1));
for j = 2:4
    hold on; plot(a_show{j}, col(j));
end
title('Coverage WFG');
legend('ARMOEA','MOEAD','NSGAII','NSGAIII');

%% plot GD
% subplot(5,1,4);
figure;
for i = 1:7
    for j = 1:4
        a_show{j}(i) = a_dtlz{j}{i}.GD(30);
    end
end
plot(a_show{1}, col(1));
for j = 2:4
    hold on; plot(a_show{j}, col(j));
end
title('GD WFG');
legend('ARMOEA','MOEAD','NSGAII','NSGAIII');

%% plot HV
% subplot(5,1,5);
figure;
for i = 1:7
    for j = 1:4
        a_show{j}(i) = a_dtlz{j}{i}.HV(30);
    end
end
plot(a_show{1}, col(1));
for j = 2:4
    hold on; plot(a_show{j}, col(j));
end
title('HV WFG');
legend('ARMOEA','MOEAD','NSGAII','NSGAIII');

数据图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值