首页 热点资讯 义务教育 高等教育 出国留学 考研考公

matlab 线性规划

发布网友 发布时间:2022-04-24 17:40

我来回答

1个回答

热心网友 时间:2023-10-27 08:52

上次的确错了,我又看了看《线性规划》。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.5000
2.5000
0.5000
0.0000
0.0000

fval =
-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.5000
2.5000
0.5000

fval =
-1.5000

可以看出,无论是否加松弛变量x(4)和x(5),Matlab的结果都一样。

原来那个是错的【注:以下程序是错的,放在这里以纪念自己的鲁莽】

clear;clc
fmin=[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 0
0 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.2500
2.5000
0.5000
0.0000
0.0000

fval = -1.5000

exitflag = 1

output =
iterations: 7
cgiterations: 0
algorithm: 'lipsol'

lambda =
ineqlin: [5x1 double]
eqlin: 0
upper: [5x1 double]
lower: [5x1 double]

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com