线性规划和匈牙利法.doc
- 格式:doc
- 大小:139.00 KB
- 文档页数:6
一、线性规划
l线性规划的含义和数学模型的建立
线性规划(Linear Programming)就是在一定的约束条件下,寻求某一个目标函数的最大
值或最小值,以求取最优方案的一种规划方法。
在生产管理中运用线性规划时,首先要把所要解决的实际问题.如投资问题、计划安排问题、下料问题、运输问题、库存问题等,经过归纳和整理,建立数学模型,然后用相应的方法求出模型的最优解。线性规划模型由两部分组成:目标函数和约束条件。 建立模型的步骤是:首先明确目标函数,即确定该生产问题所追求的目标,如利润、产量、成本等,和它所对应的决策变量,建立以决策变量表示的线性函数式。当追求的目标是经济效果时,在函数式前冠以max,这就是极大化问题;当追求的目标是资源消耗时,在函数式前冠以min,这就是极小化问题。其次建立为实现目标函数所需满足的各种约束条件,如设备、原材料、劳动力、能源的使用限制等,并以线性等式或不等式表示。
现举例说明线性规划模型的建立。
例 经市场调查研究,某工厂决定生产A、B两种产品,它们的生产条件、经济指标如表3-1所示,求工厂取得最大利润的生产方案。
解:设该工厂生产A、B两种产品的计划产量分别为x1、x2件,它们必须满足约束条件:钢材的限制情况30021xx;人力的限制情况400221xx;预测市场销售限制情况2502x;x1和x2必须为非负。其目标函数式可表达为:max z=50x1+100x2。经整理上述的线性规划问题可建立如下的数学模型
目标函数 max z=50x1+100x2
约束条件0,25040030021221212xxxxxxx
2.线性规划的图解法
对于一个仅含两个决策变量的线性规划问题,可用图解法求出其最优解。现仍用上侧介绍具体求法。
首先,在平面图形上建立以x1为横轴、x2为纵轴的直角坐标系,因为线性规划数学模型中要求所有变量为非负数,因此只有在直角坐标系的第一象限的坐标点才有实际意义。按方程
250,400,300221212xxxxx在图上作三条直线。由解析几何知道,不仅三条直线上所有点满足各约束条件的要求,而且三条直线的各左下半平面所有坐标点,也均满足各约束的要求,由此可知同时满足约束的区域是凸多边形的0ABCD,见图3-7a中的阴影部分,因为该区域的坐标点均满足约束条件,故称可行解.整个区域称为可行域。
然后,可把目标函数xxz2110050改写为1002112zxx,在坐标图上这是以z为参数、斜率为21的一族平行直线。在图3-7b中容易看出,这族平行线中,离0点越远的直线,z的值越大,要确定一条直线使它尽可能远离0点.又至少与凸多边形0ABCD有一个交点。显然,由图可见,当直线通过B点时,与可行域相切,此点即为最优解,目标函数在此点达到最大值,对应于B点的甲、乙两种产品的产量为:甲产品501x件,乙产品2502x件,工厂获得最大利润为z=27500元。
3.单纯形法的计算
当两个以上变量的线性规划求解时,运用单纯形法更为筒捷。它的基本原理是先确定一个基本可行解,再通过数学选代过程逐步达到最优解。
这里仍以上题为例,介绍单形法求解的基本步骤。
(1) 将上述模型变为标准式
目标函数 xxxxxz5432100010050max 约束条件
为松弛变量xxxxxxxxxxxxjj54352421321,,)5,4,3,2,1(02504002300
(2) 建立初始单纯表,如表3-2所示,进行迭代,求得最优解。
解单纯形表的步骤:先计算初始表的检验数CCCBajjj,并找出关键列(↑)。关键列应找检验数行绝对值最大的值数。从本例初始表中看出,x2是关键列,x2应调人到xB栏(基本变量栏)的变量。再找出关键行(←)。关键行由常数项列与关键列数值的最小比值(Q)决定。见表右端。关键行上的变量就是调出的变量,从本倒初始表中看出x5是应调出的变量。经迭代,在极大化问题中,当检验数行的数值均为零或正值;在极小化问题中,当检验数行的数值均为零或负值,表明最优解已找到,本倒经过二次迭代,得最优解501x,2502x,最优目标函数值z=27500 (元)。
二、 生产任务分配的匈牙利法
在实际的生产管理工作中,常会遇到这样的问题,就是如何根据生产作业汁划将不同任务在不同的工人(或班组)之间分配,使完成任务总的消耗时间或费用最小。解决这类问题的简便而有效的方法是匈牙利法,它是由匈牙利数学家D. Konig所提出。
例 有4项任务A、B、C、D,分别由甲、乙、丙、丁4个人去完成,规定每人承担其中一项任务,不同的人完成同一任务所花时间(h)不同,见表3-3,求如何分配,使完成这4项任务的总时间最小。
匈牙利法求解此问题的步骤是:
1) 按表3-3列出矩阵
2) 将矩阵作行、列约简:首先进行行约简。在矩阵的每一行中选取最小元素,然后将该行的各元素都减去此数,得到如下新矩阵
行约简是比较一名工人担任不同任务时所花的时间,各行中减去最小值后的时间表示该工人担任其它任务时,所多花费的时间,每行中的“0”表示该工人承担这项任务最有利。
然后将经过行约筒后的矩阵中没有“0”的列再进行约简,即从该列中选出最小元素,并将其它元素减去此数,得到新矩阵
列约简是比较一项任务有不同工人承担所托时间,各列中减去最小值后的时间表示任务由其他工人担任时,所多花费的时间,每列中的“0”表示这项任务由该工人承担最有利。
3) 检验是否已得最优分配方案;作零的覆盖线,即对有“0”的行和列,划上一条覆盖线,能覆盖所有零元素的最少覆盖线数称为维数,当覆盖线的维数等于矩阵阶数时,可知已得最优分配方案,若维数小于阶数,再作调整。本例可用三条覆盖线覆盖住所有零元素,维数是3,矩阵的阶数是4,维数不等于阶数,因此矩阵还必须调整。
4) 矩阵的调整。在上述矩阵中.有三种元素,一种是无线覆盖元素,另一种是单线覆盖元素,还有一种是双线覆盖元素。在无线覆荒元素中找出最小值,本例为“1”,将无线覆盖得元素都减去“1”,而双线覆盖的元素加上“1”,单线覆盖的元素不变。这样得到新矩阵
5) 再检验——作覆盖线,方法与步骤3相同。现在的最少覆盖线数为4,与矩阵阶数相等,可知已能进行最优分配。
6) 确定最优分配方案。进行具体分配时,可以对只有一个零元素的列(行)先分配(记√号),分配后,划去与该零元素同行(列)的其他零元素(记×号)这样依改做完各列(行),得到分配结果。如果矩阵能通过直接观察找到位于不同行不同列的零元素,那么就可以直接确定分配方案。
最优分配方案:甲——D,乙——B,丙——A,丁——C。
总消耗工时为:Z=7+5+4+5=21 (h)。