1第五章整数规划2整数规划是一类要求变量取整数值的数学规划,可分成线性和非线性两类(本章讨论线性)。根据变量的取值性质,又可以分为纯整数规划,混合整数规划,0-1整数规划等。3整数规划是数学规划中一个较弱的分支,目前只能解中等规模的线性整数规划问题,而非线性整数规划问题,还没有好的办法。4例:一登山队员做登山准备,他需要携带的物品有:食品,氧气,冰镐,绳索,帐篷,照相机和通讯设备,每种物品的重要性系数和重量如下,假定登山队员可携带最大重量为25公斤。问:如何装备?5序号1234567物品食品氧气冰镐绳索帐篷相机设备重量55261224重要系数2015181484106解:如果令xi=1表示登山队员携带物品i,xi=0表示登山队员不携带物品i,则问题表示成0-1规划:MaxZ=20x1+15x2+18x3+14x4+8x5+4x6+10x7s.t.5x1+5x2+2x3+6x4+12x5+2x6+4x725xi=1或xi=0i=1,2,….77例背包问题(KnapsackProblem)一个旅行者,为了准备旅行的必须用品,要在背包内装一些最有用的东西,但有个限制,最多只能装b公斤的物品,而每件物品只能整个携带,这样旅行者给每件物品规定了一个“价值”以表示其有用的程度,如果共有n件物品,第j件物品aj公斤,其价值为cj.问题变成:在携带的物品总重量不超过b公斤条件下,携带哪些物品,可使总价值最大?8解:如果令xj=1表示携带物品j,xj=0表示不携带物品j,则问题表示成0-1规划:MaxZ=Σcjxjs.t.Σajxjbxj=0或19例用集装箱托运货物问:甲乙货物托运多少箱,使总利润最大?货物m3/箱百斤/箱百元/箱甲5220乙4510限制2413分析:设x1为甲货物托运箱数,x2为乙货物托运箱数。则maxz=20x1+10x25x1+4x2≤24①2x1+5x2≤13②x1,x2≥0x1,x2取整数10图解法:x1x243210124.8①2.6②(4,1)∴x1*=4x2*=1zI*=90maxz=20x1+10x25x1+4x2≤24①2x1+5x2≤13②x1,x2≥0x1,x2取整数11一般,整数规划的最优解不会优于相应线性规划的最优解。对于max问题,zI*≤zl*对于min问题,zI*≥zl*12数学模型整数规划(IP)的一般数学模型:MaxZ=Σcjxjs.t.Σaijxjbi(i=1,2,…m)xj0且部分或全部是整数13特殊约束的处理(IP的应用)互斥约束矛盾约束在建立数学模型时,有时会遇到相互矛盾的约束,模型只要求其中的一个约束起作用。14例:下面两个约束相互矛盾f(x)-50(1)f(x)0(2)引入一个整数变量来处理-f(x)+5M(1-y)(3)f(x)My(4)M是足够大的整数,y是0-1变量15当y=1时,(1)(3)无差别,(4)式显然成立;当y=0时,(2)(4)无差别,(3)式显然成立。以上方法可以处理绝对值形式的约束f(x)a(a0)此时f(x)a(5)f(x)-a(6)是矛盾约束。f(x)-50(1)-f(x)+5M(1-y)(3)f(x)0(2)f(x)My(4)16引入一个整数变量来处理-f(x)+aM(1-y)f(x)+aMyM是足够大整数,y是0-1变量注意:对|f(x)|a(a0)不必引入0-1变量,因为f(x)a和f(x)-a并不矛盾。f(x)a(5)f(x)-a(6)17例:两个约束条件2x1+3x28x1+x22只能有一个成立,试用0-1变量来表示这个要求。解:引入0-1变量y和足够大的正数M,则188-2x1-3x2M(1-y)x1+x2-2My当y=0,x1+x22成立,而2x1+3x28-M自然成立,从而是多余的;当y=1,2x1+3x28成立,而x1+x22+M自然成立,从而是多余的。2x1+3x28x1+x2219多中选一的约束例如:模型希望在下列n个约束中,只能有一个约束有效,fi(x)0i=1,2,….n.引入n个0-1变量yi,i=1,2,…n,则上式可改写为:fi(x)M(1-yi)y1+y2+…+yn=120如果希望有k个约束有效,则:fi(x)M(1-yi),y1+y2+…+yn=k如果希望至多有k个约束成立,则:如果希望至少有k个约束成立,则:fi(x)M(1-yi),y1+y2+…+ynkfi(x)M(1-yi),y1+y2+…+ynk21逻辑关系约束比较典型的逻辑关系是if-then关系,也称if-then约束,这类逻辑关系一般涉及两个约束,如果第一个约束成立,则第二个约束也必须成立,否则,如果第一个约束不成立,则第二个约束也可以不成立。可以描述如下:22如果f(x)0成立,则g(x)0必须成立;如果f(x)0不成立,则对g(x)无限制。引入0-1变量:f(x)-M(1-y)(*)g(x)My23如果f(x)0成立,则y不能为1,否则与(*)矛盾;所以y=0,g(x)0成立。如果f(x)0(即f(x)0不成立)则y的取值已无关紧要,因为y取任何值(*)总成立,所以y的取值不由(*)控制,因此g(x)的取值不受任何限制。f(x)-M(1-y)(*)g(x)My24解法概述当人们开始接触整数规划问题时,常会有如下两种初始想法:因为可行方案数目有限,因此经过穷举法一一比较后,总能求出最好方案,例如,背包问题充其量有2n种方式,实际上这种方法是不可行。设想计算机每秒能比较1000000个方式,那么比较完260种方式,大约需要360世纪。25先放弃变量的整数性要求,解一个线性规划问题,然后用“四舍五入”法取整数解,这种方法,只有在变量的取值很大时,才有成功的可能性,而当变量的取值较小时,特别是0-1规划时,往往不能成功。26例求下列问题:MaxZ=3x1+13x2s.t.2x1+9x24011x1-8x282x1,x20,且取整数值27O1234567891054321x1x2I(2,4)B(9.2,2.4)AD放弃整数要求后,最优解B(9.2,2.4)Z0=58.8,而原整数规划最优解I(2,4)Z0=58,实际上B附近四个整点(9,2)(10,2)(9,3)(10,3)都不是原规划最优解。MaxZ=3x1+13x2s.t.2x1+9x24011x1-8x282x1,x20,且取整数值28O1234567891054321x1x2I(2,4)B(9.2,2.4)AD假如能求出可行域的“整点凸包”(包含所有整点的最小多边形OEFGHIJ),则可在此凸包上求线性规划的解,即为原问题的解。但求“整点凸包”十分困难。EFGHIJ29O1234567891054321x1x2I(2,4)B(9.2,2.4)AD假如把可行域分解成五个互不相交的子问题P1P2P3P4P5之和,P3P5的定义域都是空集,而放弃整数要求后P1最优解I(2,4),Z1=58P2最优解(6,3),Z2=57P4最优解(98/11,2),Z4=52(8/11)P1P2P4P3P530X12X16X23X22X13X17X24X23P1P5P4P2P3P31假如放弃整数要求后,用单纯形法求得最优解,恰好满足整数性要求,则此解也是原整数规划的最优解。以上内容中描述了目前解整数规划问题的两种基本途径。325.1分枝定界法(BranchandBoundMethod)原问题的松驰问题:任何整数规划(IP),凡放弃某些约束条件(如整数要求)后,所得到的问题(P)都称为(IP)的松驰问题。最通常的松驰问题是放弃变量的整数性要求后,(P)为线性规划问题。33去掉整数约束,用单纯形法IPLPxl*判别是否整数解xI*=xl*Yes去掉非整数域No多个LP……34分枝定界法步骤一般求解对应的松驰问题,可能会出现下面几种情况:若所得的最优解的各分量恰好是整数,则这个解也是原整数规划的最优解,计算结束。35分枝定界法步骤一般求解对应的松驰问题,可能会出现下面几种情况:若所得的最优解的各分量恰好是整数,则这个解也是原整数规划的最优解,计算结束。若松驰问题无可行解,则原整数规划问题也无可行解,计算结束。36若松驰问题有最优解,但其各分量不全是整数,则这个解不是原整数规划的最优解,转下一步。37若松驰问题有最优解,但其各分量不全是整数,则这个解不是原整数规划的最优解,转下一步。从不满足整数条件的基变量中任选一个xl进行分枝,它必须满足xl[xl]或xl[xl]+1中的一个,把这两个约束条件加进原问题中,形成两个互不相容的子问题(两分法)。38定界:把满足整数条件各分枝的最优目标函数值作为上(下)界,用它来判断分枝是保留还是剪枝。39定界:把满足整数条件各分枝的最优目标函数值作为上(下)界,用它来判断分枝是保留还是剪枝。剪枝:把那些子问题的最优值与界值比较,凡不优或不能更优的分枝全剪掉,直到每个分枝都查清为止。40例:用分枝定界法求解:MaxZ=4x1+3x2s.t.3x1+4x2124x1+2x29x1,x20整数用单纯形法可解得相应的松驰问题的最优解(6/5,21/10)Z=111/10为各分枝的上界。41012344321x1x2分枝:x11,x12P1P2(6/5,21/10)42两个子问题:(P1)MaxZ=4x1+3x2s.t.3x1+4x2124x1+2x29x1,x20,x11,整数用单纯形法可解得相应的(P1)的最优解(1,9/4)Z=10(3/4)43(P2)MaxZ=4x1+3x2s.t.3x1+4x2124x1+2x29x1,x20,x12,整数用单纯形法可解得相应的(P2)的最优解(2,1/2)Z=9(1/2)44012344321x1x2再对(P1)x11(1,9/4)分枝:(P3)x22(P4)x23P1P2P3P445(P1)两个子问题:(P3)MaxZ=4x1+3x2s.t.3x1+4x2124x1+2x29x1,x20,x11,x22整数用单纯形法可解得相应的(P3)的最优解(1,2)Z=10为上界46(P1)两个子问题:(P4)MaxZ=4x1+3x2s.t.3x1+4x2124x1+2x29x1,x20,x11,x23整数用单纯形法可解得相应的(P4)的最优解(0,3)Z=947X12X22X11X23P1:(1,9/4)Z=10(3/4)P4:(0,3)Z=9P2:(2,1/2)Z=9(1/2)P3:(1,2)Z=10P:(6/5,21/10)Z=111/10原问题的最优解(1,2)Z=1048例用分枝定界法求解:MinZ=x1+4x2s.t.2x1+x28x1+2x26x1,x20整数用单纯形法可解得相应的松驰问题的最优解(10/3,4/3)Z=26/3为各分枝的下界。49012345687654321x1x2p50012345687654321x1x2p(10/3,4/3)选x1进行分枝:(P1)x13(P2)x14为空集P151(P1)MinZ=x1+4x2s.t.2x1+x28x1+2x26x1,x20,x13整数用单纯形法可解得(P1)的最优解(3,3/2)Z=952(P2)MinZ=x1+4x2s.t.2x1+x28x1+2x26x1,x20x14整数无可行解。53012345687654321x1x2p对(P1)x13选x2进行分枝:(P3)x21无可行解(P4)x22P454(P3)MinZ=x1+4x2s.t.2x1+x28x1+2x26x1,x20,x13,x21整数无可行解。55(P4)MinZ=x1+4x2s.t.2x1+x28x1+2x26x1,x20,x13,x22整数用单纯形法可解得(P4)的最优解(2,2)Z=1056X14X21X13X22P1:(3