380 likes | 534 Views
OPERATIONS RESEARCH 运筹学. —— 如何把事情做得最好. 第八章 整数规划. 本章要求 理解整数规划的含义 整数规划问题的计算机求解 掌握分枝定界法的思想和方法 掌握 0-1 变量的含义和用法 掌握指派问题的算法 整数规划的应用. 8 . 1 整数规划问题的提出. 决策问题中经常有整数要求,如人数、件数、机器台数、货物箱数 …… 如何解决?四舍五入不行,枚举法太慢。 求整数解的线性规划问题,不是用四舍五入法或去尾法对线性规划的非整数解加以处理都能解决的,而要用整数规划的方法加以解决。
E N D
OPERATIONS RESEARCH运筹学 ——如何把事情做得最好
第八章 整数规划 本章要求 • 理解整数规划的含义 • 整数规划问题的计算机求解 • 掌握分枝定界法的思想和方法 • 掌握0-1变量的含义和用法 • 掌握指派问题的算法 • 整数规划的应用
8.1 整数规划问题的提出 • 决策问题中经常有整数要求,如人数、件数、机器台数、货物箱数……如何解决?四舍五入不行,枚举法太慢。 • 求整数解的线性规划问题,不是用四舍五入法或去尾法对线性规划的非整数解加以处理都能解决的,而要用整数规划的方法加以解决。 • 在整数规划中,如果所有的变量都为非负整数,则称为纯整数规划问题;如果有一部分变量为负整数,则称之为混合整数规划问题。在整数规划中,如果变量的取值只限于0和1,这样的变量我们称之为0-1变量。在纯整数规划和混合整数规划问题中,如果所有的变量都为0-1变量,则称之为0-1规划。
问题举例 • 例1:某集装箱运输公司,箱型标准体积24m3,重量13T,现有两种货物可以装运,甲货物体积5m3、重量2T、每件利润2000元;乙货物体积4m3、重量5T、每件利润1000元,如何装运获利最多? • maxZ=2000x1+1000x2 5x1+4x2≤24 2x1+5x2≤13 x1.x2≥0且为整数 • 解此LP问题,得:X1=4.8,X2=0 • 显然不是可行解
整数规划图解法 x2 3 2 1 B A x1 1 2 3 4 5 6 7
图解法的启示 • A(4.8,0)点是LP问题的可行解,不是IP问题的可行解,B(4,1)才是IP的最优解 • 纯整数规划的可行解就是可行域中的整数点 • 非整数点不是可行解,对于求解没有意义,故切割掉可行域中的非可行解,不妨碍整数规划问题的优化 • IP问题的最优解不优于LP问题的最优解
8.2 分枝定界法 • 思路:切割可行域,去掉非整数点。一次分枝变成两个可行域,分别求最优解 • 例2. maxZ=2000x1+1000x2 5x1+4x2≤24 2x1+5x2≤13 x1.x2≥0且为整数 解:先不考虑整数要求,解相应的LP问题(松弛问题),得:x1=4.8 x2=0 Z=9600 不是可行解 Z=9600是IP问题的上界,记为:Z=9600
分枝定界法(续) • X1=4.8不符合要求,切掉4—5之间的可行域,可行域变成两块,即原有约束条件再分别附加约束条件x1≤4和x1 ≥5 • 原问题分解为两个 maxZ=2000x1+1000x2 maxZ=2000x1+1000x2 5x1+4x2≤24 5x1+4x2≤24 2x1+5x2≤13 ( IP1 ) 2x1+5x2≤13 (IP2) x1≤4 x1 ≥5 x1.x2≥0且为整数 x1.x2≥0且为整数
分枝定界法(续) • 不考虑整数要求,解相应LP问题。 解IP1得:x1=4 ,x2=1 z=9000 解IP2得:无可行解 此时可以断定IP问题的下界为9000,记为Z=9000 ٭由于目前的分枝末梢最大值是9000,故IP问题的上界便是9000。由于Z=Z,此时已得IP问题的最优解,即x1=4,x2=1,Z=9000
分枝定界法一般步骤: (1)、(A), 先解(A)的松弛问题(B) (2)、① (B)无可行解→(A)无可行解。 ② (B)最优解符合(A)要求,停。 ③(B)最优解不符合(A)要求,记目标函数值为Z1,转(3)。 (3)、确定Z*的上下界:上界Z=Z1;估整数解Z,作下界 (4)、选(B)解中最远离整数要求的分量Xj (Xj = bj )分枝,作(B)的后续问题(B1)、(B2)。 (C): (B)加约束Xj [bj ] (D):(B)加约束Xj [bj ]+1
(5)、解(B1)、(B2),修改Z*的上下界: 取B1 、B2最优目标函数值的最大值作为新的上界; 用观察法取B1 、B2中各一整数可行解,并选其中较大的目标函数值作为新的下界 (6)、比较与剪枝,直至Z=Z 剪枝条件:① (B1),(B2) 无可行解 ② (B1),(B2)对应的目标值Z’ Z ③(B1),(B2)对应的目标值Z’>Z
9X1+7X2 56 7X1+20X2 70 X1 ,X2 0 X1 ,X2为整数 例3: max Z=40X1 +90X2
4.809 1.817 X* = Z1* =355.890 Z=355.890,Z=290 (1) X1 4 (1) X1 5 问题(2) 问题(3) 解:先解(1)的松弛问题 选X1分枝
X1 =4 X2 =2.1 X1 =5 X2 =1.571 解为 解为 Z2=349.0 Z3=341.39 (2) X2 2 (2) X2 3 问题(4) 问题(5) Z=349,Z=340 选(2)继续分枝
(1) 4.809 1.817 355.890 X1 5 X14 (3) (2) 5 1.571 4 2.1 341.39 349.0 X21 X2 2 X22 X2 3 (4) (5) (6) (7) 4 2 1.428 3 5.444 1 340 327.12 无解 307.76
8.3 0—1规划问题 • 某些特殊问题,只做是非选择,故变量设置简化为0或1,1代表选择,0代表不选择。 • 例4. 600万元投资5个项目,求利润最大的方案?
求解0—1规划的隐枚举法 • 例4解: 0 当项目未被选中 1 当项目被选中 max Z=160x1+210x2+60x3+80x4+180x5 210x1+300x2+150x3+130x4+260x5 ≤600 X1+x2+x3=1 X3+x4=1 x5 ≤x1 Xj=0或1 j=1,2,…,5 增加过滤条件:160x1+210x2+60x3+80x4+180x5 ≥240 建模:设xj=
用隐枚举法解例4: (x1,x2,x3,x4,x5)
8.4 指派问题解法—匈牙利法 • 例5 甲乙丙丁四个人,A、B、C、D四项任务,不同的人做不同的工作效率不同,如何指派不同的人去做不同的工作使效率最高? 数模: minZ=ΣΣcijxij Σxij=1 i=1,…,n Σxij=1 j=1,…,n Xij=0或1
指派问题解法—匈牙利法 • 解:类似运输问题的最小元素法 • 第一步 造0——各行各列减其最小元素 4 10 7 5 -4 0 6 3 1 6 2 1 Cij= 2 7 6 3 -2 0 5 4 1 0 5 3 1 3 3 4 4 -3 0 0 1 1 0 0 1 4 6 6 3 -3 1 3 3 0 1 3 2 -1 • 第二步 圈0——寻找不同行不同列的0元素,圈之。 所在行和列其它0元素划掉 • 第三步 打——无的行打,打行上0列打 ,打列上行打,打行上0列打…
指派问题解法—匈牙利法(续) • 第四步 划线——无行、打列划线 (留行去列) • 第五步 造0——直线未覆盖的元素,减去其最小值,交叉点上加最小元素,产生新的0元素,Go to 2 0 6 2 1 -1 5 1 0 0 4 0 Cij= 0 5 3 1 -1 0 4 2 0 3 1 0 0 0 0 1 1 0 1 2 0 2 1 3 2 0 2 3 2 2 2 1 +1 • 最优解:x13=1,x21=1,x32=1,x44=1 Z=15
特殊问题的处理*: • 1、若人数与工作数不等,要求每人只完成一项工作,则用“0”来补全空位。 • 2、若一个人可以做几件事情,则可转化为相同的“几个人”来接受指派,其费用系数相同。 • 3、若可以重复工作的人不确定,可新增一个虚拟的人,其做每项工作的效率值均为最优。 • 4、若某人不能从事某项工作,则将其价值系数设为M。 • 5、若原问题求利润的最大值,则先将效率矩阵变换(即从中找出最大值,减去所有价值系数,形成新的效率矩阵),再按照匈牙利法求解。
例:从A、B、C、D、E5人中挑选4人去完成4项工作,已知每人完成各项工作的费用如下表。规定每项工作只能由其中一人单独完成,而每人最多只能承担其中一项工作,又假定A必须保证分配一项工作,D因为某种原因不能承担第4项工作,在上述条件下,如何分配工作,使完成这4项工作的费用最少?例:从A、B、C、D、E5人中挑选4人去完成4项工作,已知每人完成各项工作的费用如下表。规定每项工作只能由其中一人单独完成,而每人最多只能承担其中一项工作,又假定A必须保证分配一项工作,D因为某种原因不能承担第4项工作,在上述条件下,如何分配工作,使完成这4项工作的费用最少?
相关问题: • 非标准型的转化 (1)maxZ= ΣΣcijxij minZ’= ΣΣ(-cij)xij minZ’’= ΣΣ(M-cij)xij= ΣΣbijxij M是足够大的常数, 新问题的最优解就是原问题的最优解 (2)整数规划的计算机求解
8.5 整数规划的应用 • 投资场所的选择 • 固定成本问题 • 指派问题 • 分布系统设计 • 投资问题
一、投资场所的选择 例4、京成畜产品公司计划在市区的东、西、南、北四区建立销售门市部,拟议中有10个位置 Aj (j=1,2,3,…,10)可供选择,考虑到各地区居民的消费水平及居民居住密集度,规定: 在东区由A1, A2,A3 三个点至多选择两个; 在西区由A4, A5 两个点中至少选一个; 在南区由A6, A7 两个点中至少选一个; 在北区由A8, A9, A10三个点中至少选两个。 Aj各点的设备投资及每年可获利润由于地点不同都是不一样的,预测情况见表所示 (单位:万元)。但投资总额不能超过720万元,问应选择哪几个销售点,可使年利润为最大? 8.5 整数规划的应用
解:设:0--1变量 xi= 1 (Ai 点被选用)或 0 (Ai 点没被选用)。 这样我们可建立如下的数学模型: Max z =36x1+40x2+50x3+22x4+20x5+30x6+25x7+48x8+58x9+61x10 s.t. 100x1+120x2+150x3+80x4+70x5+90x6+80x7+140x8+160x9+180x10 ≤ 720 x1 + x2 + x3 ≤ 2 x4 + x5 ≥ 1 x6 + x7 ≥ 1 x8 + x9 + x10 ≥ 2 xj ≥ 0 且xj为0--1变量,i = 1,2,3,……,10
二、固定成本问题 例5.高压容器公司制造小、中、大三种尺寸的金属容器,所用资源为金属板、劳动力和机器设备,制造一个容器所需的各种资源的数量如表所示。不考虑固定费用,每种容器售出一只所得的利润分别为 4万元、5万元、6万元,可使用的金属板有500吨,劳动力有300人/月,机器有100台/月,此外不管每种容器制造的数量是多少,都要支付一笔固定的费用:小号是l00万元,中号为 150 万元,大号为200万元。现在要制定一个生产计划,使获得的利润为最大。
解:这是一个整数规划的问题。 设x1,x2, x3 分别为小号容器、中号容器和大号容器的生产数量。各种容器的固定费用只有在生产该种容器时才投入,为了说明固定费用的这种性质,设 yi = 1(当生产第 i种容器, 即 xi > 0 时) 或0(当不生产第 i种容器即 xi = 0 时)。 引入约束 xi ≤ M yi ,i =1,2,3,M充分大,以保证当 yi = 0 时,xi = 0 。 这样我们可建立如下的数学模型: Max z = 4x1 + 5x2 + 6x3 - 100y1 - 150y2 - 200y3 s.t. 2x1 + 4x2 + 8x3 ≤ 500 2x1 + 3x2 + 4x3 ≤ 300 x1 + 2x2 + 3x3 ≤ 100 xi ≤ M yi ,i =1,2,3,M充分大 xj ≥ 0 yj为0--1变量,i = 1,2,3
三、指派问题 有 n 项不同的任务,恰好 n 个人可分别承担这些任务,但由于每人特长不同,完成各项任务的效率等情况也不同。现假设必须指派每个人去完成一项任务,怎样把 n 项任务指派给 n 个人,使得完成 n 项任务的总的效率最高,这就是指派问题。 例6.有四个工人,要分别指派他们完成四项不同的工作,每人做各项工作所消耗的时间如下表所示,问应如何指派工作,才能使总的消耗时间为最少。
解:引入0—1变量 xij,并令 xij = 1(当指派第 i人去完成第j项工作时)或0(当不指派第 i人去完成第j项工作时).这可以表示为一个0--1整数规划问题: Min z=15x11+18x12+21x13+24x14+19x21+23x22+22x23+18x24+26x31+17x32+16x33 +19x34+19x41 +21x42+23x43+17x44 s.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 * * * 求解可用《管理运筹学》软件中整数规划方法。
四、分布系统设计 例7.某企业在 A1 地已有一个工厂,其产品的生产能力为 30 千箱,为了扩大生产,打算在 A2,A3,A4,A5地中再选择几个地方建厂。已知在 A2 , A3,A4,A5地建厂的固定成本分别为175千元、300千元、375千元、500千元,另外, A1产量及A2,A3,A4,A5建成厂的产量,那时销地的销量以及产地到销地的单位运价(每千箱运费)如下表所示。 a) 问应该在哪几个地方建厂,在满足销量的前提下,使得其总的固定成本和总的运输费用之和最小? b) 如果由于政策要求必须在A2,A3地建一个厂,应在哪几个地方建厂?
解:a) 设 xij为从Ai 运往Bj 的运输量(单位千箱),yk = 1(当Ak 被选中时)或0(当Ak 没被选中时),k =2,3,4,5.这可以表示为一个整数规划问题: Min z = 175y2+300y3+375y4+500y5+8x11+4x12+3x13+5x21+2x22+3x23+4x31+ 3x32+4x33+9x41 +7x42+5x43+10x51 +4x52+2x53 其中前4项为固定投资额,后面的项为运输费用。 s.t. x11+ x12+ x13 ≤ 30 ( A1厂的产量限制) x21+ x22+ x23 ≤ 10y2 ( A2厂的产量限制) x31+ x32+ x33 ≤ 20y3 ( A3厂的产量限制) x41+ x42+ x43 ≤ 30y4 ( A4厂的产量限制) x51+ x52+ x53 ≤ 40y5 ( A5厂的产量限制) x11+ x21+ x31+ x41 + x51 = 30 ( B1销地的限制) x12+ x22+ x32+ x42 + x52 = 20 ( B2销地的限制) x13+ x23+ x33+ x43 + x53 = 20 ( B3销地的限制) xij ≥0,i = 1,2,3,4,5; j = 1,2,3, yk 为0--1变量,k =2,3,4,5。 * * * 求解可用《管理运筹学》软件中整数规划方法。
五、投资问题 例8.某公司在今后五年内考虑给以下的项目投资。已知: 项目A:从第一年到第四年每年年初需要投资,并于次年末回收本利115%, 但要求第一年投资最低金额为4万元,第二、三、四年不限; 项目B:第三年初需要投资,到第五年末能回收本利128%,但规定最低投资金额为3万元,最高金额为5万元; 项目 C:第二年初需要投资,到第五年末能回收本利140%,但规定其投资额或为2万元或为4万元或为6万元或为8万元。 项目 D:五年内每年初可购买公债,于当年末归还,并加利息6%,此项投资金额不限。 该部门现有资金10万元,问它应如何确定给这些项目的每年投资额, 使到第五年末拥有的资金本利总额为最大?
解:1) 设xiA、xiB、xiC、xiD ( i =1,2,3,4,5)分别表示第 i 年年初给项目A,B,C,D的投资额; 设yiA, yiB,是0—1变量,并规定取 1 时分别表示第 i 年给A、B投资, 否则取 0( i = 1, 2, 3, 4, 5)。 设yiC 是非负整数变量,并规定:第2年投资C项目8万元时,取值为4; 第 2年投资C项目6万元时,取值3;第2年投资C项目4万元时,取值2; 第2年投资C项目2万元时,取值1;第2年不投资C项目时,取值0; 这样我们建立如下的决策变量: 第1年 第2年 第3年 第4年 第5年 A x1A x2A x3Ax4A Bx3B Cx2C=20000y2C D x1D x2D x3Dx4Dx5D
2)约束条件: 第一年:年初有100000元,D项目在年末可收回投资,故第一年年初应把全部资金投出去,于是 x1A+ x1D = 100000; 第二年:A的投资第二年末才可收回,故第二年年初的资金为1.06x1D,于是x2A+x2C+x2D = 1.06x1D; 第三年:年初的资金为 1.15x1A+1.06x2D,于是 x3A+x3B+x3D = 1.15x1A+ 1.06x2D; 第四年:年初的资金为 1.15x2A+1.06x3D,于是 x4A + x4D = 1.15x2A+ 1.06x3D; 第五年:年初的资金为 1.15x3A+1.06x4D,于是 x5D = 1.15x3A+ 1.06x4D。 关于项目A的投资额规定: x1A ≥ 40000y1A,x1A ≤ 200000y1A,200000是足够大的数;保证当y1A = 0时, x1A = 0 ;当y1A = 1时,x1A ≥ 40000 。 关于项目B的投资额规定: x3B ≥ 30000y3B,x3B ≤ 50000y3B; 保证当y3B = 0时, x3B = 0 ;当y3B = 1时,50000 ≥x3B ≥ 30000 。 关于项目C的投资额规定: x2C = 20000y2C,y2C = 0,1,2,3,4。
3)目标函数及模型: Max z = 1.15x4A+ 1.40x2C+ 1.28x3B + 1.06x5D s.t. x1A+ x1D = 100000; x2A+x2C+x2D = 1.06x1D; x3A+x3B+x3D = 1.15x1A+ 1.06x2D; x4A+x4D = 1.15x2A+ 1.06x3D; x5D = 1.15x3A+ 1.06x4D; x1A ≥ 40000y1A, x1A ≤ 200000y1A, x3B ≥ 30000y3B, x3B ≤ 50000y3B; x2C = 20000y2C, yiA, yiB = 0 或 1,i = 1,2,3,4,5 y2C = 0,1,2,3,4 xiA,xiB,xiC,xiD ≥ 0 ( i = 1、2、3、4、5)