运行环境:Windows+MATLAB
解决问题:线性规划问题(特定题目)
实验简述:
MATLAB 可以高效、方便地解决线性规划问题。
线性规划是合理利用、调配资源的一种应用数学的方法。
它的基本思路就是在满足一定的约束条件下,使预定的目标达到最优。
它的研究内容可归纳为两个方面:一是系统的任务已定,如何合理筹划,精细安排,用最少的资源去实现这个任务:二是资源的数量已定,如何利用、分配,使任务完成得最多。
前者是求极小,后者是求极大。
线性规划是在满足企业内、外部的条件下,实现管理目标和极值问题,就是要以尽少的资源输入来实现更多的社会需要的产品的产出。
现在通过专门的数学MATLAB 软件,只要将模型中的目标函数系数、约束条件系数、不等关系输入计算机,就会很快算出结果。
在生活实践中,很多重要的实际问题都是线性的(至少能够用线性函数很好的近似表示),所以我们一般把这些问题化为线性的目标函数和约束条件进行分析,通常将目标函数和约束都是线性表达式的规划问题称为线性规划。
它的一般形式是:
)
,,2,1(0.
.min 221122222121112121112211n i x b x a x a x a b x a x a x a b x a x a x a t s x c x c x c f i m n mn m m n n n n n
n
=>=⎪⎪⎩⎪⎪⎨⎧<=+++<=+++<=++++++= 也可以用矩阵形式来表示:
0,..min
>=<==x b Ax t s x c f T
线性规划的可行解是满足约束条件的解;线性规划的最优解是使目标函数达到最优的可行解。
线性规划关于解的情况可以是:
1、无可行解,即不存在满足约束条件的解;
2、有唯一最优解,即在可行解中有唯一的最有解;
3、有无穷最优解,即在可行解中有无穷个解都可使目标函数达到最优;
4、有可行解,但由于目标函数值无界而无最优解。
一般求解线性规划的常用方法是单纯形法和改进的单纯形法,这类方法的基
本思路是先求得一个可行解,检验是否为最优解;若不是,可用迭代的方法找到另一个更优的可行解,经过有限次迭代后,可以找到可行解中的最优解或者判定无最优解。
在Matlab 优化工具箱中,linprog 函数是使用单纯形法求解下述线性规划问题的函数。
vub
x vlb beq aeqx b Ax t s x c f T <=<==<==;
,..min
它的命令格式为:
)
0,,,,,,,(],[),,,,,,(],[x vub vlb beq aeq b A c linprog fval x vub vlb beq aeq b A c linprog fval x == 其中:A 为约束条件矩阵,b,c 分别为目标函数的系数向量和约束条件中最右边的数值向量;也可设置解向量的上界vlb 和下界vub ,即解向量必须满足vlb<=x<=vub ;还可预先设置初始解向量x0。
如没有不等式,而只有等式时,A=[ ],b=[ ];输出的结果:x 表示最优解向量;fval 表示最优值。
具体问题:
求解线性规划问题:
⎪⎪⎩⎪⎪⎨⎧=>=-=->=++-<=+---=3,2,1,01
2324112.
.3max 313213213
21i x x x x x x x x x t s x x x f i 解:
考虑到linprog 函数只解决形如0;
,
..min
>==<==x beq aeqx b Ax t s x c f T 的线性规划。
所以先
要将线性规划变为如下形式:
⎪⎪⎩⎪⎪⎨⎧=>=-<=--<=+--=-++-=3,2,1,03
2411212.
.3min 321321313
21i x x x x x x x x x t s x x x f i 然后建立文件如下:
c=[-3;1;1];A=[1 -2 1;4 -1 -2];b=[11;-3];
aeq=[2 0 -1];beq=-1;vlb=[0;0;0];
[x,fval]=linprog(c,A,b,aeq,beq,vlb)
即可得到结果:
x = 4.0000
1.0000
9.0000
同时返回fval=-2
对应到原来的线性规划中即知目标函数的最大值为2,此时:x1=4,x2=1,x3=9。