多目标蜣螂优化算法(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']);%将图保存
原文链接:https://blog.csdn.net/weixin_46204734/article/details/157944485
部分结果



完整MATLAB代码
https://mbd.pub/o/bread/mbd-YZWbk55sag==
https://mbd.pub/o/bread/mbd-YZWbk55saQ==
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删