整数线性规划理论
- 格式:doc
- 大小:394.00 KB
- 文档页数:8
线性规划与整数规划理论及应用研究线性规划是一种优化问题,它通过求解数学函数的最大值或最小值,来找到能够满足约束条件的变量值。
线性规划的应用非常广泛,包括生产排程、运输问题、财务管理等领域。
整数规划则是线性规划的一种扩展形式,它要求变量值是整数。
本文将介绍线性规划及整数规划的理论和应用研究。
线性规划理论线性规划的数学表达式为:$\max_{x \in \mathbb{R}^n} c^Tx$$ s.t. Ax \leq b ; $其中$x$是$n$维实向量,$c$是$n$维实向量,$A$是$m \times n$的实矩阵,$b$是$m$维实向量。
这个表达式的含义是,求出在满足约束条件$Ax \leq b$的同时,使得$c^Tx$达到最大值的$x$。
约束条件是对$x$的限制,使得$x$满足可行性条件。
线性规划存在的前提是可行性条件的存在,即在约束条件$Ax \leq b$下,存在至少一个$x$可以满足。
如果可行性条件不存在,则线性规划无解。
线性规划的求解可以使用线性规划算法进行,例如单纯形法、内点法等。
其中最常用的算法是单纯形法。
单纯形法的基本思想是从一个初始解开始,通过不断地找到更优的解,来逐步逼近最优解。
具体来说,单纯形法通过找到松弛条件的目标函数最优解对应的松弛变量,来进行解的更新。
线性规划应用线性规划在实际生产、物流等领域被广泛应用。
例如,在生产调度中,线性规划可以用来优化生产过程中的时间排程、机器分配等问题,从而达到最大化生产效率、最小化生产成本的目的。
在物流领域,线性规划可以用来优化物流运输路线,从而最小化运输成本。
另外,线性规划还可以应用于制定食物饮品配方,通过确定每种原料的数量和配比,来达到制作具有某种特定功能的食物饮品的目的。
此外,线性规划还可以用于网络资源规划、金融风险管理等领域。
整数规划理论整数规划是线性规划的一种扩展形式,它要求变量值是整数。
整数规划的数学表达式为:$\max_{x \in \mathbb{Z}^n} c^Tx$$s.t. Ax \leq b ;$其中$x$是$n$维整数向量,$c$是$n$维实向量,$A$是$m \times n$的实矩阵,$b$是$m$维实向量。
0-1型整数线性规划模型理论(1) 0-1型整数线性规划0-1型整数线性规划是一类特殊的整数规划,它的变量仅取值0或1.其模型如下:T min ..01(1,2,,)j f s t x j n =⎧⎨=⎩c xAx =b 取或 其中()T 12,,,,n c c c =c ()T 12,,,,n x x x =x (),ij m na ⨯=A ()T 12,,,.mb b b =b 称此时的决策变量为0-1变量,或称二进制变量.在实际问题中,如果引进0-1变量,就可以把各种需要分别讨论的线性(或非线性)规划问题统一在一个问题中讨论了.(2) 求解0-1型整数线性规划的分支界定法Matlab 指令x = bintprog(f,A,b): 求解0-1型整数线性规划,用法类似于linprog.x = bintprog(f,A,b,Aeq,beq): 求解下述线性规划问题:T min ,z =f x ≤Ax b ,≤Ax b ,⋅≤Aeq x beq ,x 分量取0或1.x = bintprog(f,A,b,Aeq,beq,x0): 指迭代初值x0,如果没有不等式约束,可用[]代替A,b 表示默认,如果没有等式约束,可用[]代替Aeq 和beq 表示默认;用[x,fval]代替上述各命令行中左边的x,则可得到最优解处的函数值fval.例如:求解0-1型整数线性规划模型:1min ni i Z x ==∑()()()12345356894679123471256758129232200..20002001(1,2,,9)j x x x x x x x x x x x x x x x x x x x s t x x x x x x x x x x x j ⎧-++++≤-⎪-++++≤-⎪⎪-+++≤-⎪⎪--+≤⎪-≤⎪⎨--+≤⎪⎪-≤⎪-+≤⎪⎪--+≤⎪⎪==⎩或用Matlab 软件编程可解得1236791x x x x x x ======,其他变量为0,共六门课,满足所给条件, Matlab程序代码如下:c = ones(1,9);a =[-1,-1,-1,-1,-1,0,0,0,0;0,0,-1,0,-1,-1,0,-1,-1;0,0,0,-1,0,-1,-1,0,-1;-1,-1,2,0,0,0,0,0,0;0,0,0,1,0,0,-1,0, 0;-1,-1,0,0,2,0,0,0,0;0,0,0,0,0,1,-1,0,0;0,0,0,0,-1,0,0,1,0;-1,-1,0,0,0,0,0,0,2];b = [-2;-3;-2;0;0;0;0;0;0];A = [5 4 4 3 4 3 2 2 3];x = bintprog(c,a,b)f = A*x运行结果:Optimization terminated.x =111111f =20。
第二章整数规划§1 概论定义规划中的变量(部分或全部)限制为整数时,称为整数规划。
若在线性规划模型中,变量限制为整数,则称为整数线性规划。
目前所流行的求解整数规划的方法,往往只适用于整数线性规划。
目前还没有一种方法能有效地求解一切整数规划。
1.2 整数规划的分类如不加特殊说明,一般指整数线性规划。
对于整数线性规划模型大致可分为两类:1o 变量全限制为整数时,称纯(完全)整数规划。
2o 变量部分限制为整数的,称混合整数规划。
1.2 整数规划特点(i)原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况:①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。
②整数规划无可行解。
例1 原线性规划为 其最优实数解为:45min ,45,021===z x x 。
③有可行解(当然就存在最优解),但最优解值变差。
例2 原线性规划为 其最优实数解为:23min ,23,021===z x x 。
若限制整数得:2m in ,1,121===z x x 。
(ii ) 整数规划最优解不能按照实数最优解简单取整而获得。
求解方法分类:(i )分枝定界法—可求纯或混合整数线性规划。
(ii )割平面法—可求纯或混合整数线性规划。
(iii )隐枚举法—求解“0-1”整数规划:①过滤隐枚举法;②分枝隐枚举法。
(iv)匈牙利法—解决指派问题(“0-1”规划特殊情形)。
(v)蒙特卡洛法—求解各种类型规划。
下面将简要介绍常用的几种求解整数规划的方法。
§2 分枝定界法对有约束条件的最优化问题(其可行解为有限数)的所有可行解空间恰当地进行系统搜索,这就是分枝与定界内容。
通常,把全部可行解空间反复地分割为越来越小的子集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。
在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,这样,许多子集可不予考虑,这称剪枝。
整数线性规划理论§1 概论1.1 定义规划中的变量(部分或全部)限制为整数时,称为整数规划。
若在线性规划模型整数线性规划。
目前所流行的求解整数规划的方法,往1.2如不加特殊说明,一般指整数线性规划。
对于整数线性规划模型大致可分为两类: 1o 变量全限制为整数时,称纯(完全)整数规划。
2o 变量部分限制为整数的,称混合整数规划。
1.3 整数规划特点 (i ) 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。
②整数规划无可行解。
例1 原线性规划为 21m in x x z +=0,0,5422121≥≥=+x x x x 其最优实数解为:45min ,45,021===z x x 。
LINGO1.lg4 LINGO11.lg4③有可行解(当然就存在最优解),但最优解值变差。
例2 原线性规划为 21m in x x z +=0,0,6422121≥≥=+x x x x其最优实数解为:23min ,23,021===z x x 。
若限制整数得:2m in ,1,121===z x x 。
LINGO2.lg4 LINGO21.lg4(ii ) 整数规划最优解不能按照实数最优解简单取整而获得。
1.4 求解方法分类:(i )分枝定界法—可求纯或混合整数线性规划。
(ii )割平面法—可求纯或混合整数线性规划。
(iii )隐枚举法—求解“0-1”整数规划: ①过滤隐枚举法; ②分枝隐枚举法。
(iv )匈牙利法—解决指派问题(“0-1”规划特殊情形)。
(v )蒙特卡洛法—求解各种类型规划。
下面将简要介绍常用的几种求解整数规划的方法。
§2 分枝定界法对有约束条件的最优化问题(其可行解为有限数)的所有可行解空间恰当地进行系统搜索,这就是分枝与定界内容。
通常,把全部可行解空间反复地分割为越来越小的子集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。
在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,这样,许多子集可不予考虑,这称剪枝。
这就是分枝定界法的主要思路。
分枝定界法可用于解纯整数或混合的整数规划问题。
在本世纪六十年代初由Land Doig 和Dakin 等人提出的。
由于这种方法灵活且便于用计算机求解,所以现在它已是解整数规划的重要方法。
目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂选址问题、背包问题及分配问题等。
设有最大化的整数规划问题A ,与它相应的线性规划为问题B ,从解问题B 开始,若其最优解不符合A 的整数条件,那么B 的最优目标函数必是A 的最优目标函数*z 的上界,记作z ;而A 的任意可行解的目标函数值将是*z 的一个下界z 。
分枝定界法就是将B 的可行域分成子区域的方法。
逐步减小z 和增大z ,最终求到*z 。
现用下例来说明:例3 求解下述整数规划 219040Max x x z +=⎪⎩⎪⎨⎧≥≤+≤+且为整数0,702075679212121x x x x x x解 (i )先不考虑整数限制,即解相应的线性规划B ,得最优解为:355.8779,8168.1,8092.421===z x x可见它不符合整数条件。
这时z 是问题A 的最优目标函数值*z 的上界,记作z 。
而0,021==x x 显然是问题A 的一个整数可行解,这时0=z ,是*z 的一个下界,记作z ,即3560*≤≤z 。
(ii )因为21,x x 当前均为非整数,故不满足整数要求,任选一个进行分枝。
设选1x 进行分枝,把可行集分成2个子集:44.8092][1=≤x ,514.8092][1=+≥x因为4与5之间无整数,故这两个子集的整数解必与原可行集合整数解一致。
这一步称为分枝。
这两个子集的规划及求解如下:问题1B : 219040Max x x z +=⎪⎩⎪⎨⎧≥≤≤≤+≤+0,40702075679212121x x x x x x最优解为:349,1.2,0.4121===z x x 。
问题2B : 219040Max x x z +=⎪⎩⎪⎨⎧≥≥≤+≤+0,5702075679212121x x x x x x最优解为:4.341,57.1,0.5121===z x x 。
再定界:3490*≤≤z 。
(iii )对问题1B 再进行分枝得问题11B 和12B ,它们的最优解为340,2,4:112111===z x x B327.14,00.3x 1.43,:122112===z x B再定界:341340*≤≤z ,并将12B 剪枝。
(iv )对问题2B 再进行分枝得问题21B 和22B ,它们的最优解为083,00.1x 5.44,:222121===z x B 22B 无可行解。
将2221,B B 剪枝。
于是可以断定原问题的最优解为: 340,2,4*21===z x x从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为:开始,将要求解的整数规划问题称为问题A ,将与它相应的线性规划问题称为问题B 。
(i )解问题B 可能得到以下情况之一:(a )B 没有可行解,这时A 也没有可行解,则停止. (b )B 有最优解,并符合问题A 的整数条件,B 的最优解即为A 的最优解,则停止。
(c )B 有最优解,但不符合问题A 的整数条件,记它的目标函数值为z 。
(ii )用观察法找问题A 的一个整数可行解,一般可取n j x j ,,1,0 ==,试探,求得其目标函数值,并记作z 。
以*z 表示问题A 的最优目标函数值;这时有 z z z ≤≤* 进行迭代。
第一步:分枝,在B 的最优解中任选一个不符合整数条件的变量j x ,其值为j b ,以][j b 表示小于j b 的最大整数。
构造两个约束条件][j j b x ≤ 和 1][+≥j j b x将这两个约束条件,分别加入问题B ,求两个后继规划问题1B 和2B 。
不考虑整数条件求解这两个后继问题。
定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出最优目标函数值最大者作为新的上界z 。
从已符合整数条件的各分支中,找出目标函数值为最大者作为新的下界z ,若无作用0=z 。
第二步:比较与剪枝,各分枝的最优目标函数中若有小于z 者,则剪掉这枝,即以后不再考虑了。
若大于z ,且不符合整数条件,则重复第一步骤。
一直到最后得到z z =*为止。
得最优整数解n j x j ,,1,* =。
§3 10-型整数规划10-型整数规划是整数规划中的特殊情形,它的变量j x 仅取值0或1。
这时j x 称为10-变量,或称二进制变量。
j x 仅取值0或1这个条件可由下述约束条件:10≤≤j x ,整数所代替,是和一般整数规划的约束条件形式一致的。
在实际问题中,如果引入 10-变量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。
我们先介绍引入10-变量的实际问题,再研究解法。
3.1 引入10-变量的实际问题3.1.1 投资场所的选定——相互排斥的计划例4 某公司拟在市东、西、南三区建立门市部。
拟议中有7个位置(点))7,,2,1( =i A i 可供选择。
规定在东区。
由321,,A A A 三个点中至多选两个; 在西区。
由54,A A 两个点中至少选一个;在南区,由76,A A 两个点中至少选一个。
如选用i A 点,设备投资估计为i b 元,每年可获利润估计为i c 元,但投资总额不能超过B 元。
问应选择哪几个点可使年利润为最大?解题时先引入10-变量)7,,2,1( =i x i 令⎩⎨⎧=.0,1点没被选中当点被选中当,,i A i A i x 7,,2,1 =i . 于是问题可列写成: i i i x c z ∑==71Max⎪⎪⎪⎩⎪⎪⎪⎨⎧=≥+≥+≤++≤∑=10,112765432171或i i i i x x x x x x x x B x b3.1.2 相互排斥的约束条件有两个相互排斥的约束条件 244521≤+x x 或 453721≤+x x 。
为了统一在一个问题中,引入10-变量y ,则上述约束条件可改写为:⎪⎩⎪⎨⎧=-+≤++≤+10)1(453724452121或y M y x x yM x x其中M 是充分大的数。
约束条件01=x 或 8005001≤≤x 可改写为⎩⎨⎧=≤≤108005001或y yx y 如果有m 个互相排斥的约束条件:m i b x a x a in in i ,,2,111 =≤++为了保证这m 个约束条件只有一个起作用,我们引入m 个10-变量),,2,1(m i y i =和一个充分大的常数M ,而下面这一组1+m 个约束条件m i M y b x a x a i i n in i ,,2,111 =+≤++ (1)11-=++m y y m (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,00,j j i i i i x x x c k P 当当 3,2,1=j .在构成目标函数时,为了统一在一个问题中讨论,现引入10-变量j y ,令⎪⎩⎪⎨⎧==>.00,0,1时种生产方式,即当不采用第时,种生产方式,即当采用第j x j j x j j y (3) 于是目标函数)()()(m in 333322221111x c y k x c y k x c y k z +++++= (3)式这个规定可表为下述3个线性约束条件:3,2,1,=≤j M y x j j (4) 其中M 是个充分大的常数。