1、第二章线性规划问题与计算机求解,1问题的提出 2图解法 3单纯形法 4 计算机求解,1问题的提出,例1. 某工厂在计划期内要安排、两种产品的生产,已知生产单位产品所需的设备台时及A、B两种原材料的消耗、资源的限制,如下表:问题:工厂应分别生产多少单位、产品才能使工厂获利最多?,设生产产品数量为x1,产品数量为x2 , 线性规划模型为:产品 利润:84 (110 设备+ 212 原料A) = 50 (元)产品B利润:140 (110 设备+112 原料A +118 原料B) = 100 (元) 目标函数:Max z = 50 x1 + 100 x2 约束条件:s.t. x1 + x2 300 2
2、 x1 + x2 400 x2 250 x1 , x2 0,例2. 某饲料公司希望用玉米、红薯两种原料来配置一种混合饲料,已知两种原料含三种营养成分和混合饲料对营养成分的要求如下表:问题:公司应任何采购两种原材料,使即满足营养要求,又使成本最少?,线性规划模型:混合饲料中玉米数量x1,红薯数量x2 目标函数:Min z = 2 x1 + 1.8 x2 约束条件:s.t. 8 x1 + 4x2 20 3x1 + 6 x2 18 x1 + 5x2 16 x1 , x2 0,线性规划问题主要类型,资源分配问题(resource-allocation)以符号表示的函数约束称为资源约束,这些限制要求使用
3、的资源必须小于等于所能提供的资源的数量。资源分配问题的共性就是它们的函数约束全部为资源约束。 使用的资源数量 可用的资源数量成本收益平衡问题 (cost-benefit-trade-off)以符号表示的函数约束为收益约束,形式为收益取得的水平必须大于等于最低可接受水平。收益约束反映了管理层所规定的目标。如果所有约束均为收益约束,这一问题为成本收益平衡问题。 完成的水平 最低可接受的水平,网络配送问题(distribution-network)以符号表示的函数约束称为确定需求的约束,它们表示了一定数量的确定的需求,提供的数量等于要求的数量。网络配送问题的共性就是它们的主要函数约束为一种特定形式的
4、确定需求的约束。 提供的数量需要的数量 混合问题(mixed Problem)除以上三类以外的问题,这一类型包括了三类约束函数,建模过程1.理解要解决的问题,了解解题目标和条件;2.定义决策变量( x1 ,x2 , ,xn ),每一组值表示一个方案; Decision variables 决策变量3.用决策变量的函数形式写出目标函数,确定最大化或最小化目标; Objective function 目标函数4.用一组决策变量的线性等式或线性不等式表示解决问题过程中必须遵循的约束条件; Constraints 约束,一般形式目标函数: Max (Min) z = c1 x1 + c2 x2 + +
5、 cn xn 约束条件: s.t. a11 x1 + a12 x2 + + a1n xn ( =, )b1 a21 x1 + a22 x2 + + a2n xn ( =, )b2 am1 x1 + am2 x2 + + amn xn ( =, )bm x1 ,x2 , ,xn 0 非负性,例1.目标函数: Max z = 50 x1 + 100 x2 约束条件: s.t. x1 + x2 300 (A) 2 x1 + x2 400 (B) x2 250 (C) x1 0 (D) x2 0 (E)得到最优解: x1 = 50, x2 = 250 最优目标值 z = 27500,2图 解 法,对于
6、只有两个决策变量的线性规划问题,可以在平面直角坐标系上作图表示线性规划问题的有关概念,并求解。 下面通过例1详细讲解其方法:,2图解法 画出可行域 满足约束的区域,(1)分别取决策变量X1 , X2 为坐标向量建立直角坐标系。在直角坐标系里,图上任意一点的坐标代表了决策变量的一组值,例1的每个约束条件都代表一个半平面。,(2)对每个不等式(约束条件),先取其等式在坐标系中作直线,然后确定不等式所决定的半平面。,(3)把五个图合并成一个图,取各约束条件的公共部分,如图2-1所示。,2 图 解 法 确定等值线与梯度,(4)目标函数z =50x1+100x2,当z取某一固定值时得到一条直线,直线上的
7、每一点都具有相同的目标函数值,称之为“等值线”。平行移动等值线,当移动到B点时,z在可行域内实现了最大化。A,B,C,D,O是可行域的顶点,对有限个约束条件则其可行域的顶点也是有限的。,250,200,43,2图解法 确定最优解,平行移动等值线,当移动到B点时,z在可行域内实现了最大化,B的坐标为最优解。解方程组得最优解:x1=50, x2=250, 这时z =27500。点A,B,C,D,O是可行域的顶点,对有限个约束条件则其可行域的顶点也是有限,x2= 250,x1+ x2=300,31,x1+x2=300,E,重要结论:如果线性规划有最优解,则一定有一个可行域的顶点对应一个最优解;无穷多
8、个最优解。若将例1中的目标函数变为 max z=50x1+50x2,则线段BC上的所有点都代表了最优解;无界解。即可行域的范围延伸到无穷远,目标函数值可以无穷大或无穷小。一般来说,这说明模型有错,忽略了一些必要的约束条件;无可行解。若在例1的数学模型中再增加一个约束条件4x1+3x21200,则可行域为空域,不存在满足约束条件的解,当然也就不存在最优解了。,进 一 步 讨 论 求极小化问题,例2 某公司由于生产需要,共需要A,B两种原料至少350吨(A,B两种材料有一定替代性),其中A原料至少购进125吨。但由于A,B两种原料的规格不同,各自所需的加工时间也是不同的,加工每吨A原料需要2个小时
9、,加工每吨B原料需要1小时,而公司总共有600个加工小时。又知道每吨A原料的价格为2万元,每吨B原料的价格为3万元,试问在满足生产需要的前提下,在公司加工能力的范围内,如何购买A,B两种原料,使得购进成本最低?,解:目标函数: Min f = 2x1 + 3 x2 约束条件: s.t. x1 + x2 350 x1 125 2x1 + x2 600 x1 , x2 0 采用图解法。如下图:得Q点坐标(250,100)为最优解。,线性规划的标准化,一般形式目标函数: Max (Min) z = c1 x1 + c2 x2 + + cn xn 约束条件: s.t. a11 x1 + a12 x2
10、+ + a1n xn ( =, )b1 a21 x1 + a22 x2 + + a2n xn ( =, )b2 am1 x1 + am2 x2 + + amn xn ( =, )bm x1 ,x2 , ,xn 0 标准形式目标函数: Max z = c1 x1 + c2 x2 + + cn xn 目标最大化; 约束条件: s.t. a11 x1 + a12 x2 + + a1n xn = b1 a21 x1 + a22 x2 + + a2n xn = b2 约束为等式; am1 x1 + am2 x2 + + amn xn = bm决策变量均非负; x1 ,x2 , ,xn 0,bi 0 右端
11、项非负。,1.极小化目标函数的问题: 设目标函数为 Min f = c1x1 + c2x2 + + cnxn (可以)令 z -f , 则该极小化问题与下面的极大化问题有相同的最优解,即 Max z =c1x1c2x2 cnxn 但必须注意,尽管以上两个问题的最优解相同,但它们最优解的目标函数值却相差一个符号,即 Min f Max z2 右端项有负值的问题: 如 bi0,则把该等式约束两端同时乘以1,得到: ai1 x1ai2 x2 ain xn = bi,非标准形式的线性规划非标准形式的线性规划,非标准形式的线性规划非标准形式的线性规划,3、约束条件不是等式的问题:1)设约束条件为: ai
12、1 x1+ai2 x2+ +ain xn bi 可以引进一个新的松弛变量 s ,使它等于约束右边与左边之差 s =bi(ai1 x1 + ai2 x2 + + ain xn ) 显然,s0, 这时新的约束条件成为 ai1 x1+ai2 x2+ +ain xn+s = bi2) 当约束条件为: ai1 x1+ai2 x2+ +ain xn bi 时 类似地令剩余变量 s =(ai1 x1+ai2 x2+ +ain xn) bi ; s0, 这时新的约束条件成为 ai1 x1+ai2 x2+ +ain xns = bi4. 当某一个变量xj无约束,既没有非负约束时,可以令 xj = xjxj” 其
13、中 xj0, xj”0,例5:将以下线性规划问题转化为标准形式 Min f = 2 x13x2 + 4 x3 s.t. 3 x1 + 4x2 5 x3 6 2 x1 + x3 8 x1 + x2 + x3 = 9 x1 , x3 0, x2 无约束解:首先,将目标函数转换成极大化: 令 z = f = 2x1+3x24x3 其次考虑约束,有2个不等式约束,引进松弛变量 x4,x5 0。 第三个约束条件的右端值为负,在等式两边同时乘1。 x2 无约束, 令 x2 = x2x2” 其中 x20, x2”0,通过以上变换,可以得到以下标准形式的线性规划问题: Max z = 2x1 + 3 (x2x
14、2”) 4x3 s.t. 3x1+ 4(x2x2”) 5x3 +x4 = 6 2x1 + x3 x5 = 8 x1 (x2x2”) x3 = 9 x1 , x2, x2” , x3 , x4 , x5 0,3单纯形法,3.1单纯形法的基本思路和原理单纯形法的基本思路:从可行域中某一个顶点开始,判断此顶点是否是最优解,如不是,则再找另一个使得其目标函数值更优的顶点,称之为迭代,再判断此点是否是最优解。直到找到一个顶点为其最优解,就是使得其目标函数值最优的解,或者能判断出线性规划问题无最优解为止。通过例1的求解来介绍单纯形法:在加上松弛变量之后我们可得到(增广形式)标准型如下:目标函数:max z
15、 50x1+100 x2 max z 50x1+100 x2约束条件:x1+x 300 x1+x2 + x3 300, 2x1+x2400 2x1+ x2 +x4 400, +x2 250. x2 +x5 250. x1,x20 xj0 (j=1,2, 5),31,一. 基本概念,上例线性规划的系数矩阵, 其中pj为系数矩阵A第j列的向量。A的秩为3,A的秩m小于此方程组的变量的个数n,为了找到一个初始基本可行解,先介绍以下几个线性规划的基本概念。基: 已知A是约束条件的mn系数矩阵,其秩为m。若B是A中mm阶非 奇异子矩阵(即可逆矩阵),则称B是线性规划问题中的一个基。基向量:基B中的一列即
16、称为一个基向量。基B中共有m个基向量。p2、 p4、p5 非基向量:在A中除了基B之外的一列则称之为基B的非基向量。 p1、 p3基变量:与基向量pi相应的变量xi叫基变量,基变量有m个。 x2、x4、x5 非基变量:与非基向量pj相应的变量 xj 叫非基变量,非基变量有n-m个。 x1、 x3,为基,由线性代数的知识知道,如果我们在约束方程组系数矩阵中找到一个基,令这个基的非基变量为零,再求解这个m元线性方程组就可得到唯一的解了,这个解我们称之为线性规划的基本解。不同的基有不同的基解 对于A的一个基, 令非基变量x,x3 0。这时约束方程就变为基变量的约束方程: x2 300, 求解得到此线
17、性规划的一个基本解: x2 + x4 400,x1=0,x2 = 300,x3 =0,x4=100,x5 =50 x2 +x5 = 250. X1=(x1, x2, x3 , x4, x5 ) T =(0, 300, 0,100, 50 ) T不满足该线性规划x40,x50的约束条件,显然不是此线性规划的可行解, 若取基 则令非基变量x2,x3 0,得到一个解:x1=300,x2=0,x3 =0,x4=100,x5=130 D点我们把满足非负条件的一个基本解叫做基本可行解,并把这样的基叫做可行基。线性规划的每一个基可行解对应可行域的一个顶点,20,29,二. 初始基可行解 单位矩阵为初始基,我
18、们能否找到的一个基能保证在求解之后得到的解一定是基本可行解呢?由于在线性规划的标准型中要求bj都大于等于零,如果我们能找到一个基是单位矩阵,或者说一个基是由单位矩阵的各列向量所组成(至于各列向量的前后顺序是无关紧要的事)例如,那么显然所求得的基本解一定是基本可行解,这个单位矩阵或由单位矩阵各列向量组成的基一定是可行基。实际上这个基本可行解中的各个变量或等于某个bj或等于零。,在本例题中我们就找到了一个基是单位矩阵。 在第一次找可行基时,所找到的基或为单位矩阵或为由单位矩阵的各列向量所组成,称之为初始可行基,其相应的基本可行解叫初始基本可行解。如果找不到单位矩阵或由单位矩阵的各列向量组成的基作为
19、初始可行基,我们将通过填加人工变量构造初始可行基,具体做法在以后详细讲述。,三、 最优性检验,所谓最优性检验就是判断已求得的基本可行解是否是最优解。1. 最优性检验的依据检验数j 一般来说目标函数中既包括基变量,又包括非基变量。现在我们要求只用非基变量来表示目标函数, 这只要在约束等式中通过移项等处理就可以用非基变量来表示基变量,然后用非基变量的表示式代替目标函数中基变量,这样目标函数中只含有非基变量了,或者说目标函数中基变量的系数都为零了。此时目标函数中所有变量的系数即为各变量的检验数,把变量xi的检验数记为i。显然所有基变量的检验数必为零。 在本例题中目标函数为50x1+100x2。由于初
20、始可行解中x1,x2为非基变量,所以此目标函数已经用非基变量表示了,不需要再代换出基变量了。这样我们可知1=50,2=100,3=0,4= 0,5=0。,2.最优解判别定理,对于求最大目标函数的问题中,对于某个基本可行解,如果所有检验数 0,则这个基本可行解是最优解。下面我们用通俗的说法来解释最优解判别定理。设用非基变量表示的目标函数为如下形式: 由于所有的xj的取值范围为大于等于零,当所有的 都小 于等于零时,可知 是一个小于等于零的数,要使 z 的值最大,显然 只有为零。我们把这些xj取为非基变量(即令这些 xj的值为零),所求得的基本可行解就使目标函数值最大为z0。*对于求目标函数最小值
21、的情况,只需把 0改为 0,四、 基变换,通过检验,我们知道这个初始基本可行解不是最优解。需要进行基变换找到一个新的可行基,具体的做法是从可行基中换一个列向量,得到一个新的可行基,使得求解得到的新的基本可行解,其目标函数值更优。为了换基就要确定换入变量与换出变量。 1。入基变量的确定 从最优解判别定理知道,当某个j0时,非基变量xj变为基变量,不取零值可以使目标函数值增大,故我们要选基检验数大于0的非基变量换到基变量中去(称之为入基变量)。若有两个以上的j0,则为了使目标函数增加得更大些,一般选其中的j最大者的非基变量为入基变量,即按最大法则选入基变量:在本例题中2=100是检验数中最大的正数
22、,故选x2为入基变量。,2. 出基变量的确定我们把确定出基变量的方法概括如下:把已确定的入基变量在各约束方程中的正的系数除以其所在约束方程中的常数项的值,把这一值记为i,把其中最小比值所在的约束方程中的原基变量确定为出基变量。这样在下一步迭代的矩阵变换中可以确保新得到的bj值都大于等于零。即按最小法则确定出基变量:以基变量xk代替出基变量xr,得到一个新的基可行解。以上过程可以通过单纯型表来实现。,五单纯形法的表格形式,在讲解单纯形法的表格形式之前,先从一般数学模型里推导出检验数 的表达式。 可行基为m阶单位矩阵的线性规划模型如下(假设其系数矩阵的前m列是单位矩阵): 以下用 表示基变量,用
23、表示非基变量。,把第i个约束方程移项,就可以用非基变量来表示基变量xi, 把以上的表达式带入目标函数,就有 其中:,单纯型表,单纯形法的计算步骤 (表格方式),第一步:求出线性规划的初始基本可行解 通过加松弛变量,剩余变量,人工变量方式将线性规划化成标准型,其中约束方程的系数矩阵包含一个单位矩阵,以这个单位矩阵作为基,得到问题的一个初始基可行解 以求解例1为例,Max z 50x1+100 x2 s.t. x1+ x2 300 2x1+x2 400 x2 250 xj0 (j=1, 2),Max z 50x1+100x2 s.t. x1 + x2 + x3 300 2x1+ x2 +x4 40
24、0 x2 +x5 250 xj0 (j = 1,2,3,4,5),单纯形表格求解例2,在上表中第3个基变量x5已被x2代替,故基变量列中的第3个基变量应变为x2。由于第0次迭代表中的主元a32已经为1,因此第3行不变。为了使第1行的a12为0,只需把第3行(-1)加到第1行即可。同样可以求得第2行。求得第1次迭代的基本可行解为 x3 =50, x4 =150, x2=250, x1=0, x5=0, z=25000。可行域A点坐标,19,从上表可以看出,第一次迭代的 ,因此不是最优解。设x1为入基变量,从此值可知b1/a11=50为最小正数,因此, x3为出基变量,a11为主元,继续迭代如下表
25、所示。,从上表中可知第二次迭代得到的基本可行解为x1=50, x2=250, x3 =0, x4 =50, x5=0,这时z = 27500。由于检验数都0,因此所求得的基本可行解为最优解, z=27500为最优目标函数值。实际上,我们可以连续地使用一个单纯形表,不必一次迭代重画一个表头。,单纯形表格求解例2,在zj行中填入第j列与CB列中对应的元素相乘相加所得的值,如z2=01+01+01=0,所在zi行中的第2位数填入0;在 行中填入cj-zj 所得的值,如 ;z表示把初始基本可行解代入目标函数求得的目标函数值,即z =bCB;初始基本可行解为x3=300, x4= 400,x5 = 25
26、0, x1=0, x2= 0;确定x3为出基变量;由于 , 因此确定x2为入基变量。出基变量所在行,入基变量所在列的交汇处为主元,这里是 a32=1,,在上表中第3个基变量x5已被x2代替,故基变量列中的第3个基变量应变为x2。由于第0次迭代表中的主元a32已经为1,因此第3行不变。为了使第1行的a12为0,只需把第3行(-1)加到第1行即可。同样可以求得第2行。求得第1次迭代的基本可行解为 x3 =50, x4 =150, x2=250, x1=0, x5=0, z=25000。可行域A点坐标,从上表可以看出,第一次迭代的 ,因此不是最优解。设x1为入基变量,从此值可知b1/a11=50为最
27、小正数,因此,s1为出基变量,a11为主元,继续迭代如下表所示。,从上表中可知第二次迭代得到的基本可行解为x1=50, x2=250, x3 =0, x4 =50, x5=0,这时z = 27500。由于检验数都0,因此所求得的基本可行解为最优解, z=27500为最优目标函数值。实际上,我们可以连续地使用一个单纯形表,不必一次迭代重画一个表头。,求解例,用单纯形法求解线性规划Max z 4x1+3 x2 s.t. x1+ 6 2x2 8 2 x1+3 x2 18 xj0 (j=1, 2),Max z 4x1+3x2 s.t. x1 + x3 6 2 x2 +x4 8 2x1+ 3x2 +x5
28、 18 xj0 (j = 1,2,3,4,5),最优解为x1=6, x2=2, x3=0, x4=4, x5= 0,这时z =30,六、大M法,一、大M法以第二章的例2来讲解如何用单纯形表的方法求解目标函数值最小的线性规划问题。目标函数:约束条件:加入松弛变量和剩余变量变为标准型,得到新的约束条件如下:,max z = 2x13x2.约束条件:x1+x2s1 = 350, x1 s2 = 125, 2x1+x2 +s3 = 600, x1,x2,s1,s2,s3 0,为了得到单位矩阵,引进人工变量a1和a2 。人工变量只能取零值。一旦人工变量取正值,那么有人工变量的约束方程和原始的约束方程就不
29、等价了,这样所求得的解就不是原线性规划的解了。为了竭尽全力地要求人工变量为零,我们规定人工变量在目标函数中的系数为M,这里M为任意大的数。这样只要人工变量0,所求的目标函数最大值就是一个任意小的数。这样为了使目标函数实现最大就必须把人工变量从基变量中换出。如果一直到最后,人工变量仍不能从基变量中换出,也就是说人工变量仍不为零,则该问题无可行解。此例的数学模型如下所示: 目标函数: max z=2x13x2Ma1Ma2. 约束条件:x1+x2s1 +a1 =350, x1 s2 +a2 =125, 2x1+x2 +s3 =600, x1,x2,s1,s2,s3,a1,a20. 像这样,为了构造初
30、始可行基得到初始可行解,把人工变量“强行”地加到原来的约束方程中去,又为了尽力地把人工变量从基变量中替换出来就令人工变量在求最大值的目标函数里的系数为M,这个方法叫做大M法,M叫做罚因子。,4 线性规划问题的计算机求解,可以使用由芝加哥大学的L.E.Schrage开发的Lindo计算机软件包的微型计算机版本Lindo/PC。一般书中介绍用Excel电子表格求解线性规划,本书主要用Excel电子表格求解,用易理解方式输入数据和构筑数据之间的联系 定义目标单元格(目标函数) 确定可变单元(决策变量) 添加约束变量(Adding Constraints),建立一个电子表格模型 P26,借用Excel中SUMPRODUCT函数来表达两个向量点乘,既两行对应元素相乘后求和,本书采用区域(单元格)名称方式,见P79,以伟恩德玻璃制品公司产品组合问题为例,Max z = 300 x1 + 500 x2 约束条件:s.t. x1 + 4 2 x2 12 3x1 + 2x2 18 x1 , x2 0,增加约束,重要选择项和求解,最优解 The Optimal Solution,