我对获得Pareto前端的MATLAB函数gamultiobj函数有疑问。
如何在线性约束的最大化问题中使用遗传算法转换多个函数的最小化?
例如,而不是解决:
Min [2*x(1) - x(2) - exp(-x(1));
x(1) + 2*x(2) - exp(-x(2))];
%with Bounds
lb = [0;0];
ub = [1;1];
找到以下最大值:
Max [2*x(1) - x(2) - exp(-x(1));
-x(1) + 2*x(2) - exp(-x(2))];
%with Bounds
lb = [0;0];
ub = [1;1];
答案 0 :(得分:2)
max(f(x))
的解决方案与-min(-f(x))
非常简单,因为gamultiobj
只是最小化,你可以通过改变目标函数的每个系数的符号来使Matlab最大化你的问题:
f = -[2*x(1) - x(2) - exp(-x(1));
x(1) + 2*x(2) - exp(-x(2))];
您不需要更改下限和上限。
然后,一旦运行该功能并获得解决方案,请确保也反转其符号。这是必不可少的,否则您的解决方案将是错误的。
这种行为也可以在用于解决线性规划问题的函数linprog
和intlinprog
中找到。