想一想:在生产管理和经营活动中若要求解:•安排上班的人数•运输车辆台数第八章整数规划(IP)(IntegerProgramming)§1整数规划的模型(掌握)§3整数规划的应用(掌握)(补充指派问题的匈牙利解法)§2整数规划的计算机求解(掌握)主要内容:一、整数规划的模型(一)整数规划实例例1:某公司拟用集装箱托运甲、乙两种货物,这两种货物每件的体积、重量,可获利润以及托运所受限制如表所示:甲种货物至多托运4件。问:两种货物各托运多少件,可使获得利润最大???货物每件体积(立方英尺)每件重量(百千克)每件利润(百元)甲乙19527344023托运限制1365140规划模型:为整数运件数分别为甲乙两种货物托设2121121212121,0,41404041365273195..32max,xxxxxxxxxtsxxzxx货物每件体积每件重量每件利润甲乙19527344023托运限制1365140(二)整数规划的一般数学模型一般形式且部分或全部为整数或n)1.2(j0)2.1()min(max11jnjijijnjjjxmibxaxcZZ依照决策变量取整要求的不同,整数规划可分为纯整数规划、全整数规划、混合整数规划、0-1整数规划。纯整数规划:所有决策变量要求取非负整数。全整数规划:除了所有决策变量要求取非负整数外,技术系数aij和常数bi也要求取整数。混合整数规划:只有一部分的决策变量要求取非负整数,另一部分可以取非负实数。0-1整数规划:所有决策变量只能取0或1两个整数。对整数规划问题,先按线性规划问题(不受整数约束)求解,然后“舍入化整”,就可得到整数最优解,可以吗?想一想:(三)整数规划与线性规划的关系从数学模型上看整数规划似乎是线性规划的一种特殊形式,求解只需在线性规划的基础上,通过舍入取整,寻求满足整数要求的解即可。但实际上两者却有很大的不同,通过舍入得到的解(整数)也不一定就是最优解,有时甚至不能保证所得的解是整数可行解。举例说明。例:设整数规划问题如下且为整数0,13651914max21212121xxxxxxxxZ首先不考虑整数约束,得到线性规划问题。0,13651914max21212121xxxxxxxxZ用解法求出最优解x1=3/2,x2=10/3且有MaxZ=29/6x1x2⑴⑵33(3/2,10/3)现求整数解(最优解):如用“舍入取整法”可得到4个点即(1,3)(2,3)(1,4)(2,4)。显然,它们都不可能是整数规划的最优解。按整数规划约束条件,其可行解肯定在线性规划问题的可行域内且为整数点。故整数规划问题的可行解集是一个有限集,如图所示。图1.整数规划的解是可数个的,最优解不一定发生在顶点。2.整数规划的最优解不会优于其对应线性规划问题的最优解。(定理)重点因此,可将集合内的整数点一一找出,其最大目标函数的值为最优解,此法为完全枚举法。如上例:其中(2,2)(3,1)点为最大值,MaxZ=4。目前,常用的求解整数规划的方法有:分支定界法和割平面法(不作为课堂授课内容);对于特别的0-1规划问题采用隐枚举法和匈牙利法。在实际中经常会遇到这样的问题,有n项不同的任务,需要n个人分别完成其中的一项,但由于任务的性质和各人的专长不同,因此各人去完成不同的任务的效率(或花费的时间或费用)也就不同。于是产生了一个问题,应指派哪个人去完成哪项任务,使完成n项任务的总效率最高(或所需时间最少),这类问题称为指派问题或分派问题。二、指派问题(匈牙利法)•指派问题是0—1规划的特例。•库恩(ww.kuhn)于1955年提出了指派问题的解法。他引用了匈牙利数学家康尼格一个关于矩阵中0元素的定理,所以把这解法称为匈牙利法。以后在方法上虽有不断改进,但仍沿用这名称。四、整数规划问题计算机求解(P165)例2:Maxz=3x1+x2+3x3s.t.-x1+2x2+x3≤44x2-3x3≤2x1-3x2+2x3≤3x1,x2,x3≥0为整数用《管理运筹学》软件求解得:x1=5x2=2x3=2四、整数规划问题计算机求解(P165)例3:Maxz=3x1+x2+3x3s.t.-x1+2x2+x3≤44x2-3x3≤2x1-3x2+2x3≤3x3≤1x1,x2,x3≥0x1,x3为整数x3为0-1变量用《管理运筹学》软件求解得:x1=4x2=1.25x3=1z=16.25§8.3整数规划的应用•投资场所的选择。例4•固定成本问题。例5•指派问题(分配问题)。例6•分布系统设计。例7•投资问题。例8例4、京成畜产品公司计划在市区的东、西、南、北四区建立销售门市部,拟议中有10个位置Aj(j=1,2,3,…,10)可供选择,考虑到各地区居民的消费水平及居民居住密集度,规定:在东区由A1,A2,A3三个点至多选择两个;在西区由A4,A5两个点中至少选一个;在南区由A6,A7两个点中至少选一个;在北区由A8,A9,A10三个点中至少选两个。Aj各点的设备投资及每年可获利润由于地点不同都是不一样的,预测情况见表所示(单位:万元)。但投资总额不能超过720万元,问应选择哪几个销售点,可使年利润为最大?A1A2A3A4A5A6A7A8A9A10投资额10012015080709080140160180利润36405022203025485861五、投资场所的选择。例4(P166)解:设:0--1变量xi=1(Ai点被选用)或0(Ai点没被选用)。这样我们可建立如下的数学模型:Maxz=36x1+40x2+50x3+22x4+20x5+30x6+25x7+48x8+58x9+61x10s.t.100x1+120x2+150x3+80x4+70x5+90x6+80x7+140x8+160x9+180x10≤720x1+x2+x3≤2x4+x5≥1x6+x7≥1x8+x9+x10≥2xi≥0且xi为0--1变量,i=1,2,3,……,10例4、京成畜产品公司计划在市区的东、西、南、北四区建立销售门市部,拟议中有10个位置Aj(j=1,2,3,…,10)可供选择,考虑到各地区居民的消费水平及居民居住密集度,规定:在东区由A1,A2,A3三个点至多选择两个;在西区由A4,A5两个点中至少选一个;在南区由A6,A7两个点中至少选一个;在北区由A8,A9,A10三个点中至少选两个。Aj各点的设备投资及每年可获利润由于地点不同都是不一样的,预测情况见表所示(单位:万元)。但投资总额不能超过720万元,问应选择哪几个销售点,可使年利润为最大?在西区由A4,A5两个点或者都选,或者都不选。A1A2A3A4A5A6A7A8A9A10投资额10012015080709080140160180利润36405022203025485861五、投资场所的选择。例4(P166)在实际中经常会遇到这样的问题,有n项不同的任务,需要n个人分别完成其中的一项,但由于任务的性质和各人的专长不同,因此各人去完成不同的任务的效率(或花费的时间或费用)也就不同。于是产生了一个问题,应指派哪个人去完成哪项任务,使完成n项任务的总效率最高(或所需时间最少),这类问题称为指派问题或分派问题。(一)、指派问题的数学模型设n个人被分配去做n件工作,规定每个人只做一件工作,每件工作只有一个人去做。已知第i个人去做第j件工作的的效率(时间或费用)为Cij(i=1.2…n;j=1.2…n)并假设Cij≥0。问应如何分配才能使总效率(时间或费用)最高?六、指派问题•指派问题是0—1规划的特例。•库恩(ww.kuhn)于1955年提出了指派问题的解法。他引用了匈牙利数学家康尼格一个关于矩阵中0元素的定理,所以把这解法称为匈牙利法。以后在方法上虽有不断改进,但仍沿用这名称。【例】下表为某一个分配问题的效率矩阵,其中aij表示第i个人完成第j项工作需要的时间。要求:1.将此分配问题的求解转化为一个网络图中求始点与终点之间的最短路问题,画出该网络图,注明节点和边的含义,并标明每一条边的aij值;2.以上述网络图为基础,利用0-1变量建立该最短路问题的0-1整数规划模型,列出该模型的数学表达式。工作人B1B2B3A1A2A3a11a21a31a12a22a32a13a23a33例6.有四个工人,要分别指派他们完成四项不同的工作,每人做各项工作所消耗的时间如下表所示,问应如何指派工作,才能使总的消耗时间为最少。工作工人ABCD甲15182124乙19232218丙26171619丁19212317解:引入0—1变量xij,并令xij=1(当指派第i人去完成第j项工作时)或0(当不指派第i人去完成第j项工作时).这可以表示为一个0--1整数规划问题:Minz=15x11+18x12+21x13+24x14+19x21+23x22+22x23+18x24+26x31+17x32+16x33+19x34+19x41+21x42+23x43+17x44s.t.x11+x12+x13+x14=1(甲只能干一项工作)x21+x22+x23+x24=1(乙只能干一项工作)x31+x32+x33+x34=1(丙只能干一项工作)x41+x42+x43+x44=1(丁只能干一项工作)x11+x21+x31+x41=1(A工作只能一人干)x12+x22+x32+x42=1(B工作只能一人干)x13+x23+x33+x43=1(C工作只能一人干)x14+x24+x34+x44=1(D工作只能一人干)xij为0--1变量,i,j=1,2,3,4***求解可用《管理运筹学》软件中整数规划方法。设决策变量1分配第i个人去做第j件工作xij=0相反(I,j=1.2.…n)其数学模型为:)..2.1,1(0)..2.1(1)..2.1(1min1111njixnjxnixxcZijniijnjijninjijij或(二)匈牙利法解题步骤(补充,重点)指派问题是0-1规划的特例,也是运输问题的特例,当然可用整数规划,0-1规划或运输问题的解法去求解,这就如同用单纯型法求解运输问题一样是不合算的。利用指派问题的特点可有更简便的解法,这就是匈牙利法,即系数矩阵中独立0元素的最多个数等于能覆盖所有0元素的最少直线数。第一步:变换指派问题的系数矩阵(cij)为(bij),使在(bij)的各行各列中都出现0元素,即(1)从(cij)的每行元素都减去该行的最小元素;(2)再从所得新系数矩阵的每列元素中减去该列的最小元素。第二步:进行试指派,以寻求最优解。在(bij)中找尽可能多的独立0元素,若能找出n个独立0元素,就以这n个独立0元素对应解矩阵(xij)中的元素为1,其余为0,这就得到最优解。找独立0元素,常用的步骤为:(1)从只有一个0元素的行(列)开始,给这个0元素加圈,记作◎。然后划去◎所在列(行)的其它0元素,记作Ø;这表示这列所代表的任务已指派完,不必再考虑别人了。(2)给只有一个0元素的列(行)中的0元素加圈,记作◎;然后划去◎所在行的0元素,记作Ø.(3)反复进行(1),(2)两步,直到尽可能多的0元素都被圈出和划掉为止。(4)若仍有没有划圈的0元素,且同行(列)的0元素至少有两个,则从剩有0元素最少的行(列)开始,比较这行各0元素所在列中0元素的数目,选择0元素少的那列的这个0元素加圈(表示选择性多的要“礼让”选择性少的)。然后划掉同行同列的其它0元素。可反复进行,直到所有0元素都已圈出和划掉为止。(5)若◎元素的数目m等于矩阵的阶数n,那么这指派问题的最优解已得到。若mn,则转入下一步。第三步:作最少的直线覆盖所有0元素。(1)对没有◎的行打√号;(2)对已打√号的行中所有含Ø元素的列打√号;(3)再对打有√号的列中含◎元素的行打√号;(4)重复(2),(3)直到得不出新的打√号的行、列为止;(5)对没有打√号的行画横线,有打√号的列画纵线,这就得到覆