第二章整数规划 S1概论 1.1定义 规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中 变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适 用于整数线性规 。日前还没有一种方法能有效地求解一切整数规划。 划的分 指整数线性规划 于整数线性规划模型大致可分为两类 2°变量部分限制为整数的,称混合整数规划 1)数数地制结占 ()原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。 ②整数规划无可行解。 例1原线性规划为 min二=x,+x2 2x+4x=5,x20,x220 其绿优实数解为:高=0长一子mm:一子 ③有可行解(当然就存在最优解),但最优解值变差。 例2原线性规划为 min=+ 2x+4x=6x20,x320 其最优实数解为:名=0,名=弓mn:=号 若限制整数得:x=l,x2=L,min:=2。 (ⅱ)整数规划最优解不能按照实数最优解简单取整而获得。 1.3求解方法分类: ()分枝定界法一可求纯或混合整数线性规划。 ()割平面法一可求纯或混合整数线性规划· ()隐枚举法 一求解“0-1”整数规划: ①过滤隐 法: 举 解决指派问题 0-1”规划特殊情形) §2分枝定界法 对有约束条件的最优化问题(其可行解为有限数)的所有可行解空间恰当地进行系 统搜案,这就是分枝与定界内容。通常,把全部可行解空间反复地分制为趣来越小的 且对句 -16
-16- 第二章 整数规划 §1 概论 1.1 定义 规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中, 变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适 用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。 1.2 整数规划的分类 如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类: 1o 变量全限制为整数时,称纯(完全)整数规划。 2o 变量部分限制为整数的,称混合整数规划。 1.2 整数规划特点 (i) 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。 ②整数规划无可行解。 例 1 原线性规划为 min 1 2 z = x + x 2 4 5, 0, 0 x1 + x2 = x1 ≥ x2 ≥ 其最优实数解为: 4 5 ,min 4 5 0, x1 = x2 = z = 。 ③有可行解(当然就存在最优解),但最优解值变差。 例 2 原线性规划为 min 1 2 z = x + x 2 4 6, 0, 0 x1 + x2 = x1 ≥ x2 ≥ 其最优实数解为: 2 3 ,min 2 3 0, x1 = x2 = z = 。 若限制整数得: 1, 1,min 2 x1 = x2 = z = 。 (ii) 整数规划最优解不能按照实数最优解简单取整而获得。 1.3 求解方法分类: (i)分枝定界法—可求纯或混合整数线性规划。 (ii)割平面法—可求纯或混合整数线性规划。 (iii)隐枚举法—求解“0-1”整数规划: ①过滤隐枚举法; ②分枝隐枚举法。 (iv)匈牙利法—解决指派问题(“0-1”规划特殊情形)。 (v)蒙特卡洛法—求解各种类型规划。 下面将简要介绍常用的几种求解整数规划的方法。 §2 分枝定界法 对有约束条件的最优化问题(其可行解为有限数)的所有可行解空间恰当地进行系 统搜索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子 集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称 为定界。在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝
这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路 代初由Lan 又活且便 选址 包向 应用于求解生 用 求用 设有最大化的整数规划问题A,与它相应的线性规划为问题B,从解问题B开始 若其最优解不符合A的整数条件,那么B的最优目标函数必是A的最优目标函数:的 上界,记作三:而A的任意可行解的目标函数值将是:的一个下界三。分枝定界法就 是将B的可行域分成子区域的方法。逐步减小和增大:,最终求到:。现用下例米 说明: 例3求解下述整数规划 Max:=40x+90x 9x,+7x,≤56 {7x1+20x2≤70 x,.x、≥0且为整数 解()先不考虑整数限制, 即解相应的线性规划B,得最优解为: x1=4.8092,x,=1.8168.2=355.8779 可见它不符合整数条件。这时:是问题A的最优目标函数值:的上界,记作三。而 =0,2=0显然是问题A的一个整数可行解,这时:=0,是:的一个下界,记作:, 即0≤:≤356。 ()因为x,x,当前均为非整数,故不满足整数要求,任选一个进行分技。设选x, 进行分枝,把可行集分成2个子集: 24.8092]+1=5 一步称为分枝 这两个子 的提划 集的整数解必与原可行集合整数解一致。这 求解如 问题B: Max =40x+90x2 9x,+7x,≤56 7x,+20x2≤70 0≤x1≤4,x220 最优解为:x=4.0,x2=2.1,5=349。 问题B2:Max:=40x,+90x 9x+7x2≤56 7x1+20x2≤70 x≥5,x2≥0 最优解为:x=5.0,=1.57,=341.4 再定界:0≤:°≤349。 ()对问题B再进行分枝得问题B,和B,它们的最优解为
-17- 这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。 分枝定界法可用于解纯整数或混合的整数规划问题。在本世纪六十年代初由 Land Doig 和 Dakin 等人提出的。由于这方法灵活且便于用计算机求解,所以现在它已是解 整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂 选址问题、背包问题及分配问题等。 设有最大化的整数规划问题 A ,与它相应的线性规划为问题 B ,从解问题 B 开始, 若其最优解不符合 A 的整数条件,那么 B 的最优目标函数必是 A 的最优目标函数 * z 的 上界,记作 z ;而 A 的任意可行解的目标函数值将是 * z 的一个下界 z 。分枝定界法就 是将 B 的可行域分成子区域的方法。逐步减小 z 和增大 z ,最终求到 * z 。现用下例来 说明: 例 3 求解下述整数规划 1 2 Max z = 40x + 90x ⎪ ⎩ ⎪ ⎨ ⎧ ≥ + ≤ + ≤ , 0 且为整数 7 20 70 9 7 56 1 2 1 2 1 2 x x x x x x 解 (i)先不考虑整数限制,即解相应的线性规划 B ,得最优解为: 4.8092, 1.8168, 355.8779 x1 = x2 = z = 可见它不符合整数条件。这时 z 是问题 A 的最优目标函数值 * z 的上界,记作 z 。而 0, 0 x1 = x2 = 显然是问题 A 的一个整数可行解,这时 z = 0 ,是 * z 的一个下界,记作 z , 即0 356 * ≤ z ≤ 。 (ii)因为 1 2 x , x 当前均为非整数,故不满足整数要求,任选一个进行分枝。设选 1 x 进行分枝,把可行集分成 2 个子集: [4.8092] 4 x1 ≤ = , [4.8092] 1 5 x1 ≥ + = 因为 4 与 5 之间无整数,故这两个子集的整数解必与原可行集合整数解一致。这 一步称为分枝。这两个子集的规划及求解如下: 问题 B1 : 1 2 Max z = 40x + 90x ⎪ ⎩ ⎪ ⎨ ⎧ ≤ ≤ ≥ + ≤ + ≤ 0 4, 0 7 20 70 9 7 56 1 2 1 2 1 2 x x x x x x 最优解为: 4.0, 2.1, 349 x1 = x2 = z1 = 。 问题 B2 : 1 2 Max z = 40x + 90x ⎪ ⎩ ⎪ ⎨ ⎧ ≥ ≥ + ≤ + ≤ 5, 0 7 20 70 9 7 56 1 2 1 2 1 2 x x x x x x 最优解为: 5.0, 1.57, 341.4 x1 = x2 = z1 = 。 再定界:0 349 * ≤ z ≤ 。 (iii)对问题 B1 再进行分枝得问题 B11和 B12 ,它们的最优解为
B:x=4,x2=2,51=340 B2:x=143,X2=3.00,52=327.14 再定界:340≤:≤341,并将B2剪枝。 (w)对问题B,再进行分枝得问题B,和B2,它们的最优解为 B21:x1=5.44,x2=1.00,:22=308 B,无可行解。 将B,B,剪枝 于是可以断定原问题的最优解为: x1=4,x2=2,:=340 从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为: 开始,将要求解的整数规划问题称为问题A,将与它相应的线性规划问题称为问 题B ()解问题B可能得到以下情况之一: (a)B没有可行解,这时A也没有可行解,则停止 (b)B有最优解,并符合问题A的整数条件,B的最优解即为A的最优解,则 停止 (©)B有最优解,但不符合问题A的整数条件,记它的目标函数值为三。 (i)用观察法找问题A的一个整数可行解,一般可取x,=0,广=L,n,试探, 求得其目标函数值,并记作三。以:‘表示问题A的最优目标函数值:这时有 进行达代。 第一步:分枝,在B的最优解中任选一个不符合整数条件的变量x,其值为b, 以[b,]表示小于b,的最大整数。构造两个约束条件 x,≤[b,】和x,≥[b,]+1 将这两个约束条件,分别加入问题B,求两个后继规划问题B和B,。不考虑整数条件 求解这两个后 的结果 与其它问题的解的结 第二步:比较与剪枝,各分枝的最优目标函数中若有小于三者,则剪掉这枝,即 以后不再考虑了。若大于,且不符合整数条件,则重复第一步骤。一直到最后得到 2=为止。得最优整数解x,j=1,.,n。 §30-1型整数规划 0-1型整数规划是整数规划中的特殊情形,它的变量x,仅取值0或1。这时x,称 为0-1变量,或称二进制变量。x,仅取值0或1这个条件可由下述约束条件: 0≤x,≤1,整数 -18
-18- : 4, 2, 340 B11 x1 = x2 = z11 = : 1.43, x 3.00, 327.14 B12 x1 = 2 = z12 = 再定界:340 341 * ≤ z ≤ ,并将 B12 剪枝。 (iv)对问题 B2 再进行分枝得问题 B21和 B22,它们的最优解为 : 5.44, x 1.00, 308 B21 x1 = 2 = z22 = B22无可行解。 将 21 22 B ,B 剪枝。 于是可以断定原问题的最优解为: 4, 2, 340 * x1 = x2 = z = 从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为: 开始,将要求解的整数规划问题称为问题 A ,将与它相应的线性规划问题称为问 题 B 。 (i)解问题 B 可能得到以下情况之一: (a) B 没有可行解,这时 A 也没有可行解,则停止. (b) B 有最优解,并符合问题 A 的整数条件, B 的最优解即为 A 的最优解,则 停止。 (c) B 有最优解,但不符合问题 A 的整数条件,记它的目标函数值为 z 。 (ii)用观察法找问题 A 的一个整数可行解,一般可取 xj = 0, j = 1,L,n ,试探, 求得其目标函数值,并记作 z 。以 * z 表示问题 A 的最优目标函数值;这时有 z ≤ z ≤ z * 进行迭代。 第一步:分枝,在 B 的最优解中任选一个不符合整数条件的变量 j x ,其值为bj , 以[ ] bj 表示小于bj 的最大整数。构造两个约束条件 [ ] j bj x ≤ 和 xj ≥ [bj] +1 将这两个约束条件,分别加入问题 B ,求两个后继规划问题 B1 和 B2 。不考虑整数条件 求解这两个后继问题。 定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出 最优目标函数值最大者作为新的上界 z 。从已符合整数条件的各分支中,找出目标函数 值为最大者作为新的下界 z ,若无作用 z 不变。 第二步:比较与剪枝,各分枝的最优目标函数中若有小于 z 者,则剪掉这枝,即 以后不再考虑了。若大于 z ,且不符合整数条件,则重复第一步骤。一直到最后得到 z = z * 为止。得最优整数解 x j n j , 1, , * = L 。 §3 0 −1型整数规划 0 −1型整数规划是整数规划中的特殊情形,它的变量 j x 仅取值 0 或 1。这时 j x 称 为0 −1变量,或称二进制变量。 j x 仅取值 0 或 1 这个条件可由下述约束条件: 0 ≤ xj ≤ 1,整数
所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入0-1变 价绍之把有客种情况需要分别可论的线住规划问趣统一在一个问邀中时论了·我 先介绍引入0 的实际问题,再研究解法。 场所量的实际问 排斥的计划 某公司拟 在东区。由A,A,A三个点中至多选两个: 在西区。由A,A两个点中至少选一个: 在南区,由A,A,两个点中至少选一个。 如选用A点,设备投资估计为b元,每年可获利润估计为C,元,但投资总额不能 超过B元。问应选择哪几个点可使年利润为最大? 解题时先引入0-1变量x(i=12,7) 1,当4点被选中, i=1,2,.,7 10,当4,点没被选中 于是问题可列写成: Maxz=∑c,x 2bx≤B x1+x2+x3≤2 4+x≥1 x+x,21 x=0或1 3.12相互排斥的约束条件 有两个相互排斥的约束条件 5x1+4x2≤24或7x+3x2≤45。 为了统一在 个问题中,引入0 1变量y,则上述约束条件可改写为 5x1+4x2≤24+yM 7x1+3x2≤45+(1-y)M 1v=0或1 x=0或500≤x≤800 可改写为 500y≤x1≤800y y-0或1
-19- 所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入 0 −1变 量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。我们 先介绍引入0 −1变量的实际问题,再研究解法。 3.1 引入0 −1变量的实际问题 3.1.1 投资场所的选定——相互排斥的计划 例 4 某公司拟在市东、西、南三区建立门市部。拟议中有 7 个位置(点) A (i = 1,2,L,7) i 可供选择。规定 在东区。由 1 2 3 A , A , A 三个点中至多选两个; 在西区。由 4 5 A , A 两个点中至少选一个; 在南区,由 6 7 A , A 两个点中至少选一个。 如选用 Ai 点,设备投资估计为bi 元,每年可获利润估计为 i c 元,但投资总额不能 超过 B 元。问应选择哪几个点可使年利润为最大? 解题时先引入0 −1变量 x (i =1,2,L,7) i 令 ⎩ ⎨ ⎧ = 0 . 1, 当 点没被选中 当 点被选中 , , i A i A i x i = 1,2,L,7 . 于是问题可列写成: i i i z ∑c x = = 7 1 Max ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ + ≥ = + ≥ + + ≤ ∑ ≤ = 1, 0 1 1 2 6 7 4 5 1 2 3 7 1 i 或 i i i x x x x x x x x b x B 3.1.2 相互排斥的约束条件 有两个相互排斥的约束条件 5 4 24 x1 + x2 ≤ 或 7 3 45 x1 + x2 ≤ 。 为了统一在一个问题中,引入0 −1变量 y ,则上述约束条件可改写为: ⎪ ⎩ ⎪ ⎨ ⎧ = + ≤ + − + ≤ + 0 1 7 3 45 (1 ) 5 4 24 1 2 1 2 y 或 x x y M x x yM 其中 M 是充分大的数。 约束条件 0 x1 = 或 500 800 ≤ x1 ≤ 可改写为 ⎩ ⎨ ⎧ = ≤ ≤ 0 1 500 800 1 y 或 y x y
如果有m个互相排斥的约束条件: a1+.+anxn≤bi=l,2,.,m 为了保证这m个约束条件只有一个起作用,我们引入m个0-1变量y,(=1,2,m) 和一个充分大的常数M,而下面这一组m+1个约束条件 a,x,+.+ax≤b+yM1=1.2、·,7m (1) 为+.+ym=m-1 (2) 就合于上述的要求。这是因为,由于(2),m个y中只有一个能取0值,设y,=0, 代入(I),就只有1=广的约束条件起作用,而别的式子都是多余的。 313 于周定费用的问题(Fixed Cost Problem) 在线在计论 是要求使成 那时总设固定成本为常数 性规划来描述 定成本)的问题不能用般线 产某种产品,有几种不的生 方式可世洗怪,如洗定的生产 方式投资高(选购自动化程度高的设各),由于产量大,因而分配到每件产品的变动成 本就降低:反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。 所以必须全面考虑。今设有三种方式可供选择,令 x,表示采用第j种方式时的产量: c,表示采用第j种方式时每件产品的变动成本: k,表示采用第种方式时的周定成本。 为了说明成本的特点,暂不考虑其它约束条件。采用各种生产方式的总成本分别为 0, 当x,=0 j-1,2,3 在构成目标函数时,为了统一在一个问题中讨论,现引入0-1变最y,令 1,当采用第种生产方式,即x,>0时, (3) 0,当不采用第种生产方式,即x,=0时 于是目标函数 min==(kiy Cx)+(k+C)+(ky+Cx) (3)式这个规定可表为下述3个线性约束条件: y,6≤x≤y,M,j=12,3 (4) 其中是一个充分小的正常数,M是个充分大的正常数。(4)式说明,当x,>0时y, 必须为1:当x,-0时只有y,为0时才有意义,所以(4)式完全可以代替(3)式。 3,20-1型整数规划解》 过滤隐枚举法) 〔规划最 方法 值为0或1的 易想到 合,比较目标函数值 变量取值的2个组合。对于变量个数n较大(例如n>100),这几乎是不可能的。 ,只检查变量取值的组合的 水到题的 当然 样的 ·种隐枚举法 -20-
-20- 如果有 m 个互相排斥的约束条件: ai1x1 +L+ ain xn ≤ bi i =1,2,L,m 为了保证这 m 个约束条件只有一个起作用,我们引入 m 个0 −1变量 y (i 1,2, ,m) i = L 和一个充分大的常数 M ,而下面这一组m +1个约束条件 ai1x1 +L+ ain xn ≤ bi + yi M i =1,2,L,m (1) y1 +L+ ym = m −1 (2) 就合于上述的要求。这是因为,由于(2),m 个 i y 中只有一个能取 0 值,设 * = 0 i y , 代入(1),就只有 * i = i 的约束条件起作用,而别的式子都是多余的。 3.1.3 关于固定费用的问题(Fixed Cost Problem) 在讨论线性规划时,有些问题是要求使成本为最小。那时总设固定成本为常数,并 在线性规划的模型中不必明显列出。但有些固定费用(固定成本)的问题不能用一般线 性规划来描述,但可改变为混合整数规划来解决,见下例。 例 5 某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产 方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成 本就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。 所以必须全面考虑。今设有三种方式可供选择,令 j x 表示采用第 j 种方式时的产量; j c 表示采用第 j 种方式时每件产品的变动成本; j k 表示采用第 j 种方式时的固定成本。 为了说明成本的特点,暂不考虑其它约束条件。采用各种生产方式的总成本分别为 ⎪⎩ ⎪ ⎨ ⎧ = + > = 0, 0 , 0 j j j j j j x k c x x P 当 当 j = 1,2,3. 在构成目标函数时,为了统一在一个问题中讨论,现引入0 −1变量 j y ,令 ⎪⎩ ⎪ ⎨ ⎧ = = > 0 . 0 0, 1, 当不采用第 种生产方式,即 时 当采用第 种生产方式,即 时, j j x j j x j y (3) 于是目标函数 min ( ) ( ) ( ) 1 1 1 1 2 2 2 2 3 3 3 3 z = k y + c x + k y + c x + k y + c x (3)式这个规定可表为下述 3 个线性约束条件: y j ε ≤ x j ≤ y jM , j = 1,2,3 (4) 其中ε 是一个充分小的正常数,M 是个充分大的正常数。(4)式说明,当 x j > 0时 j y 必须为 1;当 x j = 0时只有 j y 为 0 时才有意义,所以(4)式完全可以代替(3)式。 3.2 0 −1型整数规划解法之一(过滤隐枚举法) 解0 −1型整数规划最容易想到的方法,和一般整数规划的情形一样,就是穷举法, 即检查变量取值为 0 或 1 的每一种组合,比较目标函数值以求得最优解,这就需要检查 变量取值的 n 2 个组合。对于变量个数 n 较大(例如 n >100 ),这几乎是不可能的。因 此常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的最优解。这样的 方法称为隐枚举法(Implicit Enumeration),分枝定界法也是一种隐枚举法。当然,对