线性规划
应用单纯形法求解
将线性规划问题的一般形式转化为标准形式:
1.若为maxf(x),则化为-maxf(x)
2.将不等式约束化为等式约束:
(1)若gi(X)<=bi,转为gi(X)+xk=bi
(2)若gi(X)>=bi,转为gi(X)-xk=bi
3.将任意变量转为非负变量(即xi>=0)
4.将负的限定系数转为正值(Ax=b,若b为负值,则等式两边均乘以-1)
e.g.
minf(x)=-4x1-x2
s.t.
-x1+2x2<=4
2x1+3x2<=12
x1-x2<=3
x1,x2>=0
解:
用M函数形式求解
A=[-1,2,1,0,0;2,3,0,1,0;1,-1,0,0,1]
c=[-4,-1,0,0,0]
b=[4,12,0]
[x,mf]=SimpleMthd0(A,c,b,[3 4 5])
运行结果如下;
x= 4.2000 1.2000
mf=-18.0000
利用优化工具linprog
Matlab的优化工具箱里有现成函数linprog
minf(x)
s.t.(不等式约束)Ax<=b
(等式约束)Aeqx=beq
lb<=x<=ub
基本格式
[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)
e.g.
minf(x)=-2x1-x2+3x3-5x4
s.t.
x1+2x2+4x3-x4<=6
2x1+3x2-x3+x4<=12
x1+x3+x4<=4
x1,x2,x3,x4>=0
解:
f=[-2 -1,3,-5]
A=[1 2 4 -1;2 3 -1 1;1 0 1 1]
b=[[6 12 4]
lb=[0 0 0 0]
[x,fval]=linprog(f,A,b,[],[],lb)
输出结果如下:
x=
0.0000
2.6667
0.0000
4.0000
fval=-22.6667