非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimizer),与网格机制不同,多目标蜣螂优化算法采用的是传统的非支配方式,使用起来更加高效。
多目标蜣螂算法结果如下:





多目标蜣螂算法的执行效率还是相当高的,代码写的也很清楚简单。
主函数代码:
close all;
clear ;
clc;
%%
TestProblem=31;%1-47
MultiObj = GetFunInfo(TestProblem);
MultiObjFnc=MultiObj.name;%问题名
% Parameters
params.Np = 300; % Population size
params.Nr = 300; % Repository size
params.maxgen =300; % Maximum number of generations
numOfObj=MultiObj.numOfObj;%目标函数个数
D=MultiObj.nVar;%维度
f = NSDBO(params,MultiObj);
X=f(:,1:D);%PS
Obtained_Pareto=f(:,D+1:D+numOfObj);%PF
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
%%
disp('Repository fitness values are stored in Obtained_Pareto');
disp('Repository particles positions are store in X');点击下方阅读原文,免费获取本文完整代码。
本文介绍了非支配排序的蜣螂优化算法NSDBO,相比于网格机制,它在处理多目标问题时表现出较高的效率。提供了代码示例,展示了算法的主函数和性能评估指标,如执行效率以及IGD、GD、HV和Spacing等。
1313

被折叠的 条评论
为什么被折叠?



