Matlab 帕累托前沿?
我有一段代码,它应该为我的数据绘制帕累托边界,但只在某些情况下会这样做。作为背景,帕累托前沿是所有非支配解的集合,这些解是使每个函数最大化的点。有什么帮助吗Matlab 帕累托前沿?,matlab,optimization,vector,Matlab,Optimization,Vector,我有一段代码,它应该为我的数据绘制帕累托边界,但只在某些情况下会这样做。作为背景,帕累托前沿是所有非支配解的集合,这些解是使每个函数最大化的点。有什么帮助吗 x=cost; y=portscores; v=[x,y]; v=sortrows(v,1, 'descend'); x=v(:,1); y=v(:,2); count = 0 ; n_vect = zeros(1,[]); b_vect = zeros(1,[]); for i=2:113 m=max(v(1:i-1,2))
x=cost;
y=portscores;
v=[x,y];
v=sortrows(v,1, 'descend');
x=v(:,1);
y=v(:,2);
count = 0 ;
n_vect = zeros(1,[]);
b_vect = zeros(1,[]);
for i=2:113
m=max(v(1:i-1,2));
if v(i,2) > m
n=(v(i,2));
b=(v(i,1));
n_vect = [n_vect,n];
b_vect = [b_vect, b];
end
end
scatter(x,y)
hold on
plot(b_vect, n_vect)
xlabel('Overall Cost')
ylabel('Overall Portfolio Scores')
title('Pareto Frontier')
如果您是从人工查看的角度绘制数据,那么优化代码是没有意义的。所以只需使用朴素的O(N平方)算法。迭代,然后每个点控制它在x和y上优于的点,因此设置一个标志。然后再次迭代以获得前端,即未滞后的点。可能重复的