帕累托前置matlab?

时间:2017-05-19 15:49:34

标签: matlab optimization vector

我有这个代码应该为我的数据绘制Pareto前沿,但仅在某些情况下。对于背景,帕累托前沿是所有非支配解决方案的集合,这是最大化每个功能的点。有没有帮助排除故障?

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')

1 个答案:

答案 0 :(得分:0)

如果您正在绘制人类观看数据,那么优化代码是没有意义的。所以只需使用天真的O(N平方)算法。迭代,然后每个点支配它在x和y上优于的点,因此设置一个标志。然后再次迭代以获得前方,这是未标记的点。