欢迎光临
我们一直在努力

多目标蜣螂优化算法(Multi‑Objective Dung Beetle Optimizer,MODBO)求解46个多目标函数及一个工程应用,包含四种评价指标,MATLAB代码

多目标蜣螂优化算法(Multi‑Objective Dung Beetle Optimizer,MODBO)是 在单目标蜣螂优化算法(DBO)基础上扩展的多目标群体智能算法。将其用于求解46个多目标测试函数(ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、DTLZ1-DTLZ7、WFG1-WFG10、UF1-UF10、CF1-CF10、Kursawe、Poloni、Viennet2、Viennet3)以及1个工程应用(盘式制动器设计),并采用IGD、GD、HV、SP进行评价。

一、部分MATLAB代码

f = MODBO(params,MultiObj);
X=f(:,1:D);%PS
Obtained_Pareto=f(:,D+1:D+numOfObj);%PF
Fbest=Obtained_Pareto;
if(isfield(MultiObj,'truePF'))%判断是否有参考的PF
True_Pareto=MultiObj.truePF;
% Metric Value
% ResultData的值分别是IGD、GD、HV、Spacing (HV越大越好,其他指标越小越好)
ResultData=[IGD(Obtained_Pareto,True_Pareto),GD(Obtained_Pareto,True_Pareto),HV(Obtained_Pareto,True_Pareto),Spacing(Obtained_Pareto)];
else
% 计算每个算法的Spacing,Spacing越小说明解集分布越均匀
ResultData=Spacing(Obtained_Pareto);%计算的Spacing
end
figure
if(size(Fbest,2)==2)
h_rep = plot(Fbest(:,1),Fbest(:,2),'ok'); hold on;
if(isfield(MultiObj,'truePF'))
h_pf = plot(MultiObj.truePF(:,1),MultiObj.truePF(:,2),'.r'); hold on;
legend('MODBO','TruePF');
else
legend('MODBO');
end

grid on; xlabel('f1'); ylabel('f2');
end
if(size(Fbest,2)==3)
h_rep = plot3(Fbest(:,1),Fbest(:,2),Fbest(:,3),'ok'); hold on;
if(isfield(MultiObj,'truePF'))
h_pf = plot3(MultiObj.truePF(:,1),MultiObj.truePF(:,2),MultiObj.truePF(:,3),'.r'); hold on;
legend('MODBO','TruePF');
else
legend('MODBO');
end
grid on; xlabel('f1'); ylabel('f2'); zlabel('f3');
end
title(MultiObjFnc)
saveas(gca,[MultiObjFnc '.jpg']);%将图保存

二、部分结果

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

三、完整MATLAB代码见下方名片

赞(0)
未经允许不得转载:171主机测评 » 多目标蜣螂优化算法(Multi‑Objective Dung Beetle Optimizer,MODBO)求解46个多目标函数及一个工程应用,包含四种评价指标,MATLAB代码
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址