matlab 线性规划

学习 时间:2026-04-07 18:20:02 阅读:3470
matlab 线性规划min z= -x(2)+2x(3)s.t.x(1)-2x(2)+x(3)=2x(2)-3x(3)+x(4)=1x(2)-x(3) +x(5)=2x(j)>=0 j=1,...5 x()括号中的表示下标用matlab 哥们,看来你是很懂matlab了,有三个等式约束,但是为什么你的st距阵要写成5*5的呢?还有我看help中写的是Aeq和Beq是等式约束的系数和右端向量,我的题中应该算是等式约束吧,为什么Aeq和Beq都要付成零?为什么要把等式约束的矩阵系数付到st中?(st不是表示了线性规划中不等式约束条件吗?)还有你只给了lb不用给ub吗?放心了,积分不会少了你的!

最佳回答

震动的小懒猪

务实的老虎

2026-04-07 18:20:02

上次的确错了,我又看了看《线性规划》。x(4)和x(5)是不是松弛变量啊?不是的话,就是以下程序。clear;clc fmin=[0;-1;2;0;0]; %min z= -x(2)+2x(3) Aeq=[1 -2 1 0 0 %s。t。x(1)-2x(2)+x(3)=2 0 1 -3 1 0 %x(2)-3x(3)+x(4)=1 0 1 -1 0 1] %x(2)-x(3) +x(5)=2 ; beq=[2;1;2];st=[0 0 0 0 0]; b=[0]; lb=zeros(5,1); [x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb) 运行结果:x =6。50002。50000。50000。00000。0000fval =-1。5000如果是松弛变量,则程序为:clear;clc fmin=[0;-1;2]; %min z= -x(2)+2x(3) Aeq=[1 -2 1]%s。t。x(1)-2x(2)+x(3)=2 st=[0 1 -3 %x(2)-3x(3)+x(4)=1 0 1 -1] %x(2)-x(3) +x(5)=2 ; beq=[2];b=[1;2]; lb=zeros(3,1); [x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb) 运行结果:x =6。50002。50000。5000fval =-1。5000可以看出,无论是否加松弛变量x(4)和x(5),Matlab的结果都一样。原来那个是错的【注:以下程序是错的,放在这里以纪念自己的鲁莽】clear;clcfmin=[0;-1;2;0;0]; %min z= -x(2)+2x(3) st=[1 -2 1 0 0 %s。t。x(1)-2x(2)+x(3)=2 0 1 -3 1 0 %x(2)-3x(3)+x(4)=1 0 1 -1 0 1 %x(2)-x(3) +x(5)=2 0 0 0 0 00 0 0 0 0];b=[2;1;2;0;0]; Aeq=[0 0 0 0 0]; beq=[0];lb=zeros(5,1);[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)运行结果:Optimization terminated successfully。x =3。25002。50000。50000。00000。0000fval = -1。5000exitflag = 1output = iterations:7cgiterations:0algorithm:'lipsol'lambda = ineqlin:[5x1 double]eqlin:0upper:[5x1 double]lower:[5x1 double]

最新回答共有2条回答

  • 闪闪的舞蹈
    回复
    2026-04-07 18:20:02

    上次的确错了,我又看了看《线性规划》。x(4)和x(5)是不是松弛变量啊?不是的话,就是以下程序。clear;clc fmin=[0;-1;2;0;0]; %min z= -x(2)+2x(3) Aeq=[1 -2 1 0 0 %s。t。x(1)-2x(2)+x(3)=2 0 1 -3 1 0 %x(2)-3x(3)+x(4)=1 0 1 -1 0 1] %x(2)-x(3) +x(5)=2 ; beq=[2;1;2];st=[0 0 0 0 0]; b=[0]; lb=zeros(5,1); [x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb) 运行结果:x =6。50002。50000。50000。00000。0000fval =-1。5000如果是松弛变量,则程序为:clear;clc fmin=[0;-1;2]; %min z= -x(2)+2x(3) Aeq=[1 -2 1]%s。t。x(1)-2x(2)+x(3)=2 st=[0 1 -3 %x(2)-3x(3)+x(4)=1 0 1 -1] %x(2)-x(3) +x(5)=2 ; beq=[2];b=[1;2]; lb=zeros(3,1); [x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb) 运行结果:x =6。50002。50000。5000fval =-1。5000可以看出,无论是否加松弛变量x(4)和x(5),Matlab的结果都一样。原来那个是错的【注:以下程序是错的,放在这里以纪念自己的鲁莽】clear;clcfmin=[0;-1;2;0;0]; %min z= -x(2)+2x(3) st=[1 -2 1 0 0 %s。t。x(1)-2x(2)+x(3)=2 0 1 -3 1 0 %x(2)-3x(3)+x(4)=1 0 1 -1 0 1 %x(2)-x(3) +x(5)=2 0 0 0 0 00 0 0 0 0];b=[2;1;2;0;0]; Aeq=[0 0 0 0 0]; beq=[0];lb=zeros(5,1);[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)运行结果:Optimization terminated successfully。x =3。25002。50000。50000。00000。0000fval = -1。5000exitflag = 1output = iterations:7cgiterations:0algorithm:'lipsol'lambda = ineqlin:[5x1 double]eqlin:0upper:[5x1 double]lower:[5x1 double]

上一篇 一篇英语作文.tom`s pen pal..

下一篇 雅思听力如何突破7分