matlab实现之线性规划

这个实际上就是高中学习过的内容了,不同的是我们需要在matlab上实现它。
下面基本上都用的向量和矩阵来描述了。
假设我们要求 z=ax1+bx2+cx3
那么z可以描述为 z=fTx ,

f=[a,b,c],x=x1x2x3

然后就是会有一系列的约数条件,让你求z的max或min
这里在matlab里有一个专门函数即linprog来求解线性问题,为了统一描述,linprog只求 zmin ,
设约束条件不等关系描述为
Ax<=b

同样是统一描述是小于等于
等号关系为
Aeqx=beq

x的范围描述为
lb<=x<=ub

则linprog的命令为:

[x,y]=linprog(f,A,b,Aeq,beq,lb,ub);//详情输入help linprog,x是向量,y是所求的最值

如求min z=2x1+3x2+x3
约数:
x1+4x2+2x3>=8
3x1+2x2>=6
x1,x2,x3>=0
代码:

f=[2;3;1];
a=[ -1 -4 -2
    -3 -2 0];
b=[-8,-6];
[x,y]=linprog(f,a,b,[],[],zeros(3,1));
x,y

你可能感兴趣的:(matlab实现)