1、1,整数规划 Integer Programming(IP),整数规划,2,整数规划 Integer Programming(IP),整数规划数学模型的一般形式,(IP)问题 Max(min) z = cjxjaijxj (或=,或)bi i=1,2,mxj 0 j=1,2,nxj 中部分或全部取整数,s.t.,松弛问题 Max(min) z = cjxjaijxj (或=,或)bi i=1,2,mxj 0 j=1,2,n,s.t.,松弛问题:不考虑整数条件,由余下的目标函数和约束条件构成的规划问题称为该整数规划问题的松弛问题。,3,整数规划 Integer Programming(IP),整
2、数规划问题的类型 纯整数线性规划pure integer linear programming:全部决策变量都必须取整数值。 混合整数线性规划mixed integer linear programming:决策变量中一部分必须取整数值,另一部分可以不取整数值。 0-1型整数线性规划zero-one integer linear programming:决策变量只能取值 0 或 1 。,4,整数规划 Integer Programming(IP),线性整数规划问题解的特点 整数规划问题的可行解是松弛问题的可行解吗? 松弛问题的最优解就是线性整数规划问题的最优解吗? 松弛问题的最优解经过化整处理
3、后就是整数规划的最优解吗?,5,整数规划 Integer Programming(IP),例1,Max Z = 20X1 +10 X25X1 + 4X2 242X1 + 5X2 13X1 , X2 0X1 , X2 取整数,s.t.,6,整数规划 Integer Programming(IP),最优解不一定在顶点上达到; 最优解不一定是放松问题最优解的邻近整数解; 整数可行解远多余于顶点,枚举法不可取,7,整数规划 Integer Programming(IP),整数规划问题的求解方法 分支定界法(branch and bound method) 设有最大化的整数规划问题A,与它相应的线性规划
4、问题为B,求解问题B,若B的最优解不符合A的整数条件,则B的最优值一定为A最优值Z*的上界,而A的任意可行解的目标函数值将是Z*的下界,分支定界法就是将B的可行域分成子区域(称为分支方法)的方法,通过减小最优值的上界和下界最终得到最优值。,8,整数规划 Integer Programming(IP),例2,Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1 , X2 0X1 , X2 取整数,s.t.,9,整数规划 Integer Programming(IP),松弛问题 Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1
5、 , X2 0,该整数规划松弛问题的解为: (X1 ,X2 )= (3/2 ,10/3) Z0 = 29/6,0Z* 29/6,10,整数规划 Integer Programming(IP),0Z* 29/6,为原问题增加两个约束条件,X1 2; X1 1,问题2,问题1,11,整数规划 Integer Programming(IP),松弛问题 Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1 , X2 0,(3/2 ,10/3) Z0 = 29/6,B1 Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1 2X1 ,
6、X2 0,B2 Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1 1X1 , X2 0,B2:解 (1,7/3 ) Z2= 10/3,B1:解 (2,23/9 ) Z1= 41/9,0Z* 41/9,12,整数规划 Integer Programming(IP),(3/2 ,10/3) Z0 = 29/6,B2:解 (1,7/3 ) Z2 = 10/3,B1:解 (2,23/9 ) Z1 = 41/9,B11 Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1 2X2 3X1 , X2 0,B12 Max Z = X1
7、+ X214X1 + 9X2 51- 6X1 + 3X2 1X1 2X2 2X1 , X2 0,B12:解 (33/14,2 ) Z12 = 61/14,B1 Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1 2X1 , X2 0,0Z* 41/9,13,整数规划 Integer Programming(IP),(3/2 ,10/3) Z0 = 29/6,B2:解 (1,7/3 ) Z2 = 10/3,B12 Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1 2X2 2X1 , X2 0,B12:解 (33/14,2
8、) Z12 = 61/14,B121 Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1 3X2 2X1 , X2 0,B122 Max Z = X1 + X214X1 + 9X2 51- 6X1 + 3X2 1X1 2X2 2X1 , X2 0,B121:解 (3,1 ) Z112 = 4,B122:解 (2,2 ) Z121 = 4,B1:解 (2,23/9 ) Z11 = 41/9,14,整数规划 Integer Programming(IP),分枝定界法求解问题的步骤: 将要求解的整数规划问题称为问题A,将其松弛问题称为问题B,若 (1)B没有可行解
9、,这时A也没有可行解,停止; (2)B有最优解,并符合问题A的整数条件,B的最优解即为A的最优解; (3)B有最优解,但不符合A的整数条件,记它目标函数值为最优值上界。,15,整数规划 Integer Programming(IP),第一步:分枝,在中选择一个不符合整数条件的变量xj,其值为bj,bj表示小于bj的最大整数,构造两个约束条件。xj bj; xj bj+1将此两个约束条件加入B,在不考虑整数条件的情况下,求解两个后继问题B1和B2。,16,整数规划 Integer Programming(IP),定界,以每个后继问题为一分枝标明求解结果,与其他问题解的结果中,找出目标函数最大者作
10、为新的上界,从已符合整数条件的各分支中,找出目标函数值最大者作为新的下界,若无作用,下界仍为零。第二步:比较与剪枝,各分枝的最优目标函数中若有小于下界者,则剪掉这枝,此后无需再考虑。若大于下界,且不符合整数条件,则重复第一步,直至找到最优解为止。,17,整数规划 Integer Programming(IP),0-1整数规划问题,0-1规划,0-1决策变量,辅助0-1变量,固定成本问题,两个约束中选一个约束的问题,产品互斥问题,18,整数规划 Integer Programming(IP),0-1整数规划问题 0-1 变量及其应用0-1变量作为逻辑变量(Logical variable),常常
11、被引用来表示系统是否处于某个特定的状态,或者决策变量是否取某个特定的方案。如,xj =,1 当决策取方案 Pj 时 0 当决策不取方案 Pj 时,19,整数规划 Integer Programming(IP),0-1型整数规划问题的求解 方法: 枚举法。将全部解列出,验证约束,比较目标。 隐枚举法。找出一个可行解,算其目标。由此确定一个过滤条件,再枚举。,20,整数规划 Integer Programming(IP),例3,Max Z = 3X1 -2X2 +5X3 s.t. X1 + 2X2-X3 2X1 + 4X2+ X3 4X1 + X2 34X2+ X3 6X1 , X2 , X3 =
12、 0或1,21,整数规划 Integer Programming(IP),0-1整数规划应用举例 例4 投资项目选择问题 现有资金总额为B。可供选择的投资项目有n个,项目j所需投资和预期收益分别为aj和cj。此外,由于种种原因,有三个附加条件:第一,若选择项目1,就必须同时选择项目2。反之,则不一定;第二,项目3和4中至少选择一个;第三,项目5,6和7中恰好选择两个。应当怎样选择投资项目,才能使总预期收益最大?,22,整数规划 Integer Programming(IP),引入 0-1 变量,1 当 项目i被选中0 当 项目i未被选中,xi =,(i=1,2,n),max z = cixi
13、s.t. aixi B x2 x1 x3 + x4 1x5 +x6 + x7=2xi = 0或1,(i=1,2,n),23,整数规划 Integer Programming(IP),例5 选址问题某公司在城市的东、西、南三区建立门市部。拟城中有 7 个位置(地点)Ai(i=1,2,7)可供选择。公司规定在东区,由 A1,A2,A3 三个点中至多选两个;在南区,由 A4,A5 两个点中至少选一个;在西区,由 A6,A7 两个点中至少选一个。如果选用 Ai 点,设备投资估计为 bi 元,每年可获利润估计为 ci 元,但投资总额不能超过 B 元。问公司选择哪几个点可使年总利润最大?,24,整数规划
14、Integer Programming(IP),引入 0-1 变量,1 当 Ai 点被选用0 当 Ai 没点被选用,xi =,(i=1,2,7),max z = cixi s.t. bixi B x1 + x2 + x3 2x4 + x5 1x6 + x7 1xi = 0或1,(i=1,2,7),25,整数规划 Integer Programming(IP),例6 运动员选拔问题 4*100m混合泳接力是观众最感兴趣的游泳项目之一。现在从实例出发,研究混合泳运动员的选拔问题: 甲、乙、丙、丁是4名游泳运动员,他们各种姿势的100m游泳成绩见表,为组成一个4*100m混合泳接力队,怎样选派运动员
15、,方使接力队的游泳成绩最好?,26,整数规划 Integer Programming(IP),27,整数规划 Integer Programming(IP),min y=75.5x11+86.8x12+66.6x13+58.4x14 +65.8x21 +66.2x22+57.0x23+52.8x24 +67.6x31 +84.3x32+77.8x33+59.1x34 +74.0x41 +69.4x42+60.8x43+57.0x44,s.t.,X1j+ X2j +X3j +X4j=1(j=1,2,3,4) Xi1+ Xi2 +Xi3 +Xi4=1 (i=1,2,3,4) Xij=0或1 (i,
16、j=1,2,3,4),28,整数规划 Integer Programming(IP),例7 背包问题 一个徒步旅行者要在背包中选择一些最有价值的物品携带,他最多能携带115kg的物品。现共有5件物品,分别重54kg、35kg、57kg、46kg、19kg,其价值依次为7、5、9、6、3。问该旅行者携带那些物品,使总价值最大?,29,整数规划 Integer Programming(IP),max y=7x1+5x2+9x3+6x4+3x5,s.t.,54X1+ 35X2 +57X3 +46X4+19X5115 Xi=0或1 (i=1,2,3,4,5),1 当携带第i件物品0 当不携带第i件物品
17、,xi =,30,整数规划 Integer Programming(IP),例8 固定费用问题 某工厂为生产某种产品,有3种不同的生产方式可供选择。设第j种生产方式的固定成本为kj,可变成本为cj。若不考虑其他约束,请建立使总成本最小的规划模型。,min z = k1y1+c1x1+ k2y2+c2 x2 +k3y3+c3x3 s.t. xj0xjMjyjyj = 0或1,31,整数规划 Integer Programming(IP),例9 指派问题(assignment problem) 指派问题的标准形式及其数学模型 指派问题的标准形式(以人和事为例)是:有 n 个人和 n 件事,已知第
18、i 人做第 j 事的费用为 Cij(i,j = 1,2,n),要求确定人和事之间的一一对应的指派方案,使完成这件事的总费用最少。如,32,整数规划 Integer Programming(IP),指派问题的标准形式,令,1 当指派第 i 人完成第 j 项任务0 当不指派第 i 人完成第 j 项任务,xij =,min z = cijxijxij = 1, j = 1,2,nxij = 1, i = 1,2,nxij = 1 或 0,33,整数规划 Integer Programming(IP),指派问题的解法: 匈牙利解法标准的指派问题是一类特殊的 0-1 整数规划问题,可以用多种相应的解法来
19、求解。但是,这些方法都没有充分利用指派问题的特殊性质来有效减少计算量。1955年,库恩(W.W.Kuhn)利用匈牙利数学家康尼格(D.Knig)的关于矩阵中独立零元素的定理,提出了指派问题的一种解法,由此,习惯上称之为匈牙利解法。,34,整数规划 Integer Programming(IP),匈牙利解法匈牙利解法的关键是利用了指派问题最优解的如下性质:若从指派问题的系数矩阵 C = ( cij )nn 的某行(或某列)各元素分别减去一个常数 k ,得到一个新的系数矩阵C = ( cij )则以 C 和 C 为系数矩阵的两个指派问题有相同的最优解。,35,整数规划 Integer Progra
20、mming(IP),匈牙利解法的一般步骤 步骤一:变换系数矩阵。先对各行元素分别减去本行中最小元素,再对各列元素分别减去本列中最小元素。 步骤二:在变换后的系数矩阵中确定独立零元素,若独立零元素为n个,得到最优解,否则,作能覆盖所有零元素的最小直线数目的直线集合,转步骤三。 步骤三:继续变换系数矩阵,在未被覆盖的元素中找出一个最小元素,未被覆盖的元素所在行或列中各元素都减去这一最小元素,从而出现零元素。,36,整数规划 Integer Programming(IP),匈牙利解法的一般步骤 以上例说明步骤,2 15 13 410 4 14 159 14 16 137 8 11 9,0 13 11
21、 26 0 10 110 5 7 40 1 4 2,2 4 9 7,min,( cij )=,37,整数规划 Integer Programming(IP),0 13 11 26 0 10 110 4 7 40 1 4 2,0 0 4 2,min,0 13 7 06 0 6 90 5 3 20 1 0 0,=( cij ),38,整数规划 Integer Programming(IP),0 13 7 06 0 6 90 5 3 20 1 0 0,此时加圈 0 元素的个数 m = n = 4,所以得到最优解。,39,整数规划 Integer Programming(IP),0 0 0 10 1
22、0 01 0 0 0 0 0 1 0,( xij )=,40,整数规划 Integer Programming(IP),例,41,整数规划 Integer Programming(IP),12 7 9 7 98 9 6 6 67 17 12 14 915 14 6 6 10 4 10 7 10 9,7 6 7 6 4,5 0 2 0 22 3 0 0 00 10 5 7 29 8 0 0 4 0 6 3 6 5,42,整数规划 Integer Programming(IP),5 0 2 0 22 3 0 0 00 10 5 7 29 8 0 0 4 0 6 3 6 5,此时加圈 0 元素的个数
23、 m = 4, 而n = 5,所以解题没有完成。独立零元素(加圈零元素)少于 n 个,表示还不能确定最优指派方案。此时需确定能覆盖所有零元素的最少直线数目的直线集合。方法如下:,43,整数规划 Integer Programming(IP),指派问题(assignment problem) 匈牙利解法的一般步骤,如果画出的最少直线数与行数(或列数)相同,按上述方法能得出最优方案,否则要进行修改,修改的过程:找出没有被直线覆盖的所有元素,减去其中最小的元素,而直线相交的元素加上最小元素,直线上其他元素不变。,44,整数规划 Integer Programming(IP),这样得到新系数矩阵(其最
24、优解和原问题相同)。若得到 n 个独立的 0 元素,则已得最优解,否则重复该步骤继续变换系数矩阵。,45,整数规划 Integer Programming(IP),5 0 2 0 22 3 0 0 00 10 5 7 29 8 0 0 4 0 6 3 6 5,最小元素= 2,7 0 2 0 24 3 0 0 00 8 3 5 011 8 0 0 4 0 4 1 4 3,46,整数规划 Integer Programming(IP),7 0 2 0 24 3 0 0 00 8 3 5 011 8 0 0 4 0 4 1 4 3,此时加圈 0 元素的个数 m = 5, 而n = 5,独立零元素(加圈零元素)等于 n 个,此时已得到最优解,其解矩阵为,47,整数规划 Integer Programming(IP),指派问题(assignment problem) 匈牙利解法的一般步骤,( xij )=,0 1 0 0 00 0 1 0 00 0 0 0 10 0 0 1 0 1 0 0 0 0,最优指派: 甲 B 乙 C 丙 E 丁 D 戊 A,48,整数规划 Integer Programming(IP),练习,