一道关于matlab编程的问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:03:19
min z=6*x1+3*x2+4*x3
s.t. x1+x2+x3=120
x1>=30
0<=x2<=50
x3>=0
如何写出m文件来,求出最优解

function fmincon1

x0=[10 10 10]
A=[-1 0 0;0 1 0;0 0 -1;0 -1 0] %标准形:-x1<=-30;x2<=50;-x3<=0;-x2<=0;
B=[-30;50;0;0]
Aeq=[1 1 1]%x1+x2+x3=120
Beq=120
[X,FVAL,EXITFLAG]= fmincon(@mfun,x0,A,B,Aeq,Beq)
function z=mfun(x)
z=6*x(1)+3*x(2)+4*x(3);

结果:
X = 30 50 40
FVAL = 490
EXITFLAG = 1


fmin=[6;3;4]; %z=6*x1+3*x2+4*x3
A=[];
B=[];
Aeq=[1 1 1];%x1+x2+x3=120
Beq=120;
UB=[30 0 0];%x1>=30; x2>0;x3>=0
LB=[120 50 120];%x1<120;x2<50;x3<120
[X,FVAL,EXITFLAG]=linprog(fmin,A,B,Aeq,Beq,UB,LB)

结果
X =
30.0000
50.0000
40.0000

FVAL = 490.0000
EXITFLAG = 1

This is a linear programming problem. Please use function linprog() in Optimization Toolbox to solve linear programming problems. As an example:

>> linprog([6 3 4]',[],[],[1 1 1],120,[30 0 0],[1