多目标蜣螂优化算法(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']);%将图保存
二、部分结果







