第六章 线性规划及其解的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章 线性规划及其解的实现
线性规划是目前应用最广泛的一种系统优化方法,它的理论和方法已十分成熟,可以应用于生产计划、物质调运、资源优化配置、地区经济规划等许多实际问题.线性规划最早由前苏联学者L V Kantorovich 于1939年提出,但他的工作当时并未为人所熟知.直到1947年,美国学者G B Danzing 提出求解线性规划最有效的算法-----单纯性算法后,才引起数学家、经济学家和计算机工作者的重视,并迅速发展成为一门完整的学科而得到广泛的应用.利用线性规划建立数学模型也是中国大学生数学建模竞赛中最常用的方法之一.
优化模型的一般形式为
T n X
x x x X X f z ),,,(),(min 21 == (1)
m i X g t s i ,,2,1,0)(.. =≤ (2)
其中)(x f 称为目标函数,)(X g i 称为约束条件.只满足式(2)的X 称为可行解;同时满足式(1)、式(2)两式的解*
X X =称为最优解.
由式(1)、式(2)组成的模型属于约束优化,若只有式(1)就是无约束优化.一般情况下,优化问题都是有约束的,但是如果最优解不是在可行域的边界上,而是在可行域的内部,那么就可以用无约束优化作比较简单的处理.
若f ,i g 均为线性函数,优化模型式(1)、式(2)称为线性规划,否则称为非线性规划. 本章主要对线性规划问题及其解的实现作简要介绍.
§6.1 线性规划模型形式及其性质
线性规划是运筹学的一个重要分支,应用很广.线性规划问题可以描述为求一组非负变量,这些非负变量在一定线性约束的条件下,使一个线性目标函数取得极小(或极大)值的问题.
1、线性规划的标准形式
目标函数 n n x c x c x c z +++= 2211m in
约束条件 ⎪⎪⎪⎩⎪
⎪⎪⎨⎧≥=+++=+++=+++0
,,,2122112222212111212111n m
n mn m m n n n n x x x b
x a x a x a b x a x a x a b x a x a x a
这里n x x x ,,,21 是变量,i ij i b a c ,,都是已知常数,且0≥i b ,约束条件常用..t s 表示.线性规划用矩阵表示就是
T n x x x X cX z ),,,(,
min 21 ==
T n n m ij b b b b n m a A x b AX t s ),,,(),()(,0,..21 =≤=≥=⨯.
2、线性规划的一般形式 目标函数 n n x c x c x c z +++= 2211m in
约束条件 ⎪⎪⎩⎪⎪⎨⎧+++++++++m
n mn m m n n n n b x a x a x a b x a x a x a b x a x a x a )()()(22112
222212*********
式中的( )可以是关系符号:≤≥=<>,,,,中的任意一个.
3、线性规划化为标准形的方法 把线性规划化为标准形:
(1)目标函数一律化为求极小(如果是求极大,则利用)m in(m ax z z -⇔化为求极小).
(2)对约束条件中b Ax ≤的不等式,利用加入松弛变量的方法化为等式.如果原约束条件中有""b ≥形式的约束,可以在不等式两边同时加负号化为""b -≤的形式.
(3)标准形中一般要求0≥i x .如果某个i x 无此约束,可以引入两个新变量''',i i x x ,令'
''i i i x x x -=,
0,'''≥i i x x ;如果原来的约束为i i l x ≥,可以令i i i l x x -=',0'≥i x .
4、线性规划的基本性质 线性规划有以下基本性质:
1)若存在可行域,可行域必为凸集; 2)基可行解对应于可行域的顶点;
3)若有最优解,必在可行域的顶点取得.
§6.2 线性规划问题的数学模型及其解的基本概念
1、线性规划问题的数学模型
例1 (生产计划问题)某工厂生产甲、乙两种产品,甲产品每生产一件需耗黄铜2kg 、3个工作日、两个外协件,每件可获利润60元;乙产品每生产一件需耗黄铜4kg 、1个工作日、不需外协件,每件可获利润30元,该厂每月可供生产用的黄铜320kg ,总工作日180个,外协件100个.问应怎样安排生产才能使工厂的利润最高?
分析问题,建立数学模型.
问题:怎样安排生产,即甲、乙两种产品各生产多少才能使工厂的利润最高?用1x ,2x 分别表示甲、乙两种产品生产的件数,该厂追求的目标是获取最高利润,用数学表达式表示为:
213060m ax
x x f +=.
由于生产甲、乙产品的件数要受到生产能力的约束,即 黄铜约束:3204221≤+x x ,
工作日约束:180321≤+x x , 外协件约束:10021≤x , 非负约束:0,21≥x x .
这样,该厂生产计划问题就归结为如下数学模型:
⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤++=.
0,,1002,1803,32042..,3060max 21121
2121x x x x x x x t s x x f
例2 (运输问题)计划由三个粮站1A ,2A ,3A 运输某种粮食至三个加工厂1B ,2B ,3B ,三个粮站的供应量和三个加工厂的需求量以及各供应地至需求地的单位运输价(元/t)如表1所示,试作出运费
最省的调运计划方案.
表 1
问题:如何调运,才能使运费最省?设ij x 表示第i 个粮站到第j 个加工厂的粮食数量(单位:
3,2,1,,=j i t ),则总运费
3332312322211312112050603040709080120x x x x x x x x x f ++++++++=.
从各粮站运出的粮食数量不能超过供应量,
20131211=++x x x ,30232221=++x x x ,50333231=++x x x ,
同时还要保证各加工厂的需要,
25312111=++x x x ,50322212=++x x x ,25332313=++x x x ,
而运输量应满足0≥ij x .
则上述运输问题的数学模型为
⎪
⎪⎪⎪⎩⎪
⎪⎪⎪
⎨⎧≥=++=++=++=++=++=++++++++++=.
02550
25503020.
.2050603040709080120min 33231332
2212
31211133323123222113121133
3231232221131211ij x x x x x x x x x x x x x x x x x x x t s x x x x x x x x x f
从上述两个例子可以看出,虽然两个问题的具体内容和性质不同,但它们都属于优化问题,它们的数学模型都有相同的数学形式,即在一定的线性等式或不等式的条件下,使某一线性函数达到最大(或最小).
所谓线性规划问题的数学模型是将实际问题转化为一组线性不等式获等式约束下求线性目标函数的最小(大)值问题.
2、解的基本概念
对于线性规划问题的标准形式
.
.min ≥==x b Ax t s cx z 其中系数矩阵A 是行满秩的,即)()(n m m A R ≤=,并引入列向量),,2,1(n j P j =表示系数矩阵的列向量.
满秩约束条件的解称为线性规划问题的可行解,可行解的全体}0,|{≥==x b Ax x D 称为线性规划问题的可行域.满足目标函数的可行解称为线性规划问题的最优解.
系数矩阵A 的任意一个m 阶的可逆方阵B 称为线性规划问题的一个基.显然,A 最多有m
n C 个基.基B 中的任意一列向量j P 称为基向量.系数矩阵A 中除基B 外的其余m n -个列向量称为非基向量.显然,选择的基不同,与基对应的非基向量也不尽相同.与基向量j P 对应的变量j x 称为基变量.与非基向量j P 对应的变量j x 称为非基变量.
为叙述方便,不妨假设基B 是阵A 的前m 列构成的,即),,,(21m P P P B =,如若不然,则可通过调整变量顺序达到此目的.按上述定义,),,2,1(m j x j =为基变量,),,2,1(n m m j x j ++=为非基变量,记
T m B x x x X ),,,(21 =,T n m m N x x x X ),,,(21 ++=,),,,(21n m m P P P N ++=
那么约束条件可用分块矩阵表示为
b X X N B N B =⎪⎪⎭
⎫ ⎝⎛),(
令0=N X ,由b BX B =得
b B X B 1
-= (3) 称
⎪⎪⎭
⎫
⎝⎛=⎪⎪⎭⎫ ⎝⎛=-01b B X X X N B
为对应于基B 的基解.很显然,由于m B R =)(,即0||≠B ,所以式(3)的解是惟一的.即对应于某个基的基解是惟一的,从而一个线性规划问题最多有m
n C 个基解.
若基解满足0≥x ,则称基解为基可行解。
称对应的基为可行基.显然,基可行解是基解与可行解
的交集.
若基可行解还能使目标函数达到最优,则称其为最优基可行解.
如果线性规划问题有可行解,则它必为基可行解;如果线性规划问题有最优解,则它必有最优基可行解.若两个基可行解*
x ,*
*x 都是最优解,则它们的凸组合
)10()1(*
**≤≤-+=λλλx x x
也是最优解,此即为最优解有无穷多的情况.
通常,如果一个线性规划问题有解,只需在有限个(不超过m
n C 个)基可行解中寻找最优解.故从理论上讲,可以采用枚举法,即找出所有基可行解,然后一一比较.但从算法角度,这显然并非简单有效的.正确的方法应该是:先找到一个所谓初始基可行解,然后判定它是否最优,若是,则停止,否则必须由此基可行解换为另一个基可行解(即换基),但要保证新的基可行解的目标函数值比原来的更优,这样将得到一个逐步改进的基可行解序列,甚至达到最优.
§6.2 线性规划模型的求解
线性规划问题可用图解法、单纯形法、对偶单纯形法等多种方法进行求解.人工进行求解时,往往效率比较低,将单纯形算法或改进的单纯形法等编制成程序,让计算机来求解,这已由一些数学软件包实现.下面主要介绍利用图解法、单纯形法、MATLAB 软件中的命令以及利用LINDO 软件包求解线性规划问题.
1、图解法求解线性规划问题
图解法主要针对两个变量的线性规划问题.用图解法求解两个变量的线性规划问题可按以下步骤进行:
(1)在平面直角坐标系中,求出可解区域.可行解区域是各约束条件所表示的半平面的公共部分. (2)求最优解:将目标函数中的z 看成参数,作出等值线.选取一条等值线,使它与可行解区域有公共点,并使z 取得模型要求的最大值或最小值.
例3 用图解法求解线性规划模型.
,2122362.
.43max 212212121≥≤≤+≤++=x x x x x x x t s x x z
解:(1)求可行解区域,将1x ,2x 视为平面直角坐标系中某个点的坐标,则满足一个约束不等式的所有点),(21x x 就形成了一个半平面.在坐标系中画出5个约束确定的5个半平面,就可以得到其公共部分OABCD (图1中的阴影部分),这就是本模型的可行解区域.
图1 例3图解法示意图
(2)求最优解.为求最优解,将z 看成参数,则2143x x z +=表示一族平行直线(称等值线,每一条等值线上的任一点),(21x x 的目标函数等于一个定值z ).令12,3,0=z 等,可得出一组等值线.从图1可以看出,z 取值越大,对应的等值线离原点越远,因此,欲求最优解只要在等值线中找到既与可行解区域有公共点,又尽可能例原点远的那一条即可.由图1可知,显然可得过B 点的等值线即为所求,为求B 点,只需解方程组:
⎩⎨
⎧=+=+12
236
22121x x x x 可得最优解31=x ,232=
x ,对应的目标函数最大值为152
3
433=⨯+⨯=z ,由图1还可以得到本模型的最优解是唯一的.
例4 用图解法求解线性规划模型
,2122362.
.2max 212212121≥≤≤+≤++=x x x x x x x t s x x z
解:(1)求可行解区域.因约束条件与例3完全相同,故可行解区域与例3完全相同.
(2)求最优解,将目标函数212x x z +=中的z 看成参数,可得一族等值线,从图2可以看出线段BC 所对应的点),(21x x 均为本模型的最优解.B 点坐标为31=x ,2
3
2=x ,C 点坐标为21=x ,22=x ,全体最优解可以表示为)1(231λλ-+=x ,)1(22
3
2λλ-+=x ,10≤≤λ,所对应的目标函数最优值为62
3
23=⨯
+=z .即在这个模型中最优解有无穷多个.
图2 例4图解法示意图
例5 用图解法求解线性规划模型.
12121212min ..2
2
1,0
f x x s t x x x x x x =++≥-≥-≥
解:(1)求可行解区域.可得图3中的阴影部分ABCD 即为本模型的可行解区域.
(2)求最优解.可得过B 点的等值线即为所求.B 点坐标为)1,0(,故最优解为01=x ,12=x ,最优值为110=+=z .
图3 例5图解法示意图
例6 用图解法求解线性规划模型.
12121212max ..2
1,0
f x x s t x x x x x x =++≥-≥-≥
解:本题与例5有相同的可行解区域与目标函数等值线,但要求的最优值是最大值,从图3可以看
出,本题有可行解但无最优解.
例7 用图解法求解线性规划模型.
,6321.
.23min 21212121≥≥+≤+-=x x x x x x t s x x f
解:求可行解区域:从图4中可以看出,4个约束不等式表示的半平面没有公共部分,因此,此题没有可行解.
图4 例7图解法示意图
从以上5个例题中,可以得到几个重要的一般结论:
1)线性规划问题可能没有可行性,当有可行性时,也有可能没有最优解(最优解无界).当有最优解时,最优解可能是惟一的,也有可能是无穷多个的.
2)线性规划问题的可性性区域都是“凸”区域(即区域中的任意两点的连续全属于该区域). 3)线性规划问题若有最优解,则一定在可行解区域的顶点(不能表示为区域中任意两点的中点的点)上达到.
要指出的是,上述结论对于含有n 个决策变量的线性规划问题进行正确的. 2、单纯形法求解线性规划问题
单纯形法是求解线性规划模型的最有效的方法之一,下面通过例题来说明其计算过程. 例8 用单纯形法求解线性规划模型.
,2122362.
.43max 212212121≥≤≤+≤++=x x x x x x x t s x x z
解:首先将此线性规划模型化为标准形式.规定线性规划模型的标准形式必须具有以下特点: (1)所有变量必须非负.若变量i x 无非负约束,则可以引入原模型没有的非负的新变量j x 与1+j x ,用1+-j j x x 取代i x ;
(2)所有的约束条件(变量的非负约束除外)必须是等式.若是""≥,则可在约束左边减去一个非负的新变量使之成为等式;若是""≤,则可在约束左边加上一个非负的新变量使之成为等式;
(3)约束等式右边常数必须非负,若为负数,则在等式两边同乘以-1即可;
(4)求目标函数的最小值.若是求最大值,则可以将目标函数z 乘以-1,使问题转化为求z -的最小值.
由此可得与本例模型等价的标准形式:
,,,,2
12236243min 5432152
4
213212
1'≥=+=+
+=++--=x x x x x x x x x x x x x x x z 可以看出,变量3x ,4x ,5x 分别出现在一个方程中,并且系数为1.我们将这些变量称为基变量.具有上述特点的线性规划问题称为典则形式,可将这一典则写成格式形式(如表2所示,称为单纯形表).
表2中j C 行是依次将目标函数'
z 的各变量系数写入得到的,j x 行是相应j C 的各个变量,B x 列入3个基变量,它将随着运算的进行而变化.B C 列是基变量在目标函数'
z 中的对应的系数.3x 行是基变量
3x 惟一所在的约束方程的系数,4x 行和5x 行的意义与3x 行相同.常数列是对应于约束方程的右端常数.
检验数行中的各数的求法如下:1x 对应的检验数记为01b ,它等于B C 列中各数与1x 列中对应各数的乘积之和减去1x 在目标函数'
z 中系数1C 的差,即
3)3(00301001=--⨯+⨯+⨯=b .
类似地,也可以求得52,,x x 的检验数402=b ,0050403===b b b (注意,基变量对应的检验数总是为0),而检验数非零的变量将出现在与原问题等价的模型的目标函数中,并且其系数是检验数的相反数.
最后,表中右下角中的数字记为0b ,它等于B C 列中各数与常数列中对应各数的乘积之和,即
020*******=⨯+⨯+⨯=b .
令非基变量021==x x ,则由约束条件可得63=x ,124=x ,25=x ,这显然是原问题的一个可行解.反映到单纯形表2中,由B x 与常数列恰好看出基变量3x ,4x ,5x 的取值.这样的可行解称为
原问题的基本可行解.而该基本可行解对应的目标函数的值0'
=z 恰好为表格右下角的数值00=b .
由于21'
43x x z --=,显然当1x 或2x 取正数时,可以使目标函数进一步减小(优化).为使目标函数优化更快,选择最小的系数-4(或最大的检验数4)对应的2x 取尽可能大的正数.由约束方程可得:
⎪⎩⎪
⎨⎧-=--=--=25
2142132231226x x x x x x x x 仍令01=x ,并令02>=θx ,由于3x ,4x ,5x 均非负,应有
⎪⎩⎪
⎨⎧≥-=≥-=≥-=020*******
43θθθx x x 或 ⎪⎩
⎪
⎨⎧≤≤≤263θθθ 由此不等式可知,θ最大只能取2,即2}1
2
,212,
26min{==θ.于是,可取22=x ,此时有 ⎪⎩⎪
⎨⎧=-==-==-=022********
43x x x θθ 于是求得另一可行解:01=x ,22=x ,23=x ,84=x ,05=x .对应的目标函数值为
82403'-=⨯-⨯-=z .
这一结果也可以这样得到,即在标准形式的第三个约束方程中求得
522x x -=
并把上式代入目标函数和其他约束方程中去,就得到原问题的另一等价形式:
5
,,2,1,02
82322438min 52
5415315
1' =≥=+=-+=-++--=j x x x x x x x x x x x z j
不难看出,这实际上是以3x ,4x ,2x 为基变量的典则形式,对应的单纯形表如表3所示.
令非基变量051==x x ,恰好得到23=x ,84=x ,22=x ,这是原问题的另一基本可行解,对应的目标函数值8'
-=z .
更简便地,可以在单纯形表上直接运算出上述新的单纯形表及相应的与原问题等价的典则形式的模型.
单纯形表(表2)上进行如下运算:
(1) 在检验数行中找出最大的正检验数402=b ,它说明应将2x 调入基变量,而把某一基变量调出成非基变量.
(2) 将常数列中各数分别除以2x 列中对应的正元素(若非正,则不进行运算,也不参与比较),求出最小比值,即求:
21
2
}12,212,
26min{===θ 最小比值在5x 行上取得,则应将5x 调为非基变量,相应地在单纯形表(表2)中将元素1用方框圈起来,并称这个数为旋转元或主元.
(3) 将B x 列中的5x 换成2x ,并相应地将B C 列中5x 的系数换成2x 的系数(标准行驶中的系数). (4) 对表2中右下角4格中的数字组成的64⨯矩阵施行初等行变换,使得旋转元变成1,并且旋转
元所在列的其余元素均变成0.
完成以上运算,表2即变成表3,这一过程称为“迭代”.根据单纯形表(表3),可以写成相应的基本可行解及单纯形表对应的原问题的等价的典则形式的模型.基本可行解可以这样得到:令非基变量为
0,基变量取单纯形表中对应的常数列的数.而等价模型的约束条件,除变量的非负约束外,可由64⨯矩
阵的前三行对应写出,至于新的目标函数,可以写成5052021010'
x b x b x b b z ----= ,这里的0b ,
01b ,…,05b 均为新单纯形表中的数字.
单纯形表(表3)中检验数0301>=b ,反映到典则形式模型的目标函数中1x 的系数为负,应将1x 调入基变量.对表3进行与前面类似的迭代,的如表4所示的单纯形表.
由此得基本可行解21=x ,22=x ,03=x ,24=x ,05=x ,对应的目标函数值14'
-=z ,
相应的典则形式模型为:
5
,,2,102
24322..2314min 52
543531
53' =≥=+=++-=-+-+-=j x x x x x x x x x t s x x z j
由于检验数0205>=b ,继续迭代,得如表5所示的单纯形表.
表5 第三次迭代后的单纯形表
可得基本可行解31=x ,232=x ,043==x x ,2
15=x ,对应的目标函数值15'
-=z ,相应的典则形式模型为
5
,,2,102
341432141433
21
21.
.21
2315min 43254343143' =≥=
-+=++-=+-++-=j x x x x x x x x x x t s x x z j 在此典则形式中,目标函数43'
2
1
2315x x z ++
-=,非基变量3x ,4x 的系数均为正,3x ,4x 取非零正数只能使目标函数增大,因此,所对应的基本可行解已是最优解.反映到单纯形表中,所有的检验数均非正,则可得最优解.这样,对原问题来说,已求得最优解为31=x ,2
3
2=
x ,对应的目标函数最大值为15=z .
上述结果与图解法(例4)得到的结果一致.可以证明:
(1)若在单纯形表中,所有的检验数都非正,则对应的基本可行解就是最优解;
(2)若单纯形表中,某一检验数大于零,而对应变量所在列中所有的元素都非正,则原问题无最优解(最优值无界);
(3)利用例8中的迭代方法,一定可以求出原问题的最优解或判定无最优解. 需要指出的是:
(1)单纯形算法运算中得到的每一个基本可行解都对应可行解区域的一个顶点;
(2)若原问题有无穷多个最优解,则达到最优解时,检验数中零的个数一定大于基变量的个数,可以将检验数为零的非基变量调入基变量而迭代出其他的最优解(基本可行解);
(3)原问题标准形式不是典则形式,需先运算出一个初始基本可行解,如用下面的两阶段法,而第一阶段求解辅助问题时,若最优解不为0,则原问题无可行解.
例9 用单纯形法求解线性规划模型.
,0,06654632.
.min 321321321321≥≥≥=-+=+++-=x x x x x x x x x t s x x x f
解:此模型正是标准形式,但不是典则形式,无法直接写出单纯形表,为此首先加入人工变量
01≥y ,02≥y ,并引入下面的辅助问题.
)
2,1(,0)3,2,1(0
6
654632..min 2321132121=≥=≥=+-+=++++=i y j x y x x x y x x x t s y y z i j
注意辅助问题的写法:在原问题的标准形的基础上,每个约束方程添加一个人工变量,目标函数是所有人工变量的和.
第一阶段:求解辅助问题,辅助问题的初始单纯形表按表2的填写方法产生,如表6所示.
按前例方法迭代得最终单纯形表,如表7所示.
由表7可知,辅助问题最优值为零,这时人工变量已全部从基变量中调出,由此转入第二阶段:求解原问题.
第二阶段:求解原问题.将表7中的1y ,2y 列划去,用原问题的j C 行数值替代表7的j C 行,并相应修改B C 列,再重新计算检验数行(包括0b )的数值,得原问题的初始单纯形表8.
表8 原问题的初始单纯形表
在表8中,检验数已全部非正,表明已求得原问题的最优解:01=x ,22=x ,3
2
3=x ,对应的目标函数最小值为43
-
. 要注意,第一阶段的目的仅仅是求原问题的一个初始单纯形表,在一般情况下,进入第二阶段后,可能仍需若干次迭代,才能求得原问题的最优解或判定无最优解.
§6.3 用MATLAB 软件中的命令解线性规划问题
首先要说明的是在MATLAB 中的线性规划问题并不完全采用标准形式,其一般形式是
Ub
x Lb beq x Aeq b
Ax t s cx z ≤≤=⋅≤=..min
解上述问题的命令是:linprog .它用如下两种语法格式:
)
(],,,,[),,,,,,,,(0 linprog lambda output exitflag fval x options x Ub Lb beq Aeq b A c linprog x ==
根据具体问题,一般模型中的约束条件是可选的,反映到这两种命令格式上就是命令括号中的参数是可选的.例如
模型一:
b
Ax t s cx z ≤=..min
可用如下两个命令来求解:
),,(b A c linprog x =或),,(],[b A c linprog fval x =.
这两个命令的差别是第2个命令除了可得到决策变量x 的值外,还可得到目标函数值fval . 以
,12416482.
.32),(max 2121212121≥≤≤≤++=x x x x x x t s x x x x f
为例编写M 文件如下:
);
,,(][];
12;16;8[];
40;04;21[];
32[b A c linprog z x b A c ===--=
运行结果是:
0000
.140000.20000.4-=
=
z x
即41=x ,22=x ,原问题的目标函数值为14.
模型二:
Ub
x Lb b
Ax t s cx
z ≤≤≤=..min 可用如下两个命令来求解:
),,,,(Ub Lb b A c linprog x =或),,,,(],[Ub Lb b A c linprog fval x =.
仍对上面的例子编写M 文件,只需对上面的M 文件稍作修改:
);
,,,,,,(][];
3;4[);1,2([];[];];8[];21[];32[ub lb beq Aeq b A c linprog z x ub zeros lb beq Aeq b A c =======--=
运行结果与前相同.
其他情况不再一一枚举,需要说明的是,一般模型中的约束条件可以任意组合,但linprog 命令括号中的参数并非可以任意取舍.如上面的M 文件不能修改为下面的文件:
);
,,,,(][];
3;4[);1,2(];
8[];21[];32[ub lb b A c linprog z x ub zeros lb b A c =====--=
对于linprog 命令的几种常用格式及其求解的对应的问题模型,现作陈述如下(以前一种命令形式为例):
(1)),,(b A f linprog x =用于求解的模型:
b
Ax t s cx z ≤=..min
(2)),,,,(beq Aeq b A f linprog x =用于求解的模型:
beq
x Aeq b
Ax t s cx
z =⋅≤=..min 若没有不等式约束b Ax ≤,则在M 文件中加入命令:[]=A ,[]=b . (3)),,,,,,(Ub Lb beq Aeq b A f linprog x =用于求解的模型:
Ub
x Lb beq x Aeq b
Ax t s cx z ≤≤=⋅≤=..min
若没有等式约束beq x Aeq =⋅,则在M 文件中加入命令:[]=Aeq ,[]=beq .
(4)),,,,,,,(0x Ub Lb beq Aeq b A f linprog x =求解模型与用法同上,这里0x 表示给定的一个初始可行解.
作为例子,下面给出用linprog 命令求解引例1的M 文件:
);
,,(],[];
76;40;36[];
89;45;43[];3032[b A c linprog z x b A c ===--=
§6.4 用LINDO 软件包解线性规划问题
LINDO 是一种专门用于求解数学规划问题的软件包.一般用LINDO(linear interactive and discrete optimizer)解决线性规划(linear programming, LP)、整数规划(integer programming, IP)问题.其中LINDO6.1学生版至多可求解多达300个变量和150个约束的规划问题.其正式版(标准版)则可求解超过一千多个约束方程和几千个变量的线性规划问题.
下面我们就来利用LINDO 求解例9.
例9 两个煤厂1A 和2A 每月进煤数量分别为60吨和100吨,联合供应三个居民区(1B ,2B ,3B )。
三个居民区每月对煤的需求量依次为50吨、70吨和40吨,煤厂1A 离居民区1B ,2B ,3B 的距离分别为10km ,5km ,6km ,煤厂2A 离居民区1B ,2B ,3B 的距离分别为4km ,8km ,12km .如何分配
供煤量使运输量(吨·km )达到最小?
模型建立:设ij x 表示煤厂i A 每月运往居民区j B 的煤的数量,2,1=i ,3,2,1=j .z 表示总运输量,则该问题的数学模型为 目标函数:
23222113121112846510m in x x x x x x z +++++=
约束条件:
⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎨⎧==≥=====∑∑∑∑∑=====)3,2,1,2,1(0407050
100602
1
32
122
1
13
123
11j i x x x x x x ij
i i i i i i j j j j 在LINDO 的窗口中输入语句如下:
111213212223111213212223112112221223min 1056481260100507040x x x x x x s t
x x x x x x x x x x x x end
⨯+⨯+⨯+⨯+⨯+⨯++=++=+=+=+=
然后按运算符键即可得结果.运算结果是
000000
.0000000
.10000000.0000000.40000000.0000000.50000000.0000000.30000000.0000000.30500000.10000000.00000.970)123
2221131211x x x x x x COST REDUCED VALUE
VARIABLE VALUE
FUNCTION OBJECTIVE
这里由于篇幅有限,仅列出目标函数的值和决策变量的值.“REDUCE COST ”表示当变量有微小变动时,目标函数的变化率,其中基变量的REDUCE COST 值应为0,对于非基变量ij x 相应的REDUCE COST 值表示ij x 增加一个单位(此时假定其他非基变量保持不变)时目标函数增加的量(min 型问题). 可见用LINDO 求解线性规划问题的最大优点是输入形式自然,接近习惯的数学形式.当然它也有一些格式约束:
1)LINDO 命令不区分英文大小写;
2)目标函数既可以是max ,也可以是min ;
3)目标函数与各约束条件之间一定要有“)(st to subject ”分开;
4)变量名不能超过8个字符,且变量与其系数间可以有空格,但不能有任何运算符号,如乘号“*”等;
5)系统默认变量均为非负的,若某变量x 是自由变量,应用x free 说明; 6)约束条件中的≤或≥可分别用<或>代替;
7)约束条件中含有变量的项必须写在等式的左边,而常数项必须写在等式的右边;
8)一般LINDO 中不能接受括号“( )”和逗号“,”,如)(40021x x +需写成21400400x x +,10,000需写成10000;
9)表达式应当已经简化,不能出现121432x x x -+,而应写成2132x x +-.
讨论题
1.将下列线性规划问题化为标准型
(1) ⎪⎪⎪⎩
⎪⎪⎪⎨⎧≥=--+-≥-+-≤+-++-+=0,,95341322318362..2453max 4214321432143214
321x x x x x x x x x x x x x x x t s x x x x z
(2) ⎪⎪⎪⎩
⎪⎪⎪⎨⎧≤≥=+-+-≥-+--≤--++++=0,0,152342722351232..243min 4214321432143214321x x x x x x x x x x x x x x x t s x x x x f
2.用图解法求解一下线性规划问题
(1) ⎪⎪
⎩
⎪⎪⎨⎧≥≥+≤+-=0,42123max 21212121x x x x x x x x z
(2) ⎪⎪
⎩
⎪⎪⎨⎧≥≥-≥++-=0,15535674..3min 21212121x x x x x x t s x x z
3.在以下问题中,列出所有的基,指出其中的可行基、基础可行解以及最优解
⎪⎪⎩
⎪⎪⎨
⎧≥≤-+≤++-+=0
,,4462..2max 321321
321321x x x x x x x x x t s x x x z
4.用单纯形法求解以下线性规划问题
(1) ⎪⎪
⎩⎪⎪⎨⎧≥≤-=++-=0,,1221243..2max 3213232132x x x x x x x x t s x x z
(2) ⎪⎪⎪⎩
⎪⎪⎪⎨⎧≥≤+-≤-+≤+++-=0,,936212..2max 32121321321321x x x x x x x x x x x t s x x x z
5.某饮料厂生产甲、乙两种产品,一件甲用A 原料1kg ,B 原料5kg ;一件乙用A 原料2kg ,B 原料4kg .现有A 原料20kg ,B 原料70kg .甲、乙产品每件售价分别为20元和30元.试问如何安排生产使收入最大?
6.某工厂生产1A 、2A 两种产品,生产每单位产品1A 、2A 可获利润分别为15元和20元.每个产品都需经过3道工序,每道工序在一个月内能利用的工时数如表9所示.工厂应如何安排一个月的生产计划,
使获得的总利润最多?试写出此问题的数学模型,并求出最高利润.
表 9
7.背包问题:一个旅行者,为了准备旅行的必备物品,要在背包里装一些最有用的东西.但背包大小有限,其总容积为a (单位:3
cm ).该旅行者打算携带重bkg 的物品.现共有m 种物品,第i 件物品的体积
为i a (单位:3
cm ),重量为),,2,1(m i kg b i =.假设第i 件物品的“价值”为),,2,1(m i c i =,并且
- 21 - 每件物品只能整件携带,试问旅行者应携带哪几件物品,使得其总价值最大?请写出此问题的数学模型,并求出最优解.
8.某政府机构计划生产两类经济商品:消费资料和生产资料。
生产必要的投入有原料和劳动力两种.假设投入原料可以产出消费资料和生产资料,并且1个单位的原料可以生产1个单位的消费资料或1个单位的生产资料;而投入劳动力只能产出生产资料,并且2个单位的劳动力可以产生1个单位的生产资料.另外假设投入的原料和劳动力成本都是1个货币单位.政府的目标是下面5个:
第一目标:至少生产50个单位的消费资料;
第二目标:正好生产90个单位的生产资料;
第三目标:至少利用80个单位原料和60个单位劳动力;
第四目标:限制系统的投入预算为120个货币单位.
建立模型,求所投入的原料与劳动力的最优值.
9.利用Matlab 软件中的命令求线性规划问题
⎪⎪⎪⎩⎪⎪⎪⎨⎧>>><+≥++-=002
107..513min z y x z y y x t s z
y x m
10.用LINDO 软件求解线性规划问题:
⎪⎪⎩⎪⎪⎨⎧≤≤≥≤+-≤-≤-+3
0,03
823..2max 212121
212
1x x x x x x x x t s x x。