1.1k likes | 1.43k Views
第八章 整数规划. 在实际应用问题中,我们会常遇到要求问题的决策变量全部或部分是整数的情况,如问题的决策变量表示的是人数、汽车量数、机器台数、以及对事物的逻辑判断等,我们把这样的规划问题称为 整数规划问题 ( Integer Programming, IP ) , 特别地,当这个问题是线性规划问题时就称为 整数线性规划问题 ( Integer Linear Programming, ILP )。由于本章只讲整数线性规划问题,所以在以后的叙述中将其简称为整数规划问题。.
E N D
第八章 整数规划 • 在实际应用问题中,我们会常遇到要求问题的决策变量全部或部分是整数的情况,如问题的决策变量表示的是人数、汽车量数、机器台数、以及对事物的逻辑判断等,我们把这样的规划问题称为整数规划问题(Integer Programming, IP),特别地,当这个问题是线性规划问题时就称为整数线性规划问题(Integer Linear Programming, ILP)。由于本章只讲整数线性规划问题,所以在以后的叙述中将其简称为整数规划问题。
在整数规划中,如果所有的决策变量都要求是整数时,就称之为纯整数规划(Pure Integer Programming)或称之为全整数规划(All Integer Programming);如果只有部分决策变量要求是整数,其它变量则不予限制,这样的问题称之为混合整数规划(Mixed Integer Programming)。整数规划还有一种特殊的形式,就是整数变量的取值仅限于0或1,这样的问题我们称之为0-1整数规划(0-1 Integer Programming)。
本章内容 • §8.1 整数规划问题举例—背包问题 • §8.2 整数规划问题的特点 • §8.3 应用EXCEL和LINGO求解整数规划问题 • §8.4 0-1变量在建模中的作用 • §8.5 案例分析:L公司的战略重组问题
§8.1 整数规划问题举例—背包问题 • §8.1.1 问题举例 例1 某连锁便利店为了吸引顾客,培育社区市场,举行了一次趣味智力竞赛,聪明伶俐的邓小姐获得了第一名,奖品是在下表(表8-1)所列的12种商品中每种最多只能选一件,而且总重量不能超过50公斤。假如邓小姐对所列商品并无特别偏好,对商店的标价也很认可,她应该如何选择才能使她所获得的奖品最值钱。
§8.1.1 问题举例 • 表8-1 商品(奖品)信息
§8.1.1 问题举例 • 邓小姐对每种商品的决策只能是选,或者不选,要是选的话,只能选1个,不能是半个或0.3个,所以说必需是整数,因此这个问题是整数规划问题,而且是0-1整数规划问题。可以引入0-1变量 来表达这两种选择:
§8.1.1 问题举例 邓小姐面临的问题就是背包问题(Knapsack Problem)中的0-1背包问题(0-1 Knapsack Problem)。0-1背包问题属于整数规划问题,决策变量只能是0或者1,而不能是0和1之间的小数,更不能是其他实数。
§8.1.1 问题举例 • 为了能清楚地认识0-1整数规划问题的特点,先考虑一个小规模的问题。假设邓小姐获得这些奖品的时间正值夏季,所以她优先考虑水果和果汁类的奖品的多少,分别是无籽西瓜、橙汁和优质苹果,分别设为。因为家中已经有些水果储备,为了避免在保质期内不能吃完造成的浪费,她不想让这类物品的总重量(设为)过大,在此基础上总价值越大越好。可以建立如下数学模型:
§8.1.1 问题举例 • 对于这样的小规模0-1整数规划问题,很容易通过枚举法求得最优解,实际上只需要考虑种情况就可。事实上,此问题的最优解依赖于的值。 • 当时,最优解为 (0,0,0),最优值为0; • 当时,最优解为 (0,1,0),最优值为10; • 当 时,最优解为 (1,1,0),最优值为18; • 当 时,最优解为 (0,0,1),最优值为75; • 当 时,最优解为 (0,1,1),最优值为85; • 当 时,最优解为 (1,1,1),最优值为93。
§8.1.1 问题举例 虽然可以用枚举法求解这个三个变量小规模问题,因为只有8种方案,甚至求解12个变量的问题也只要考虑 种情况,现代的计算机求解也不存在任何问题,但是如果问题规模增加到50个或更多,就要考虑 种情况,这几乎是无法实现的。
§8.1.2 背包问题介绍 背包问题是近年来运筹学界研究的热点问题,在材料切割、货物装载、预算控制、战略计划、信息加密等问题中有着广泛的应用。一般的背包问题是假设一个背包有一个最大承重限制,设承重量为W ,有n 件物品可供选择,每个物品的重量分别是W1,W2,W3,……W n ,每件物品的价值是 , 若 在不超过背包承重限制的条件下,在这 件物品种中选择哪些装入背包中才能使背包中的所有物品价值最大。
§8.1.2 背包问题介绍 在0-1背包问题中需要引入0-1整数变量 ,定义如下: 0-1背包问题的模型可以描述如下:
§8.1.2 背包问题介绍 背包问题中如果每种物品的数量不是一件,而是大于1的整数件,这种背包问题叫多重背包问题(Bounded Knapsack Problem)。多重背包问题中的决策变量不再是0-1整数变量,而是小于等于的非负整数变量,其模型可描述如下:
§8.1.2 背包问题介绍 如果每种物品的数量没有限制,可以取任意大的整数,这种背包问题叫做完全背包问题(Unbounded Knapsack Problem),完全背包问题的模型表示如下:
§8.1.2 背包问题介绍 上述背包问题除了整数约束外实际上只考虑了重量约束,实际问题中要考虑的约束可能还会有很多,比如体积约束。设可以放入包中的每个物品的体积分别是,且所有物品的总体积大于背包的容积,即。则0-1背包问题的模型可以描述如下
§8.1.2 背包问题介绍 • 实际上,背包问题还会因为考虑更多的约束条件而变得复杂,这里只对如下三种情况简单举例,其他更复杂的应用及详细举例请参考本章第4节。 • (1) 若规定装入包中物品数为5到8件,则模型中增加约束条件: • (2) 规定若装第3件物品,必须装第4件物品,则模型中增加约 束条件: • (3) 规定第5件物品和第2件物品,必须装一件,也只能装一件 ,则模型中增加约束条件:
§8.2 整数规划问题的特点 • 从数学模型上看,整数规划似乎是线性规划的一种特殊情况,求解只需在线性规划解的基础上,通过舍入取整,寻求整数要求的解即可,但事实上整数规划与线性规划之间有很大的不同,通过舍入法取整得到的整数解也不一定就是整数规划问题的最优解,有时甚至不能保证所得到的解是整数规划问题的可行解。 • 下面我们通过一个简单的例子说明一下这些特点。
§8.2 整数规划问题的特点 • 例2 钻石切割问题 • 某宝石加工厂最近新到6粒大小、质量等级相似的钻石毛料,管理层有两种选择,一是切磨成一般的皇冠形,每粒可获利2.5千元;一是切磨成虽然较难切磨但当前市场较流行的心形,每粒可获利4千元。若切磨成皇冠形则每粒需要5个工作日,若切磨成心形则每粒需要9个工作日,由于工厂切工师傅较忙,最多只有45个工作日来做这批工作。另外,因为毛料自身形状的关系,其中只有4粒毛料可以切磨成皇冠形,而6粒毛料中任何一粒都可以切磨成心形。那么,管理层应如何决策才能使这批钻石获利最大?
§8.2 整数规划问题的特点 • 现在我们解这个问题,设x1,x2 分别代表切磨成皇冠形和切磨成心形的钻石粒数,显然,钻石的粒数只能是整数,所以 , 的值都只能取整数,因此这是一个纯整数规划问题,数学模型表示为: 且是整数
§8.2 整数规划问题的特点 为方便分析,我们称这个整数规划问题为(IP)。 如果不考虑对变量的整数约束所得到的线性规划问之为原整数规划问题的松弛问题(Relaxation),我们所讨论的上面问题的线性松弛问题是(L0):
§8.2 整数规划问题的特点 先用Excel解此问题的松弛问题(L0),求解结果见图8.1,D7单元格记录着目标函数的值,B7和C7单元格分别记录着最优解的值。因为这个问题只有两个决策变量,可以通过图解法直观地观察到各约束和可行解及最优解的情况(图8.2)。当目标函数曲线向右上方平行移动到可行域(图中阴影部分)最外的边界点时就得到线性松弛问题的最优解( )。图8.1如下:
§8.2 整数规划问题的特点 图8.2
§8.2 整数规划问题的特点 对于可行域有界的整数规划问题,整数规划的可行解集是一个有限集,我们可以将这个集合内的每一个点对应的目标函数值都一一计算出来,然后从中找出最大者(最大者是针对本例而言,对其他问题可能是找出最小者),就是整数规划问题的最优解,这种方法称之为完全枚举法(Complete Enumeration)。本例中可行域中有22个可行解点,完全枚举倒不成问题,但是如果对于一个复杂的模型,这个工作是十分费时的,有时甚至是不可能实现的。因此,如何巧妙地构造枚举过程是必须研究的问题,目前用得较多的是将完全枚举法变成部分枚举法。常用的求解整数规划的方法有分枝定界法(Branch and Bound Technique)和割平面法(Cutting-Plane Technique),本书这里不作详细介绍,请有兴趣的读者参考相关文献。
§8.3 应用EXCEL和LINGO求解整数规划问题 §8.3.1 应用EXCEL电子表格求解整数规划问题 • 在用Excel求解整数规划时,与前面讲的线性规划不同之处在于整数约束的添加。我们以例2的钻石切割问题为例说明整数约束的添加过程。
图8.5 图8.4 §8.3.1 应用EXCEL电子表格求解整数规划问题
图8.6 图8.7 §8.3.1 应用EXCEL电子表格求解整数规划问题
§8.3.1 应用EXCEL电子表格求解整数规划问题 下面,我们来再来看一下如何应用EXCEL求解0-1整数规划问题。 例3应用EXCEL求解例1中邓小姐在便利店获奖后如何 领取奖品的背包问题。 背包问题在EXCEL的布局设计比较简单,基本上把表8-1的信息复制到电子表格中就可,见图8.11。 在应用Excel求解0-1整数规划时,同整数规划的求解相类似,只是在0-1变量的约束添加时略有不同。
图 8.9 图 8.8 图 8.10 §8.3.1 应用EXCEL电子表格求解整数规划问题
图 8.11 背包问题电子表格模型、公式及求解参数 §8.3.1 应用EXCEL电子表格求解整数规划问题
整数规划问题在LINGO中求解与以往的线性规划不同的是需要添加整数约束或者0-1整数约束,这两个操作分别通过@GIN和@BIN两个函数实现。下面分别看一下钻石切割问题和背包问题。整数规划问题在LINGO中求解与以往的线性规划不同的是需要添加整数约束或者0-1整数约束,这两个操作分别通过@GIN和@BIN两个函数实现。下面分别看一下钻石切割问题和背包问题。 1 例2钻石切割问题的LINGO建模与求解 建立原始集Diamonds,有四个属性,分别表示:毛料(Blank)、工作日(Days)、加工数量(QTY)、和利润(Profit),其中加工数量QTY是决策变量,在约束中需要通过: @GIN( QTY))实现整数限制。别外还定义了三个表示资源数量的已知变量,分别是毛料数Available_Blank、可用工作日Available_Days和皇冠形的最大切磨数量限制Max_Crown。 (请另见lingo文件) §8.3.2 应用LINGO求解整数规划问题
§8.3.2 应用LINGO求解整数规划问题 2 例1背包问题的LINGO建模与求解 建立原始集ITEMS,用隐式罗列方法列出12种商品,每种商品有是否选用(Include)、重量(Weight)和价格(Price)三种属性。其中是否选用(Include)是0-1决策变量,在模型中通过: @BIN( Include)实现0-1整数约束。模型的描述和求解如下,读者可以同电子表格的结果对比学习。 (模型及求解请另见lingo文件)
§8.4 0-1变量在建模中的作用 • 0-1变量又叫布尔变量,通常表示是或否这样的逻辑是非判断,因此,0-1变量不仅仅是在设施布置和选址、指派等问题中使用。熟练运用0-1变量对于提高模型的可读性,节约计算时间等方面是非常重要的,甚至是某些问题能否成功建模的重要条件。
§8.4.1 选址问题 • 在经济全球化的时代,许多公司为在全球范围内最优地配置资源(比如获取廉价劳动力或原材料等),要在不同的地方建厂或仓库以及其它服务设施,这些都是选址问题。在选址以前,对许多候选的地点要进行分析和比较,而每个候选地址的决策都涉及到一个选还是不选的判断问题。通常决策变量表示如下:
§8.4.1 选址问题 • 决策变量= 某一候选地点被选为某一设施的地址 其它 在很多情况下,目标通常是设施的选址在满足既定的要求的条件下使新设施的建设成本最小。下面我们通过一个小例子来说明一下:
§8.4.1 选址问题 • 例4 分公司选址问题 • 某销售公司打算通过在武汉或长春设立分公司(也许在两个城市都设分公司)增加市场份额,管理层同时也计划在新设分公司的城市至多建一个配送中心,当然也可以不建配送中心。经过财务和技术经济专家的计算,每种选择对公司收益的净现值列在表8-3的第4列,第5列中记录了每种选择所需的费用,总的预算费用不得超过20万元。目标是在满足以上约束的条件下使总的净现值最大。
§8.4.1 选址问题 • 解:尽管这个问题很小,我们甚至可以很快用观查法看出结果来,我们还是建一个模型来说明0-1规划的建模方法。所有的决策变量都是0-1变量,定义如下: 表示些决策总的净现值,所以以万元单位,得到目标函数为:
§8.4.1 选址问题 • 总的预算支出(见表8-3的最后一列)要不超过20万元,这个约束表达为 • 这个问题还有两个互斥的变量(公司最多只建一个新配送中心),我们表达为:
§8.4.1 选址问题 • 另外,决策变量3和决策变量4的值还要受到决策变量1和决策变量2的约束,这两个变量的值是否取1分别决定于决策变量1和2(公司只有在建有新工厂的城市里才决定是否建新仓库)。所以对于决策变量3,只有决策变量1取值为1时,它才能取值为1,当然也可能取值为0;如果决策变量1取值为0时,决策变量3就只能取值为0。这样,我们得到一个约束: 同理,决策变量4和决策变量2的关系也形成一个约束:
§8.4.1 选址问题 • 把变量都放在不等式的左边,常量放在不等式的右边,整理后我们得到这个问题的完整的0-1规划模型:
§8.4.1 选址问题 • 虽然这个例子很小,但在实际应用中却很具代表性。图8.12给出了用Excel求解的结果,结果显示公司应在长春和武汉各设一分公司,在两地都不建配送中心,这样的决策使净现值为最大,是28万元(见图8.12的F8单元格),所需资金投入为18万元(见图8.12的F4单元格)。
§8.4.1 选址问题 图 8.12 分公司选址问题的电子表格模型、公式及求解参数
§8.4.1 选址问题 • 例5 带容量限制的工厂选址 • 某公司为一新产品系列的生产准备设立4个工厂,向5个地区的顾客提供该产品系列,每个工厂建厂时需要一定的固定成本,且因原料和能源供应的原因使得每个工厂生产能力(容量)也不相同,5个地区顾客的总需求量也可以根据定单情况和预测得出,各工厂到各地区之间的单位运费也是已知的。要使总的成本最低,应建立哪几个工厂以及如何安排运输?具体数据见表8-4。
§8.4.1 选址问题 解:这个问题是运输问题的扩展。定义各变量如下: 工厂i的固定成本 ; 工厂i 的生产能力(容量) ; ; 顾客j的需求量, ; 顾客i到j的单位运费, ; 顾客i到j的运量,
§8.4.1 选址问题 • 问题的目标函数是使总运费和设立工厂的成本最低,可以表达如下: 所有顾客的需求都要满足,从总的容量和总的需求量的数据来看,这是一个供大于需的问题,所以这一约束可以通过下式实现: 需求约束: ; 对每个工厂来说,只有该厂建立,也就是zi=1 时容量才是设计容量,否则容量就是0,这一要求可以通过Qizi实现。另外,从该厂运出的总量不能超过该厂的容量。 ;
§8.4.1 选址问题 供应约束: ; 工厂i 的生产能力(容量) ; 还要对选址与否的决策变量加上0-1约束,即: 由于这个问题属于运输问题,具有整数解特性,所以在模型里并不需要对运量加上整数约束。 (另外还可以用lingo求解,这里不另做讨论)
§8.4.2 两个约束中选一个约束的问题 • 管理决策时经常会碰到在两个约束中任选一个的问题,举例来说,某个投资方案有两个约束,但只要其中有任何一个成立就可以了,另外一个约束则不作要求,等等。比如我们假设要在以下两个约束中任选一个:
§8.4.2 两个约束中选一个约束的问题 • 也就是说在上面两个约束中至少要使一个约束成立,但不一定两个都要求成立,为了能让这个要求得以实现,我们引入一个充分大的正数——M,上面的描述实际上等同于: (这里“M”的作用就是使它所在的约束无论变量取任何可能值时,不等式都自然成立,也就是相当于没有这个约束。) 或