最先之前我发布了一期关于单目标优化算法跑测试集,然后输出统计指标到excel,其中包括适应度值曲线,箱线图,秩和检验等等,具体的文章可以链接直达:超全面!智能算法相关统计指标导出至excel/收敛图(平均)、箱线图,秩和检验。
上一期我重新分享了比较常见的多目标算法,并且已经免费的公布出来,具体可以连接直达:最全多目标优化算法合集MOPSO/MOGWO等直接免费获取。但是也有不少反馈说不知道咋用,而且想做对比实验时指标很难弄一起,今天就来出一期教程,代码就点击“阅读全文”领取。
NO.1|实验设置
在本次实验中,我们选择了多个经典的测试问题,涵盖了不同的测试场景,如ZDT、DZDT、WFG、UF、CF等。每个测试问题都具有不同的目标维度和决策空间复杂度,旨在模拟真实世界中的复杂优化环境,46个测试函数分别如下:
%1-5:ZDT1、ZDT2、ZDT3、ZDT4、ZDT6
%6-12:DZDT1-DZDT7
%13-22:wfg1-wfg10
%23-32:uf1-uf10
%33-42:cf1-cf10
% 43-46:Kursawe、Poloni、Viennet2、Viennet3
1.1 参数设置
种群大小 (Np): 300、 存档库大小 (Nr) : 300、 最大迭代代数 (maxgen) : 100, 还设置了绘图的线宽、字体大小等参数,以保证可视化效果清晰美观,这些控制参数全部放到了主调函数中,方便调整。
% 参数设置
params.Np = 300; % 种群大小
params.Nr = 300; % 存档库大小
params.maxgen = 100; % 最大迭代代数
params.dpi = 300; % 图片清晰度
params.save_path = "figure"; %帕累托前沿图像存储路径
%% 设置图片线宽和字体大小
params.fontsize = 14; %字体大小
params.fontsize_title = 20; %图片标题字体大小
params.linewidth = 0.25; % 图线宽
1.2 算法对比
已经封装好了以下算法: MODE(多目标差分进化算法)、 MOPSO(多目标粒子群算法)、 MSSA(多目标樽海鞘算法)、 NSDBO(多目标蜣螂算法)、 NSGA-II(非支配排序的遗传算法-II)、 NSGWO(多目标灰狼优化算法)、 NSSSA(多目标麻雀优化算法)、 NSWOA(多目标鲸鱼算法)
1.3 算法衡量指标
每种算法在不同的测试问题上运行后,我们通过以下四个重要的衡量指标来评估其性能, 指标量化算法在逼近真实Pareto前沿时的表现,以及 其解集的多样性和均匀性。

%% 1、计算指标IGD、GD、HV、Spacing (HV越大越好,其他指标越小越好)
for k = 1:length(algorithms)
%% 如果有参考Pareto前沿
if isfield(MultiObj, 'truePF')
True_Pareto = MultiObj.truePF;
%% 计算指标
% 结果数据分别为IGD、GD、HV、Spacing (HV越大越好,其他指标越小越好)
data = [IGD(eval([algorithms{k} '_Pareto']), True_Pareto), ...
GD(eval([algorithms{k} '_Pareto']), True_Pareto), ...
HV(eval([algorithms{k} '_Pareto']), True_Pareto), ...
Spacing(eval([algorithms{k} '_Pareto']))];
else
% 仅计算Spacing指标,Spacing越小说明解集分布越均匀
data = Spacing(eval([algorithms{k} '_Pareto'])); % 计算Spacing
end
% 动态生成变量名并存储data
eval([algorithms{k} '_data = data;']);
end
2、绘图保存
plot_ParetoFront(params,f_MOPSO,MultiObj)





版本更新记录
一、2024年10月23日更新
1、更新了NSGA-III算法
2、将现有的算法更新至主调函数中,一键全部算法调用。