当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《数学建模》课程教学资源(教材讲义)第二章 整数规划

资源类别:文库,文档格式:DOC,文档页数:9,文件大小:461KB,团购合买
规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中, 变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适 用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。
点击下载完整版文档(DOC)

第二章整数规划 概论 1.1定义 规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中 变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适 用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划, 2整数规划的分类 如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类: 1°变量全限制为整数时,称纯(完全)整数规划。 2°变量部分限制为整数的,称混合整数规戋 3变量只能取0或1时,称之为0-1整数规划。 整数规划特点 (ⅱ)原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。 ②整数规划无可行解 例1原线性规划为 mn ==x,+ x2 st2x1+4x2=5,x≥0,x2≥0 其最优实数解为:x,=0,x24mnz=。 ③有可行解(当然就存在最优解),但最优解值一定不会优于原线性规划的最优值 例2原线性规划为 x1+x2 st2x1+4x2=6,x1≥0,x2≥0 其最优实数解为:x1=0,x2-2 若限制整数得:x1=1,x2=1,mz=2。 (ⅱi)整数规划最优解不能按照实数最优解简单取整而获得 1.3求解方法分类 (i)分枝定界法一可求纯或混合整数线性规划 (ⅱi)割平面法一可求纯或混合整数线性规划。 (ⅲi)隐枚举法一求解“0-1”整数规划: ①过滤隐枚举法 ②分枝隐枚举法 (ⅳ)匈牙利法一解决指派问题(“0-1”规划特殊情形)。 ⅴ)蒙特卡洛法一求解各种类型规划 下面将简要介绍常用的几种求解整数规划的方法 §2分枝定界法 对有约束条件的最优化问题(其可行解为有限数)的可行解空间恰当地进行系统搜 索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子集, 称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定

-11- 第二章 整数规划 §1 概论 1.1 定义 规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中, 变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适 用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。 1.2 整数规划的分类 如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类: 1 o 变量全限制为整数时,称纯(完全)整数规划。 2 o 变量部分限制为整数的,称混合整数规划。 3 o 变量只能取 0 或 1 时,称之为 0-1 整数规划。 整数规划特点 (i) 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。 ②整数规划无可行解。 例 1 原线性规划为 min 1 2 z = x + x s.t. 2x1 + 4x2 = 5, x1  0, x2  0 其最优实数解为: 4 5 ,min 4 5 0, x1 = x2 = z = 。 ③有可行解(当然就存在最优解),但最优解值一定不会优于原线性规划的最优值。 例 2 原线性规划为 min 1 2 z = x + x s.t. 2x1 + 4x2 = 6, x1  0, x2  0 其最优实数解为: 2 3 ,min 2 3 0, x1 = x2 = z = 。 若限制整数得: x1 =1, x2 =1,min z = 2。 (ii) 整数规划最优解不能按照实数最优解简单取整而获得。 1.3 求解方法分类: (i)分枝定界法—可求纯或混合整数线性规划。 (ii)割平面法—可求纯或混合整数线性规划。 (iii)隐枚举法—求解“0-1”整数规划: ①过滤隐枚举法; ②分枝隐枚举法。 (iv)匈牙利法—解决指派问题(“0-1”规划特殊情形)。 (v)蒙特卡洛法—求解各种类型规划。 下面将简要介绍常用的几种求解整数规划的方法。 §2 分枝定界法 对有约束条件的最优化问题(其可行解为有限数)的可行解空间恰当地进行系统搜 索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子集, 称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定

界。在每次分枝后,凡是界限不优于已知可行解集目标值的那些子集不再进一步分枝 这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。 分枝定界法可用于解纯整数或混合的整数规划问题。在二十世纪六十年代初由 Land doig和 Dakin等人提出。由于这方法灵活且便于用计算机求解,所以现在它已是 解整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工 厂选址问题、背包问题及分配问题等 设有最大化的整数规划问题A,与它相应的线性规划为问题B,从解问题B开始, 若其最优解不符合A的整数条件,那么B的最优目标函数必是A的最优目标函数z的 上界,记作;而A的任意可行解的目标函数值将是z的一个下界。分枝定界法就 是将B的可行域分成子区域再求其最大值的方法。逐步减小E和增大z,最终求到z。 现用下例来说明 例3求解下述整数规划 Max=40x1+90x2 9x1+7x2≤56 st.{7x1+20x2≥70 x1,x2≥0且为整数 解(i)先不考虑整数限制,即解相应的线性规划B,得最优解为 x=48092,x2=1.8168,2=358779 可见它不符合整数条件。这时z是问题A的最优目标函数值z的上界,记作三。而 x1=0,x2=0显然是问题A的一个整数可行解,这时z=0,是z的一个下界记作三, 即0≤x≤356。 近(i1)因为x,x2当前均为非整数,故不满足整数要求,任选一个进行分枝。设选x 分枝,把可行集分成2个子集 x≤[48092]=4,x1≥[48092]+1=5 因为4与5之间无整数,故这两个子集内的整数解必与原可行集合整数解一致 这一步称为分枝。这两个子集的规划及求解如下: 问题B1:Max=40x+90x2 9x1+7x2 x 0≤x1≤4,x2≥0 最优解为:x1=4.0.,x2=21,=1=349 问题B2:Max=40x1+90x2 +7x2 st{7x+20x2≥70 5,x,≥0 最优解为:x1=5.0,x2=1.57,1=3414 再定界:0≤z≤349

-12- 界。在每次分枝后,凡是界限不优于已知可行解集目标值的那些子集不再进一步分枝, 这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。 分枝定界法可用于解纯整数或混合的整数规划问题。在二十世纪六十年代初由 Land Doig 和 Dakin 等人提出。由于这方法灵活且便于用计算机求解,所以现在它已是 解整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工 厂选址问题、背包问题及分配问题等。 设有最大化的整数规划问题 A ,与它相应的线性规划为问题 B ,从解问题 B 开始, 若其最优解不符合 A 的整数条件,那么 B 的最优目标函数必是 A 的最优目标函数 * z 的 上界,记作 z ;而 A 的任意可行解的目标函数值将是 * z 的一个下界 z 。分枝定界法就 是将 B 的可行域分成子区域再求其最大值的方法。逐步减小 z 和增大 z ,最终求到 * z 。 现用下例来说明: 例 3 求解下述整数规划 Max 40 1 90 2 z = x + x s.t.       +  +  , 0 且为整数 7 20 70 9 7 56 1 2 1 2 1 2 x x x x x x 解 (i)先不考虑整数限制,即解相应的线性规划 B ,得最优解为: x1 = 4.8092, x2 =1.8168,z = 355.8779 可见它不符合整数条件。这时 z 是问题 A 的最优目标函数值 * z 的上界,记作 z 。而 x1 = 0, x2 = 0 显然是问题 A 的一个整数可行解,这时 z = 0 ,是 * z 的一个下界,记作 z , 即 0 356 *  z  。 (ii)因为 1 2 x , x 当前均为非整数,故不满足整数要求,任选一个进行分枝。设选 1 x 进行分枝,把可行集分成 2 个子集: x1  [4.8092] = 4, x1 [4.8092]+1= 5 因为 4 与 5 之间无整数,故这两个子集内的整数解必与原可行集合整数解一致。 这一步称为分枝。这两个子集的规划及求解如下: 问题 B1: Max 40 1 90 2 z = x + x s.t.         +  +  0 4, 0 7 20 70 9 7 56 1 2 1 2 1 2 x x x x x x 最优解为: x1 = 4.0, x2 = 2.1,z1 = 349。 问题 B2 : Max 40 1 90 2 z = x + x s.t.        +  +  5, 0 7 20 70 9 7 56 1 2 1 2 1 2 x x x x x x 最优解为: x1 = 5.0, x2 =1.57,z1 = 341.4。 再定界: 0 349 *  z 

(i)对问题B1再进行分枝得问题B1和B12,它们的最优解为 B1:x1=4,x2=2,-1=340 B2:x1=1.43,x2=3.00,-12=32714 再定界:340≤z≤341,并将B2剪枝 (iv)对问题B2再进行分枝得问题B21和B2,它们的最优解为 B21:x1=544,x2=1.00,=2=308 B2无可行解。 将B21B2剪枝 于是可以断定原问题的最优解为: x1=4,x2=2,xz=340 从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为 开始,将要求解的整数规划问题称为问题A,将与它相应的线性规划问题称为问 题B。 (i)解问题B可能得到以下情况之一: (a)B没有可行解,这时A也没有可行解,则停止 (b)B有最优解,并符合问题A的整数条件,B的最优解即为A的最优解,则 停止 (c)B有最优解,但不符合问题A的整数条件,记它的目标函数值为三。 (i)用观察法找问题A的一个整数可行解,一般可取x,=0,j=1,…,n,试探, 求得其目标函数值,并记作z。以z表示问题A的最优目标函数值;这时有 三≤z≤2 进行迭代 第一步:分枝,在B的最优解中任选一个不符合整数条件的变量x,其值为b 以[b表示小于b的最大整数。构造两个约束条件 ≤[b,]和x≥[b]+ 将这两个约束条件,分别加入问题B,求两个后继规划问题B1和B2。不考虑整数条件 求解这两个后继问题。 定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出 最优目标函数值最大者作为新的上界2。从已符合整数条件的各分支中,找出目标函数 值为最大者作为新的下界z,若无作用=0。 第二步:比较与剪枝,各分枝的最优目标函数中若有小于三者,则剪掉这枝,即 以后不再考虑了。若大于z,且不符合整数条件,则重复第一步骤。一直到最后得到 z=三为止。得最优整数解x/,j=l…,n §30-1型整数规划 0-1型整数规划是整数规划中的特殊情形,它的变量x仅取值0或1。这时x称 为0-1变量,或称二进制变量。x仅取值0或1这个条件可由下述约束条件:

-13- (iii)对问题 B1 再进行分枝得问题 B11 和 B12 ,它们的最优解为 B11 : x1 = 4, x2 = 2,z11 = 340 B12 : x1 =1.43,x2 = 3.00,z12 = 327.14 再定界: 340 341 *  z  ,并将 B12 剪枝。 (iv)对问题 B2 再进行分枝得问题 B21 和 B22 ,它们的最优解为 B21 : x1 = 5.44,x2 =1.00,z22 = 308 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,  ,n ,试探, 求得其目标函数值,并记作 z 。以 * z 表示问题 A 的最优目标函数值;这时有 z  z  z * 进行迭代。 第一步:分枝,在 B 的最优解中任选一个不符合整数条件的变量 j x ,其值为 j b , 以 [ ] bj 表示小于 j b 的最大整数。构造两个约束条件 [ ] j bj x  和 xj  [bj ] +1 将这两个约束条件,分别加入问题 B ,求两个后继规划问题 B1 和 B2 。不考虑整数条件 求解这两个后继问题。 定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出 最优目标函数值最大者作为新的上界 z 。从已符合整数条件的各分支中,找出目标函数 值为最大者作为新的下界 z ,若无作用 z = 0 。 第二步:比较与剪枝,各分枝的最优目标函数中若有小于 z 者,则剪掉这枝,即 以后不再考虑了。若大于 z ,且不符合整数条件,则重复第一步骤。一直到最后得到 z = z * 为止。得最优整数解 x j , j 1, ,n * =  。 §3 0−1 型整数规划 0−1 型整数规划是整数规划中的特殊情形,它的变量 j x 仅取值 0 或 1。这时 j x 称 为 0−1 变量,或称二进制变量。 j x 仅取值 0 或 1 这个条件可由下述约束条件:

0≤x.≤1,整数 所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入0-1变 量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。我们 先介绍引入0-1变量的实际问题,再研究解法。 3.1引入0-1变量的实际问题 3.1.1投资场所的选定一一相互排斥的计划 例4某公司拟在市东、西、南三区建立门市部。拟议中有7个位置(点) A(i=1,2,…,7)可供选择。规定 在东区:由A1,A2,43三个点中至多选两个; 在西区:由A4,A3两个点中至少选一个 在南区:由A,A两个点中至少选一个 如选用A点,设备投资估计为b元,每年可获利润估计为c元,但投资总额不能 超过B元。问应选择哪几个点可使年利润为最大? 解题时先引入0-1变量x,(i=1,2…7) 令 1,当4点被选中 i=1,2,…,7 0,当4点没被选中 于是问题可列写成: Max- bx≤B st}x+x2+x3≤2 X5 x6+x7≥1,x1=0或1 3.1.2相互排斥的约束条件 ①有两个相互排斥的约束条件 5x1+4x2≤24或7x1+3x2≤45。 为了统一在一个问题中,引入0-1变量y,则上述约束条件可改写为 5x1+4x2≤24+yM 7x1+3x2≤45+(1-y)M 其中M是充分大的数 ②约束条件 可改写为x=0或500≤x1≤800

-14- 0  xj  1 ,整数 所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入 0−1 变 量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。我们 先介绍引入 0−1 变量的实际问题,再研究解法。 3.1 引入 0−1 变量的实际问题 3.1.1 投资场所的选定——相互排斥的计划 例 4 某公司拟在市东、西、南三区建立门市部。拟议中有 7 个位置(点) A (i =1,2,  ,7) i 可供选择。规定 在东区:由 1 2 3 A , A , A 三个点中至多选两个; 在西区:由 4 5 A , A 两个点中至少选一个; 在南区:由 6 7 A , A 两个点中至少选一个。 如选用 Ai 点,设备投资估计为 i b 元,每年可获利润估计为 i c 元,但投资总额不能 超过 B 元。问应选择哪几个点可使年利润为最大? 解题时先引入 0−1 变量 x (i =1,2,  ,7) i 令    = 0 . 1, 当 点没被选中 当 点被选中 , , i A i A i x i = 1,2,  ,7 . 于是问题可列写成: i i i z c x = = 7 1 Max s.t.          +  = +  + +    = 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 相互排斥的约束条件 ① 有两个相互排斥的约束条件 5x1 + 4x2  24 或 7x1 +3x2  45。 为了统一在一个问题中,引入 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 是充分大的数。 ② 约束条件 x1 = 0 或 500  x1  800 可改写为

500y≤x1≤800y 0或l ③如果有m个互相排斥的约束条件 a1x1+…+anxn≤bi=1,2,…,m 为了保证这m个约束条件只有一个起作用,我们引入m个0-1变量y(=12,…,m) 和一个充分大的常数M,而下面这一组m+1个约束条件 a1x1+…+anxn≤b+yMi=12…m (1) (2) 就合于上述的要求。这是因为,由于(2),m个y中只有一个能取0值,设y,=0 代入(1),就只有i=的约束条件起作用,而别的式子都是多余的 1.3关于固定费用的问题( Fixed cost problem) 在讨论线性规划时,有些问题是要求使成本为最小。那时总设固定成本为常数,并 在线性规划的模型中不必明显列出。但有些固定费用(固定成本)的问题不能用一般线 性规划来描述,但可改变为混合整数规划来解决,见下例 例5某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产 方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成 本就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加 所以必须全面考虑。今设有三种方式可供选择,令 x,表示采用第j种方式时的产量 c,表示采用第j种方式时每件产品的变动成本; k,表示采用第j种方式时的固定成本。 为了说明成本的特点,暂不考虑其它约束条件。采用各种生产方式的总成本分别为 ∫k+Cx,当xy>0 P j=1,2,3 当x:=0 在构成目标函数时,为了统一在一个问题中讨论,现引入0-1变量y,令 当采用第种生产方式,即x;>0时, (3) 当不采用第种生产方式,即x;=0时 于是目标函数 mnz=(k1y+c1x1)+(k2y2+c2x2)+(k3y3+c3x3) (3)式这个规定可表为下述3个线性约束条件 x,≤y,M,j=1,2 其中M是个充分大的常数。(4)式说明,当x>0时y必须为1:当x=0时只有y 为0时才有意义,所以(4)式完全可以代替(3)式。 3.20-1型整数规划解法之一(过滤隐枚举法) 解0-1型整数规划最容易想到的方法,和一般整数规划的情形一样,就是穷举法, 即检査变量取值为0或1的每一种组合,比较目标函数值以求得最优解,这就需要检查 变量取值的2″个组合。对于变量个数n较大(例如n>10),这几乎是不可能的。因此

-15-    =   0 1 500 1 800 y 或 y x y ③ 如果有 m 个互相排斥的约束条件: ai1 x1 ++ ainxn  bi i =1,2,  ,m 为了保证这 m 个约束条件只有一个起作用,我们引入 m 个 0−1 变量 y (i 1,2, ,m) i =  和一个充分大的常数 M ,而下面这一组 m+1 个约束条件 ai1 x1 ++ ainxn  bi + yiM i =1,2,  ,m (1) y1 ++ 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 i i i j i 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 个线性约束条件: 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 10 ),这几乎是不可能的。因此

常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的最优解。这样的方 法称为隐枚举法( Implicit- numeration),分枝定界法也是一种隐枚举法。当然,对有 些问题隐枚举法并不适用,所以有时穷举法还是必要的 下面举例说明一种解0-1型整数规划的隐枚举法。 例6Max2=3x1-2x2+5x3 x+2x2-x3≤2 x1+4x2+x3 <4 x2+x3≤6 x,x2,x3=0或 求解思路及改进措施: (i)先试探性求一个可行解,易看出(x1,x2,x3)=(1,0)满足约束条件,故为 个可行解,且相应的目标函数值为z=3 (ⅱi)因为是求极大值问题,故求最优解时,凡是目标值z<3的解不必检验是否 满足约束条件即可删除,因它肯定不是最优解,于是应增加一个约束条件(目标值下界) 3x1-2x2+53≥3,称该条件为过滤条件( Filtering Contraint)。从而原问题等价于 Ma 3x1-2x2+5x3≥3 x1+2x2-x3≤2 (b) x1+4x+x3≤4 (d) 4x2+x2≤6 x3=0或1 (f) 若用全部枚举法,3个变量共有8种可能的组合,我们将这8种组合依次检验它 是否满足条件(a)-(e),对某个组合,若它不满足(a),即不满足过滤条件,则b)-(e)即 可行性条件不必再检验:若它满足(a)(e)且相应的目标值严格大于3,则进行(i) (ⅲi)改进过滤条件 )由于对每个组合首先计算目标值以验证过滤条件,故应优先计算目标值二大 组合,这样可提前抬高过滤门槛,以减少计算量 按上述思路与方法,例6的求解过程可由下表来表示 x,x2x)目标值约束条件 过滤条件 (0,0,0) 0 (1,0.0) √√√√√3x, (010) (0,0,1) √√√ 小3x1-2x2+5325

-16- 常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的最优解。这样的方 法称为隐枚举法(Implicit Enumeration),分枝定界法也是一种隐枚举法。当然,对有 些问题隐枚举法并不适用,所以有时穷举法还是必要的。 下面举例说明一种解 0−1 型整数规划的隐枚举法。 例 6 Max 3 1 2 2 5 3 z = x − x + x s.t.          = +  +  + +  + −  , , 0 1 4 6 3 4 4 2 2 1 2 3 2 3 1 2 1 2 3 1 2 3 x x x 或 x x x x x x x x x x 求解思路及改进措施: (i) 先试探性求一个可行解,易看出 ( , , ) (1,0,0) x1 x2 x3 = 满足约束条件,故为一 个可行解,且相应的目标函数值为 z = 3。 (ii) 因为是求极大值问题,故求最优解时,凡是目标值 z  3 的解不必检验是否 满足约束条件即可删除,因它肯定不是最优解,于是应增加一个约束条件(目标值下界): 3x1 − 2x2 + 53  3 ,称该条件为过滤条件(Filtering Contraint)。从而原问题等价于: Max 3 1 2 2 5 3 z = x − x + x s.t.            = +  +  + +  + −  − +  , , 0 1 4 6 3 4 4 2 2 3 2 5 3 1 2 3 2 3 1 2 1 2 3 1 2 3 1 2 3 x x x 或 x x x x x x x x x x x x x ( ) ( ) ( ) ( ) ( ) ( ) f e d c b a 若用全部枚举法,3 个变量共有 8 种可能的组合,我们将这 8 种组合依次检验它 是否满足条件(a)—(e),对某个组合,若它不满足(a),即不满足过滤条件,则(b)—(e)即 可行性条件不必再检验;若它满足(a)—(e)且相应的目标值严格大于 3,则进行(iii)。 (iii) 改进过滤条件。 (iv)由于对每个组合首先计算目标值以验证过滤条件,故应优先计算目标值 z 大 的组合,这样可提前抬高过滤门槛,以减少计算量。 按上述思路与方法,例 6 的求解过程可由下表来表示: ( , ) 1 2 3 x ,x x 目标值 约束条件 过滤条件 a b c d e (0,0,0) 0  (1,0,0) 3 √ √ √ √ √ 3x1 − 2x2 + 53  3 (0,1,0) -2  (0,0,1) 5 √ √ √ √ √ 3x1 − 2x2 + 53  5

(1,01) √、、、√3x-2x2+53≥8 (1,1,1) 6 从而得最优解(x1,x2,x3)=(10,1),最优值z=8 §4蒙特卡洛法(随机取样法) 前面介绍的常用的整数规划求解方法,主要是针对线性整数规划而言,而对于非线 性整数规划目前尚未有一种成熟而有效的求解方法,因为非线性规划本身的通用有效解 法尚未找到,更何况是非线性整数规划。 然而,尽管整数规划由于限制变量为整数而增加了难度:然而又由于整数解是有限 个,于是为枚举法提供了方便。当然,当自变量维数很大和取值范围很宽情况下,企图 用显枚举法(即穷举法)计算出最优值是不现实的,但是应用概率理论可以证明,在 定的计算量的情况下,完全可以得出一个满意解。 例7已知非线性整数规划为 Max ==x1+x2+3x3+44+2x5 x2 0≤x1≤99(i=1,…,5) x1+x2+x3+x4+x5≤400 t.{x1+2x2+2x3+x4+6x5≤800 2x1+x2+6x3≤200 x3+x4+5x5≤200 对该题,目前尚无有效方法求出准确解。如果用显枚举法试探,共需计算 (100)5=100个点,其计算量非常之大。然而应用蒙特卡洛去随机计算10°个点,便可 找到满意解,那么这种方法的可信度究竟怎样呢? 下面就分析随机取样采集10°个点计算时,应用概率理论来估计一下可信度。 不失一般性,假定一个整数规划的最优点不是孤立的奇点。 假设目标函数落在高值区的概率分别为001,00000,则当计算10°个点后,有 任一个点能落在高值区的概率分别为 1-099000999100多位), 1-0.9999900999954602 解(i)首先编写M文件 mente. m定义目标函数f和约束向量函数g,程序如下 function [f, g]=mengte(x) f=x(1)2+x(2)2+3*x(3)^2+4*x(4)2+2*x(5)-8*x(1)-2*x(2)-3*x(3) x(4)-2*x(5) g(2)=x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800; (3)=2*x(1)+x(2)+6*x(3)-200; (4)=x(3)+x(4)+5*x(5)-200

-17- (1,1,0) 1  (1,0,1) 8 √ √ √ √ √ 3x1 − 2x2 + 53  8 (1,1,1) 6  (0,1,1) 3  从而得最优解 ( , , ) (1,0,1) * 3 * 2 * x1 x x = ,最优值 8 * z = 。 §4 蒙特卡洛法(随机取样法) 前面介绍的常用的整数规划求解方法,主要是针对线性整数规划而言,而对于非线 性整数规划目前尚未有一种成熟而有效的求解方法,因为非线性规划本身的通用有效解 法尚未找到,更何况是非线性整数规划。 然而,尽管整数规划由于限制变量为整数而增加了难度;然而又由于整数解是有限 个,于是为枚举法提供了方便。当然,当自变量维数很大和取值范围很宽情况下,企图 用显枚举法(即穷举法)计算出最优值是不现实的,但是应用概率理论可以证明,在一 定的计算量的情况下,完全可以得出一个满意解。 例 7 已知非线性整数规划为: 1 2 3 4 5 2 5 2 4 2 3 2 2 2 1 8 2 3 2 Max 3 4 2 x x x x x z x x x x x − − − − − = + + + + s.t.          + +  + +  + + + +  + + + +    = 5 200 2 6 200 2 2 6 800 400 0 99 ( 1, ,5) 3 4 5 1 2 3 1 2 3 4 5 1 2 3 4 5 x x x x x x x x x x x x x x x x x i i  对该题,目前尚无有效方法求出准确解。如果用显枚举法试探,共需计算 5 10 (100) = 10 个点,其计算量非常之大。然而应用蒙特卡洛去随机计算 6 10 个点,便可 找到满意解,那么这种方法的可信度究竟怎样呢? 下面就分析随机取样采集 6 10 个点计算时,应用概率理论来估计一下可信度。 不失一般性,假定一个整数规划的最优点不是孤立的奇点。 假设目标函数落在高值区的概率分别为 0.01,0.00001,则当计算 6 10 个点后,有 任一个点能落在高值区的概率分别为 1− 0.991000000  0.9999(100多位), 1 0.99999 0.999954602 1000000 −  。 解 (i)首先编写 M 文件 mente.m 定义目标函数 f 和约束向量函数 g,程序如下: function [f,g]=mengte(x); f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)... -x(4)-2*x(5); g(1)=sum(x)-400; g(2)=x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800; g(3)=2*x(1)+x(2)+6*x(3)-200; g(4)=x(3)+x(4)+5*x(5)-200;

(ii)编写如下程序求问题的解 rand( state, sum (clock)) p0=0 tic fori=1:105 x=99*rand(5,1) x1=floor(x): x2=ceil(x) If, g]=mengte(x1) if sum(g<=0)==4 if pO<=f x0=Xl: pO=f If, g]=mengte(x2) if sum(g<=0)==4 X0=x2: pO=f §5整数规划的计算机解法 整数规划问题的求解可以使用 Lingo等专用软件。对于一般的整数规划规划问题, 无法直接利用 Matlab的函数,必须利用 Matlab编程实现分枝定界解法和割平面解法 但对于指派问题等特殊的0-1整数规划问题或约束矩阵A是幺模矩阵时,有时可以直 接利用 Matlab的函数 linprog。 例8求解下列指派问题,已知指派矩阵为 2103 6 8744 275 23 解:编写 Matlab程序如下: =[382103;87297;64275 84235;9106910] c=c(:); a= zeros(10,25); a(i,(i-1)*5+1:5*i)=1; b=ones(10,1)

-18- (ii)编写如下程序求问题的解: rand('state',sum(clock)); p0=0; tic for i=1:10^5 x=99*rand(5,1); x1=floor(x);x2=ceil(x); [f,g]=mengte(x1); if sum(g<=0)==4 if p0<=f x0=x1;p0=f; end end [f,g]=mengte(x2); if sum(g<=0)==4 if p0<=f x0=x2;p0=f; end end end x0,p0 toc §5 整数规划的计算机解法 整数规划问题的求解可以使用 Lingo 等专用软件。对于一般的整数规划规划问题, 无法直接利用 Matlab 的函数,必须利用 Matlab 编程实现分枝定界解法和割平面解法。 但对于指派问题等特殊的 0−1 整数规划问题或约束矩阵 A 是幺模矩阵时,有时可以直 接利用 Matlab 的函数 linprog。 例 8 求解下列指派问题,已知指派矩阵为                 9 10 6 9 10 8 4 2 3 5 6 4 2 7 5 8 7 2 9 7 3 8 2 10 3 解:编写 Matlab 程序如下: c=[3 8 2 10 3;8 7 2 9 7;6 4 2 7 5 8 4 2 3 5;9 10 6 9 10]; c=c(:); a=zeros(10,25); for i=1:5 a(i,(i-1)*5+1:5*i)=1; a(5+i,i:5:25)=1; end b=ones(10,1);

x, y]=linprog(c,[],[],a,b, zeros(25, 1), ones(25, 1) 求得最优指派方案为x15=x23=x32=x4=x51=1,最优值为21 习题二 1.用分枝定界法解: Max ==x,+x2 951 x1+;,x2 t +x2 x1,x2≥0,x1,x2整数 2.试将下述非线性的0-1规划问题转换成线性的0-1规划问题 max ==x,+xx2-x3 2x,+3 ≤3 x,=0或1,(j=123) 3.某钻井队要从以下10个可供选择的井位中确定5个钻井探油,使总的钻探费 用为最小。若10个井位的代号为S,S2…,S10,相应的钻探费用为c1,C2…C1o,并且 井位选择上要满足下列限制条件: (1)或选择S1和S7,或选择钻探s; (2)选择了S3或S4就不能选S3,或反过来也一样 (3)在Ss3S6,S7,S8中最多只能选两个;试建立这个问题的整数规划模型

-19- [x,y]=linprog(c,[],[],a,b,zeros(25,1),ones(25,1)) 求得最优指派方案为 x15 = x23 = x32 = x44 = x51 = 1 ,最优值为 21。 习 题 二 1. 用分枝定界法解: Max 1 2 z = x + x s.t.           − +  +  1 2 1 2整数 1 2 1 2 , 0, , 3 1 2 14 51 14 9 x x x x x x x x 2. 试将下述非线性的 0 −1 规划问题转换成线性的 0 −1 规划问题 max 1 1 2 3 z = x + x x − x s.t.    = = − + +  0 1 ( 1,2,3) 2 1 3 2 3 3 x j x x x j 或 , 3. 某钻井队要从以下 10 个可供选择的井位中确定 5 个钻井探油,使总的钻探费 用为最小。若 10 个井位的代号为 1 2 10 s ,s ,  ,s ,相应的钻探费用为 1 2 10 c , c ,  , c ,并且 井位选择上要满足下列限制条件: (1) 或选择 1 s 和 7 s ,或选择钻探 9 s ; (2) 选择了 3 s 或 4 s 就不能选 5 s ,或反过来也一样; (3) 在 5 6 7 8 s ,s ,s ,s 中最多只能选两个;试建立这个问题的整数规划模型

点击下载完整版文档(DOC)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
已到末页,全文结束
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有