在MATLAB中优化目标函数

时间:2016-03-15 10:44:39

标签: matlab

我对获得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];

1 个答案:

答案 0 :(得分:2)

max(f(x))的解决方案与-min(-f(x))

相同

Maximize and minimize

非常简单,因为gamultiobj只是最小化,你可以通过改变目标函数的每个系数的符号来使Matlab最大化你的问题:

f = -[2*x(1) - x(2) - exp(-x(1));
     x(1) + 2*x(2) - exp(-x(2))];

您不需要更改下限和上限。

然后,一旦运行该功能并获得解决方案,请确保也反转其符号。这是必不可少的,否则您的解决方案将是错误的。

这种行为也可以在用于解决线性规划问题的函数linprogintlinprog中找到。