【发布时间】:2013-12-24 11:36:35
【问题描述】:
我试图获得两个适应度函数的帕累托最优前沿。我使用一个虚拟矩阵对无主解决方案进行排序,该矩阵在矩阵中为任何无主解决方案分配“一个”。当我绘制帕累托前沿时,它会不断包含我知道不属于帕累托最优的点。但是,我似乎无法找到此问题的原因。任何帮助将不胜感激。
for i = 1:1000
f1(i) = x(i,1)^2;
f2(i) = (x(i,1)-2)^2;
end
store = zeros(1000,1);
for i = 1:1000
st = zeros(1000,1);
for j = 1:1000
if i == j
st(j) = 1;
continue; %Skip to next iteration.
end
if f1(i) > f1(j) && f2(i) > f2(j); %Check for "x-dominated"
continue;
else st(j) = 1; %Dummy 1000x1 matrix
end
end
if st == ones(1000,1) %Testing the dummy matrix for dominance
store(i) = x(i);
end
end
pareto = store(store ~= 0);
N = length(pareto);
for k = 1:N
f3(k) = x(k,1)^2;
f4(k) = (x(k,1)-2)^2;
end
【问题讨论】:
-
请给我们最小/最简单的可重现示例,您可以找到发生这种情况的位置,包括该点以及不应找到该点的原因。
-
@DennisJaheruddin 感谢您的回复。我认为我可能错的地方是这个 if 语句检查占主导地位的解决方案。如果 f1(i) > f1(j) && f2(i) > f2(j);我会向你展示情节,但我不知道在论坛中是否可能。
-
@thewaywewalk 可能,我很早就找到了它,但无法充分利用它。
标签: algorithm matlab controls mathematical-optimization evolutionary-algorithm