在Matlab中使用约束最大化3x + y

Jes*_*ica 3 matlab maximize

我需要在matlab中使用以下约束最大化方程3x + y:

2x + y <= 6,x + 3y <= 9,并且x,y> = 0

我很难弄清楚如何以一种我可以将它们与原始方程联系起来的方式来设置约束.我是matlab的新手,我很难搞清楚这一点.

提前致谢!

Den*_*din 5

正如@Franck所提到的,您通常可以使用它fmincon来解决优化问题.但是,由于您的问题只是线性编程问题,因此解决方案更简单(并保证最佳):

f = -[3 1]; % Note the minus as we want maximization
A = [2 1; 1 3];
b = [6; 9];
LB = [0 0];

[X, FVAL] = linprog(f,A,b,[],[],LB)
Run Code Online (Sandbox Code Playgroud)

会给:

X =

    3.0000
    0.0000


FVAL =

   -9.0000
Run Code Online (Sandbox Code Playgroud)

因此,在点(3,0)处找到最优值,结果值为9.

尝试help linprog阅读有关这个​​非常有用的功能的更多信息.