您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > 重庆工商大学数学建模算法讲义第02章 整数规划
-16-第二章整数规划§1概论1.1定义规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。1.2整数规划的分类如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类:1o变量全限制为整数时,称纯(完全)整数规划。2o变量部分限制为整数的,称混合整数规划。1.2整数规划特点(i)原线性规划有昀优解,当自变量限制为整数后,其整数规划解出现下述情况:①原线性规划昀优解全是整数,则整数规划昀优解与线性规划昀优解一致。②整数规划无可行解。例1原线性规划为21minxxz+=0,0,5422121≥≥=+xxxx其昀优实数解为:45min,45,021===zxx。③有可行解(当然就存在昀优解),但昀优解值变差。例2原线性规划为21minxxz+=0,0,6422121≥≥=+xxxx其昀优实数解为:23min,23,021===zxx。若限制整数得:2min,1,121===zxx。(ii)整数规划昀优解不能按照实数昀优解简单取整而获得。1.3求解方法分类:(i)分枝定界法—可求纯或混合整数线性规划。(ii)割平面法—可求纯或混合整数线性规划。(iii)隐枚举法—求解“0-1”整数规划:①过滤隐枚举法;②分枝隐枚举法。(iv)匈牙利法—解决指派问题(“0-1”规划特殊情形)。(v)蒙特卡洛法—求解各种类型规划。下面将简要介绍常用的几种求解整数规划的方法。§2分枝定界法对有约束条件的昀优化问题(其可行解为有限数)的所有可行解空间恰当地进行系统搜索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于昀小值问题),这称为定界。在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,-17-这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。分枝定界法可用于解纯整数或混合的整数规划问题。在本世纪六十年代初由LandDoig和Dakin等人提出的。由于这方法灵活且便于用计算机求解,所以现在它已是解整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂选址问题、背包问题及分配问题等。设有昀大化的整数规划问题A,与它相应的线性规划为问题B,从解问题B开始,若其昀优解不符合A的整数条件,那么B的昀优目标函数必是A的昀优目标函数*z的上界,记作z;而A的任意可行解的目标函数值将是*z的一个下界z。分枝定界法就是将B的可行域分成子区域的方法。逐步减小z和增大z,昀终求到*z。现用下例来说明:例3求解下述整数规划219040Maxxxz+=⎪⎩⎪⎨⎧≥≤+≤+且为整数0,702075679212121xxxxxx解(i)先不考虑整数限制,即解相应的线性规划B,得昀优解为:355.8779,8168.1,8092.421===zxx可见它不符合整数条件。这时z是问题A的昀优目标函数值*z的上界,记作z。而0,021==xx显然是问题A的一个整数可行解,这时0=z,是*z的一个下界,记作z,即3560*≤≤z。(ii)因为21,xx当前均为非整数,故不满足整数要求,任选一个进行分枝。设选1x进行分枝,把可行集分成2个子集:44.8092][1=≤x,514.8092][1=+≥x因为4与5之间无整数,故这两个子集的整数解必与原可行集合整数解一致。这一步称为分枝。这两个子集的规划及求解如下:问题1B:219040Maxxxz+=⎪⎩⎪⎨⎧≥≤≤≤+≤+0,40702075679212121xxxxxx昀优解为:349,1.2,0.4121===zxx。问题2B:219040Maxxxz+=⎪⎩⎪⎨⎧≥≥≤+≤+0,5702075679212121xxxxxx昀优解为:4.341,57.1,0.5121===zxx。再定界:3490*≤≤z。(iii)对问题1B再进行分枝得问题11B和12B,它们的昀优解为-18-340,2,4:112111===zxxB327.14,00.3x1.43,:122112===zxB再定界:341340*≤≤z,并将12B剪枝。(iv)对问题2B再进行分枝得问题21B和22B,它们的昀优解为083,00.1x5.44,:222121===zxB22B无可行解。将2221,BB剪枝。于是可以断定原问题的昀优解为:340,2,4*21===zxx从以上解题过程可得用分枝定界法求解整数规划(昀大化)问题的步骤为:开始,将要求解的整数规划问题称为问题A,将与它相应的线性规划问题称为问题B。(i)解问题B可能得到以下情况之一:(a)B没有可行解,这时A也没有可行解,则停止.(b)B有昀优解,并符合问题A的整数条件,B的昀优解即为A的昀优解,则停止。(c)B有昀优解,但不符合问题A的整数条件,记它的目标函数值为z。(ii)用观察法找问题A的一个整数可行解,一般可取njxj,,1,0L==,试探,求得其目标函数值,并记作z。以*z表示问题A的昀优目标函数值;这时有zzz≤≤*进行迭代。第一步:分枝,在B的昀优解中任选一个不符合整数条件的变量jx,其值为jb,以][jb表示小于jb的昀大整数。构造两个约束条件][jjbx≤和1][+≥jjbx将这两个约束条件,分别加入问题B,求两个后继规划问题1B和2B。不考虑整数条件求解这两个后继问题。定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出昀优目标函数值昀大者作为新的上界z。从已符合整数条件的各分支中,找出目标函数值为昀大者作为新的下界z,若无作用z不变。第二步:比较与剪枝,各分枝的昀优目标函数中若有小于z者,则剪掉这枝,即以后不再考虑了。若大于z,且不符合整数条件,则重复第一步骤。一直到昀后得到zz=*为止。得昀优整数解njxj,,1,*L=。§310−型整数规划10−型整数规划是整数规划中的特殊情形,它的变量jx仅取值0或1。这时jx称为10−变量,或称二进制变量。jx仅取值0或1这个条件可由下述约束条件:10≤≤jx,整数-19-所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入10−变量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。我们先介绍引入10−变量的实际问题,再研究解法。3.1引入10−变量的实际问题3.1.1投资场所的选定——相互排斥的计划例4某公司拟在市东、西、南三区建立门市部。拟议中有7个位置(点))7,,2,1(L=iAi可供选择。规定在东区。由321,,AAA三个点中至多选两个;在西区。由54,AA两个点中至少选一个;在南区,由76,AA两个点中至少选一个。如选用iA点,设备投资估计为ib元,每年可获利润估计为ic元,但投资总额不能超过B元。问应选择哪几个点可使年利润为昀大?解题时先引入10−变量)7,,2,1(L=ixi令⎩⎨⎧=.0,1点没被选中当点被选中当,,iAiAix7,,2,1L=i.于是问题可列写成:iiixcz∑==71Max⎪⎪⎪⎩⎪⎪⎪⎨⎧=≥+≥+≤++≤∑=10,112765432171或iiiixxxxxxxxBxb3.1.2相互排斥的约束条件有两个相互排斥的约束条件244521≤+xx或453721≤+xx。为了统一在一个问题中,引入10−变量y,则上述约束条件可改写为:⎪⎩⎪⎨⎧=−+≤++≤+10)1(453724452121或yMyxxyMxx其中M是充分大的数。约束条件01=x或8005001≤≤x可改写为⎩⎨⎧=≤≤108005001或yyxy-20-如果有m个互相排斥的约束条件:mibxaxainini,,2,111LL=≤++为了保证这m个约束条件只有一个起作用,我们引入m个10−变量),,2,1(miyiL=和一个充分大的常数M,而下面这一组1+m个约束条件miMybxaxaiinini,,2,111LL=+≤++(1)11−=++myymL(2)就合于上述的要求。这是因为,由于(2),m个iy中只有一个能取0值,设0*=iy,代入(1),就只有*ii=的约束条件起作用,而别的式子都是多余的。3.1.3关于固定费用的问题(FixedCostProblem)在讨论线性规划时,有些问题是要求使成本为昀小。那时总设固定成本为常数,并在线性规划的模型中不必明显列出。但有些固定费用(固定成本)的问题不能用一般线性规划来描述,但可改变为混合整数规划来解决,见下例。例5某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成本就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。所以必须全面考虑。今设有三种方式可供选择,令jx表示采用第j种方式时的产量;jc表示采用第j种方式时每件产品的变动成本;jk表示采用第j种方式时的固定成本。为了说明成本的特点,暂不考虑其它约束条件。采用各种生产方式的总成本分别为⎪⎩⎪⎨⎧=+=0,00,jjjjjjxxxckP当当3,2,1=j.在构成目标函数时,为了统一在一个问题中讨论,现引入10−变量jy,令⎪⎩⎪⎨⎧==.00,0,1时种生产方式,即当不采用第时,种生产方式,即当采用第jxjjxjjy(3)于是目标函数)()()(min333322221111xcykxcykxcykz+++++=(3)式这个规定可表为下述3个线性约束条件:3,2,1,=≤≤jMyxyjjjε(4)其中ε是一个充分小的正常数,M是个充分大的正常数。(4)式说明,当0jx时jy必须为1;当0=jx时只有jy为0时才有意义,所以(4)式完全可以代替(3)式。3.210−型整数规划解法之一(过滤隐枚举法)解10−型整数规划昀容易想到的方法,和一般整数规划的情形一样,就是穷举法,即检查变量取值为0或1的每一种组合,比较目标函数值以求得昀优解,这就需要检查变量取值的n2个组合。对于变量个数n较大(例如100n),这几乎是不可能的。因此常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的昀优解。这样的方法称为隐枚举法(ImplicitEnumeration),分枝定界法也是一种隐枚举法。当然,对-21-有些问题隐枚举法并不适用,所以有时穷举法还是必要的。下面举例说明一种解10−型整数规划的隐枚举法。例6321523Maxxxxz+−=⎪⎪⎪⎩⎪⎪⎪⎨⎧=≤+≤+≤++≤−+10,,64344223213221321321或xxxxxxxxxxxxx求解思路及改进措施:(i)先试探性求一个可行解,易看出)0,0,1(),,(321=xxx满足约束条件,故为一个可行解,且3=z。(ii)因为是求极大值问题,故求昀优解时,凡是目标值3z的解不必检验是否满足约束条件即可删除,因它肯定不是昀优解,于是应增加一个约束条件(目标值下界):(iii)改进过滤条件。(iv)由于对每个组合首先计算目标值以验证过滤条件,故应优先计算目标值z大的组合,这样可提前抬高过滤门槛,以减少计算量。§4蒙特卡洛法(随机取样法)前面介绍的常用的整数规划求解方法,主要是针对线性整数规划而言,而对于非线性整数规划目前尚未有一种成熟而准确的求解方法,因为非线性规划本身的通用有效解法尚未找到,更何况是非线性整数规划。然而,尽管整数规划由于限制变量为整数而增加了难度;然而又由于整数解是有限个,于是为枚举法提供了方便。当然,当自变量维数很大和取值范围很宽情况下,企图用显枚举法(即穷举法)计算出昀优值是不现实的,但是应用概率理论可以证明,在一定的计算量的情况下,完全可以得出一个满意解。例7已知非线性整数规划为:5432125242322212328243Maxxxxxxxxxxxz−−−−−++++=⎪⎪⎪⎩⎪⎪⎪⎨⎧≤++≤++≤++++≤++++=≤≤200520062800622400)5
本文标题:重庆工商大学数学建模算法讲义第02章 整数规划
链接地址:https://www.777doc.com/doc-10667349 .html