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上优于的点,因此设置一个标志。然后再次迭代以获得前端,即未滞后的点。

可能重复的