360 likes | 674 Views
第三章 整数线性规划问题及其解法. 在上一章讨论的 LP 问题中 , 对决策变量只限于不能取负值的连续型数值 , 即可以是正分数或正小数。然而在许多经济管理的实际问题中,决策变量只有非负整数才有实际意义。对求整数最优解的问题,称为整数规划 (Integer Programming)( 简记为 IP) 。又称约束条件和函数均为线性的 IP 为整数线性规划 (Integer Linear Programming)( 简记为 ILP) 。. 根据变量取整数的情况 , 将整数规划分为 : ( 1 )纯整数规划,所有变量都取整数 .
E N D
第三章 整数线性规划问题及其解法 在上一章讨论的LP问题中,对决策变量只限于不能取负值的连续型数值,即可以是正分数或正小数。然而在许多经济管理的实际问题中,决策变量只有非负整数才有实际意义。对求整数最优解的问题,称为整数规划(Integer Programming)(简记为IP)。又称约束条件和函数均为线性的IP为整数线性规划(Integer Linear Programming)(简记为ILP)。 根据变量取整数的情况,将整数规划分为: (1)纯整数规划,所有变量都取整数. (2)混合整数规划,一部分变量取整数,一部分变量取实数 (3)0-1整数规划 ,所有变量均取0或1 求解整数规划常用的算法有分枝定界法、割平面法,求解0-1的还有隐枚举法、匈牙利法。
§3.1 整数线性规划模型的建立 例题1 P72 某单位有5个拟选择的投资项目,其所需投资额与期望收益如下表。由于各项目之间有一定联系,A、C、E之间必须选择一项且仅需选择一项;B和D之间需选择也仅需选择一项;又由于C和D两项目密切相关,C的实施必须以D的实施为前提条件,该单位共筹集资金15万元,问应该选择哪些项目投资,使期望收益最大?
解:决策变量:设 目标函数:期望收益最大 约束条件:投资额限制条件 6x1+4x2+2x3+4x4+5x515 项目A、C、E之间必须且只需选择一项:x1+x3+x5=1 项目B、D之间必须且只需选择一项:x2+x4=1 项目C的实施要以项目D的实施为前提条件: x3 x4 归纳起来,其数学模型为:
例题2某服务部门各时段(每小时为一时段)需要的服务员人数如下表,按规定,服务员连续工作8小时(即四个时段)为一班,现要求安排服务员的工作时间,使服务部门服务员总数最小。例题2某服务部门各时段(每小时为一时段)需要的服务员人数如下表,按规定,服务员连续工作8小时(即四个时段)为一班,现要求安排服务员的工作时间,使服务部门服务员总数最小。 解:设在第j时段开始时上班的服务员人数为xj,由于第j时段开始时上班的服务员将在第(j+3)时段结束时下班,故决策变量只需考虑x1,x2,x3,x4,x5,此问题的数学模型为:
例题3(固定费用问题)有三种资源被用于生产三种产品,资源量、产品单件可变费用售价、资源单件耗量及组成三种产品生产的固定费用见下表。要求制定一个生产计划,使总收益最大。例题3(固定费用问题)有三种资源被用于生产三种产品,资源量、产品单件可变费用售价、资源单件耗量及组成三种产品生产的固定费用见下表。要求制定一个生产计划,使总收益最大。 解:总收益等于销售收入减去生产上述产品的固定费用和可变费用之和。建模碰到的困难主要是事先不能确切知道某种产品是否生产,因而不能确定相应的固定费用是否发生。下面借助0-1变量解决这个困难
设xj是第j种产品的产量,j=1,2,3,再设 则问题的整数规划模型为: M为很大的正数
案例4(工件排序问题)用4台机床加工3件产品。各产品的机床加工顺序,以及产品i在机床j上的加工工时aij如下表。由于某种原因,产品2的加工总时间不得超过d,现要求确定各件产品在机床上的加工方案,使在最短的时间内加工完全部产品。案例4(工件排序问题)用4台机床加工3件产品。各产品的机床加工顺序,以及产品i在机床j上的加工工时aij如下表。由于某种原因,产品2的加工总时间不得超过d,现要求确定各件产品在机床上的加工方案,使在最短的时间内加工完全部产品。 解:设xij表示产品i在机床j上开始加工的时间(i=1,2,3;j=1,2,3,4) 下面将逐步列出问题的整数规划模型 1、同一件产品在不同机床上的加工顺序约束 对于同一件产品,在下一台机床上加工的开始时间不得早于在上一台机床上加工的约束时间,故应有:
产品1: 及 产品2: 及 产品3: 2、每一台机床对不同产品的加工顺序约束 一台机床在工作中,如已开始的加工还没有结束,则不能开始另一件产品的加工。对于机床1,有两种加工顺序。或先加工产品1,后加工产品2;或反之。对于其它3台机床,情况也类似。为了容纳两种相互排斥的约束条件,对于每台机床,分别引入0-1变量 各yj的意义是明显的。如当yj=0时,表示机床1先加工产品1,后加工产品2,当yj=1时,表示机床1先加工产品2,后加工产品1。
那么,每台机床上的加工产品的顺序可用下列四组约束条件来保证那么,每台机床上的加工产品的顺序可用下列四组约束条件来保证 机床1: 及 机床2: 及 机床3: 及 机床4: 及 3、产品2的加工时间约束 产品2的开始加工时间是x21,结束加工时间是x24+a24,故应有: 4、目标函数的建立 设全部产品加工完毕的结束时间为W,由于三件产品的加工结束时间分别为x14+a14, x24+a24, x33+a33,故全部产品的实际加工结束时间为: 转化为线性表达式:
案例5某城市消防总部将全市划分为11个防火区,设有4个消防站,下图中表示了各防火区域与消防站的位置,其中①,②,③,④表示消防站,1,2,3,……,11表示消防区域。根据历史资料证实,各消防站可在事先规定的允许时间内对所负责的地区火灾予以消灭,图中虚线即表示各地区由哪个消防站负责(没有虚线连接就表示不负责),现在总部提出,在同样负责全市消防的前提下,是否可以减少消防站的数目?如果可以,应当关闭哪个?案例5某城市消防总部将全市划分为11个防火区,设有4个消防站,下图中表示了各防火区域与消防站的位置,其中①,②,③,④表示消防站,1,2,3,……,11表示消防区域。根据历史资料证实,各消防站可在事先规定的允许时间内对所负责的地区火灾予以消灭,图中虚线即表示各地区由哪个消防站负责(没有虚线连接就表示不负责),现在总部提出,在同样负责全市消防的前提下,是否可以减少消防站的数目?如果可以,应当关闭哪个? 1 ② 9 2 8 ① 3 7 10 ④ 6 ③ 4 11 5
防火区1: 防火区2: 防火区3: 防火区4: 防火区5: 防火区6: 防火区7: 防火区8: 防火区9: 防火区10: 防火区11: 解:令 对各防火区域可分别列出以下约束条件: 由上述约束条件知:必须x1,x3,x4为1,x2可为0,也可为1,由此,消防站②可以关闭而不影响任务的执行
由此,ILP问题数学模型的一般形式为:求一组变量X1,X2,…,Xn,使 (3.1) (3.2) (3.3) 此例还表明,利用0-1变量处理一类“可供选择条件”的问题非常简明方便。下面再进一步分别说明对0-1变量的应用。 假定现有m种资源对可供选择的n个项目进行投资的数学模型为:求一组决策变量X1,X2,…,Xn,使
(1)如果在可供选择的前k(kn)个项目中,必须且只能选择一项,则在(3.2)中加入新的约束条件:(1)如果在可供选择的前k(kn)个项目中,必须且只能选择一项,则在(3.2)中加入新的约束条件: (2)如果可供选择的k(kn)个项目是相互排斥的,则在(3.2)中加入新的约束条件: (3)如果在可供选择的k(kn)个项目中,至少应选择一项投资,则在(3.2)中加入新的约束条件: 1.对可供项目的选择 同时它还表示在第k个项目中至多只能选择一项投资。
(4)如果项目j的投资必须以项目i的投资为前提,则可在(3.2)中加入新的约束条件:(4)如果项目j的投资必须以项目i的投资为前提,则可在(3.2)中加入新的约束条件: XjXi (5)如果项目i与项目j要么同时被选中,要么同时不被选中,则在(3.2)中加入新的约束条件: Xj=Xi (ij) 2.对可供资源的选择 (1)如果对第r种资源br与第t种资源bt的投资是相互排斥的,即只允许对资源br与bt中的一种进行投资,则可将(3.2)的第r个和第t个约束条件改写为:
① ② 其中y为新引进的0-1变量,M为充分大正数。易见,当y=0时,①式就是原来的第r个约束条件,具有约束作用。此时对②式而言,无论Xj为何值都成立,毫无约束作用,这就使问题仅允许第r种资源进行投资。当y=1时,②式对Xj起了约束作用,而①式成了多余的条件。到底是满足①还是②,则视问题在求出最优解后,y为0还是1而定。
(2)如果问题是要求在前m个约束条件中至少满足k(1<k<m)个,则可将(3.2)中的原约束条件修改为:(2)如果问题是要求在前m个约束条件中至少满足k(1<k<m)个,则可将(3.2)中的原约束条件修改为: 其中M为充分大的正数,k为整数。 整数规划问题的建模与线性规划问题的建模基本一致,仍按以下3个步骤进行: (1)确定决策变量; (2)确定目标函数; (3)确定约束条件。 但0-1规划要注意变量的选择和约束条件的选择。
案例6(P91)(仓库选用问题) 某决策者拟在n个仓库中决定租用其中的几个,以满足m个销售点对货物的需要。每个销售点的需要量bj(j=1,2,…m)必须从租用的仓库中得到满足,且只能从租用的仓库得到满足。而对租用的仓库必须支付固定的运营费(如租金、管理费等),同时,还应决定从租用的哪个仓库中运多少货物到销售点处,以使总的费用为最小。 解:分析,该问题是由一个仓库选用和一个运输问题综合而成。设 gi表示租用仓库i的固定运营费(即固定成本); di表示仓库i的允许容量; Cij表示从仓库i运送货物到销售点j处的单位费用(即可变成本)
(1)决策变量:xij表示从租用的仓库i运送给销售点j的货物量;(1)决策变量:xij表示从租用的仓库i运送给销售点j的货物量; (2)约束条件:此处的约束条件只有运输问题的产量约束和销量约束,表示为 (3)目标函数:总费用包括两部分,一是仓库租用费用,二是运输费用,因此总费用表示为
§3.2 整数线性规划模型的求解 求解ILP问题方法的思考: “舍入取整”法:即先不考虑整数性约束,而去求解其相应的LP问题(称为松驰问题),然后将得到的非整数最优解用“舍入取整”的方法。这样能否得到整数最优解?否!这是因为“舍入取整”的解一般不是原问题的最优解,甚至是非可行解。 但在处理个别实际问题时,如果允许目标函数值在某一误差范围内,有时也可采用“舍入取整”得到的整数可行解作为原问题整数最优解的近似。这样可节省求解的人力、物力和财力。
严格地说,IP是个非线性规划问题。这是因为IP的可行解集是由一些离散的非负整数所组成,不是一个凸集。迄今为止,求解IP问题尚无统一的有效算法。但常用的有求解一般整数规划的分枝定界法、割平面法和求解0-1规划的隐枚举法。在这里我们只介绍分枝定界法和隐枚举法。严格地说,IP是个非线性规划问题。这是因为IP的可行解集是由一些离散的非负整数所组成,不是一个凸集。迄今为止,求解IP问题尚无统一的有效算法。但常用的有求解一般整数规划的分枝定界法、割平面法和求解0-1规划的隐枚举法。在这里我们只介绍分枝定界法和隐枚举法。 1、整数规划的分枝定界法 (1)分枝定界法的基本思想 P76 (2)分枝定界法的求解步骤 P76 例求解下列整数规划问题:
松驰问题(0) 解:首先不考虑整数约束,相应的问题称为原问题的松驰问题 用单纯形法求得其最优解为x1=2.5,x2=2.5,z=87.5 具体求解过程见P76-78,其求解框图如下:
问题(0) x1=2.5,x2=2.5 z=87.5 问题(1) x1=2,x2=2.67 z=83.3 问题(2) x1=3,x2=1.75 z=80 问题(3) x1=2,x2=2 z=70 问题(4) x1=1,x2=3 z=75 问题(0) x1=3.5,x2=1 z=72.5 问题(6) 无可行解
2、0-1规划的隐枚举法 0-1规划的隐枚举法是一种特殊的分枝定界法,其基本思想是利用变量只能为0或1两个值的特性,进行分枝定界,以减少枚举而达到求出最优解之目的。该法适用于任何0-1规划问题的求解,包括指派问题。 隐枚举法首先要将问题化为规范形。 (1)0-1规划的规范形为
(2)化规范形的方法: 1)如果目标函数为求极小值,则对目标函数两边乘以-1,化为求极大值; 2)若目标函数中某变量xj的系数cj>0,则令xj=1-yj 3)如果约束条件是“”形,则可两边乘-1,改为“”形; 4)若某个约束条件为“=”形,则化为两个“”的不等式,如
(3)隐枚举法的基本思想 见P83 例1、用隐枚举法求解下列0-1规划 解:令x1=1-y1,x3=1-y3,x5=1-y5,x2=y2,x4=y4化为规范形得:
7 可行解z=1 y2=1 3 可行解z=3 5 8 y5=1 可行解z=2 y2=0 y4=1 4 1 y5=0 6 不可行子域 y3=1 y4=0 0 y4=0 9 不可行子域 2 13 y3=0 y1=0 不可行子域 Z=11 y5=0 11 y4=1 10 y1=1 14 12 可行解z=6 y5=1 可行解z=2 其求解过程如下图所示: 由此可知,最优解为x3=x4=x5=1,x1=x2=0,maxz=6
§3.3 指派问题及其解法 当指派第i人去完成第j项工作 否则 引例:假设有4个人去完成4项任务,每个人由于技术、专长不同,完成任务的时间如下表,且规定每人只能做一项工作,每项工作只能由一人完成,问应如何分配任务使总费用最小?
诸如此类,有n项任务,恰好有n个人可承担这些任务,但由于每人的技术专长不同,完成任务的效率(所费时间不同,为使完成n项任务的总效率最高(即所需总时间最少),应如何指派(分派)人员的问题统称为指派(分派)问题。诸如此类,有n项任务,恰好有n个人可承担这些任务,但由于每人的技术专长不同,完成任务的效率(所费时间不同,为使完成n项任务的总效率最高(即所需总时间最少),应如何指派(分派)人员的问题统称为指派(分派)问题。 一、指派问题的数学模型及其特点 1.数学模型:
2.特点 (1)给定一个指派问题时,必须给出效率矩阵(系数矩阵)C=(Cij)nxn,且Cij0,因此必有最优解( )。 (2)指派问题是一种特殊的平衡运输问题,由于模型结构的特殊性(看作每个产地的产量均为1,每个销地的销量均为1),故可用更为简便的匈牙利算法进行求解。 (3)若从效率矩阵(Cij)nxn的一行(列)各元素中分别减去该行(列)的最小元素,得到的新效率矩阵(bij)nxn不改变原指派问题的最优解。 这条性质可用如下语言来解释
对同一项工作(任务)j来说,同时提高或降低每人相同的效率(常数ti),不影响其最优指派;同样,对同一个人i来说,完成各项工作的效率都提高或降低相同的效率(常数dj),也不影响其最优指派。将效率矩阵C=(Cij)n×n变换后,得到新的效率矩阵(bij)nxn,其中对同一项工作(任务)j来说,同时提高或降低每人相同的效率(常数ti),不影响其最优指派;同样,对同一个人i来说,完成各项工作的效率都提高或降低相同的效率(常数dj),也不影响其最优指派。将效率矩阵C=(Cij)n×n变换后,得到新的效率矩阵(bij)nxn,其中 bij=Cij+ti+dj (对所有的i,j)
这说明Z与Z同时达到最小值。因而最优解相同。这说明Z与Z同时达到最小值。因而最优解相同。 二、指派问题的解法——匈牙利法 匈牙利法是求解指派问题的一种好算法,它只能求解目标函数为最小化的情况,它由匈牙利数学家柯尼格(D.Konig)提出,因此而得名。 1、匈牙利法的基本思想 匈牙利法主要基于指派问题的第(3)个特点。即从效率矩阵的每行或每列减去一个常数,指派问题的最优解不变。由此,我们可以让每行或每列减去一个数后,出现0元素,然后,再给费用为0元素的相应变量指派为1,以使变换后的目标函数为0,从而达到最优。 2.匈牙利法的计算步骤见P88-89 三、关于求最大化的指派问题
对于求最大化的指派问题(即求 ),可采 用构造新的效率矩阵(M-Cij)nxn,其中M=max{Cij},(显 然M-Cij0),将其转化为 则所得到的最优解就是原问题的最优解。事实上 由于nM为常数,因此,使Z取得最小的最优解就是使Z取得最大的最优解。
当m<n时 当m>n时 n-m行 m-n列 四、非平衡的指派问题 以上讨论的指派问题是效率矩阵的行数等于列数,即m+n的情况。当mn时,则可用增加虚设的零元数行(列)使效率矩阵变成方阵后,再用匈牙利法求解。