整数线性规划理论

整数线性规划理论
整数线性规划理论

整数线性规划理论

§1 概论

1.1 定义

规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型整数线性规划。目前所流行的求解整数规划的方法,往

1.2

如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类: 1o 变量全限制为整数时,称纯(完全)整数规划。 2o 变量部分限制为整数的,称混合整数规划。 1.3 整数规划特点 (i ) 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。 ②整数规划无可行解。 例1 原线性规划为 21min x x z +=

0,0,5422121≥≥=+x x x x 其最优实数解为:4

5min ,4

5,021===z x x 。LINGO1.lg4 LINGO11.lg4

③有可行解(当然就存在最优解),但最优解值变差。 例2 原线性规划为 21m i n x x z +=

0,0,6422121≥≥=+x x x x

其最优实数解为:2

3min ,23,021===z x x 。

若限制整数得:2min ,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,7020756792

12121x 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

,570207567921

2121x 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 B

327.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 ∑==7

1Max

?????

????=≥+≥+≤++≤∑=10,

11

2

765

43217

1或i i i i x x x x x x x x B x b

3.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 y

x y 如果有m 个互相排斥的约束条件:

m i b x a x a i

n 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) 于是目标函数

)()()(min 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 是个充分大的常数。(4)式说明,当0>j x 时j y 必须为1;当0=j x 时只有j y 为0时才有意义,所以(4)式完全可以代替(3)式。

3.2 10-型整数规划解法之一(过滤隐枚举法)

解10-型整数规划最容易想到的方法,和一般整数规划的情形一样,就是穷举法,即检查变量取值为0或1的每一种组合,比较目标函数值以求得最优解,这就需要检查变量取值的n 2个组合。对于变量个数n 较大(例如10>n ),这几乎是不可能的。因此常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的最优解。这样的方法称为隐枚举法(Implicit Enumeration ),分枝定界法也是一种隐枚举法。当然,对有些问题隐枚举法并不适用,所以有时穷举法还是必要的。

下面举例说明一种解10-型整数规划的隐枚举法。 例6 321523M a x x x x z +-=

?????

????=≤+≤+≤++≤-+1

0,,6

4344223213

221321321或x x x x x x x x x x x x x

求解思路及改进措施:

(i ) 先试探性求一个可行解,易看出)0,0,1(),,(321=x x x 满足约束条件,故为一个可行解,且3=z 。

(ii ) 因为是求极大值问题,故求最优解时,凡是目标值3

(iii ) 改进过滤条件。 (iv ) 由于对每个组合首先计算目标值以验证过滤条件,故应优先计算目标值z 大的组合,这样可提前抬高过滤门槛,以减少计算量。

§4 蒙特卡洛法(随机取样法)

前面介绍的常用的整数规划求解方法,主要是针对线性整数规划而言,而对于非线性整数规划目前尚未有一种成熟而准确的求解方法,因为非线性规划本身的通用有效解法尚未找到,更何况是非线性整数规划。

然而,尽管整数规划由于限制变量为整数而增加了难度;然而又由于整数解是有限个,于是为枚举法提供了方便。当然,当自变量维数很大和取值范围很宽情况下,企图用显枚举法(即穷举法)计算出最优值是不现实的,但是应用概率理论可以证明,在一定的计算量的情况下,完全可以得出一个满意解。

例7 已知非线性整数规划为:

543212

5

242322212328 243Max x x x x x x x x x x z -----++++=

?????

????≤++≤++≤++++≤++++=≤≤200

5200

62800622400)5,,1(9905433

215432154321x x x x x x x x x x x x x x x x i x i 对该题,目前尚无有效方法求出准确解。如果用显枚举法试探,共需计算10

510)100(=个点,其计算量非常之大。然而应用蒙特卡洛去随机计算610个点,便可找到满意解,那么这种方法的可信度究竟怎样呢?

下面就分析随机取样采集610个点计算时,应用概率理论来估计一下可信度。 不失一般性,假定一个整数规划的最优点不是孤立的奇点。

假设目标函数落在高值区的概率分别为0.01,0.00001,则当计算610个点后,有任一个点能落在高值区的概率分别为

多位)

100(9999.099

.011000000

≈-, 析:1

1

1

()1()1()n n n

i i i i i i P X P X P X ====-=-

999954602.099999.011000000

≈-。

解 (i )首先编写M 文件mente.m 定义目标函数f 和约束向量函数g ,程序如下: function [f,g]=mengte(x);

f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)... -x(4)-2*x(5); g(1)=sum(x)-400;

g(2)=x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800; g(3)=2*x(1)+x(2)+6*x(3)-200; g(4)=x(3)+x(4)+5*x(5)-200;

(ii )编写如下程序求问题的解: rand('state',sum(clock)); p0=0; tic

for i=1:10^5

x=99*rand(5,1);

x1=floor(x);x2=ceil(x); [f,g]=mengte(x1); if sum(g<=0)==4 if p0<=f

x0=x1;p0=f; end end

[f,g]=mengte(x2); if sum(g<=0)==4 if p0<=f

x0=x2;p0=f; end end end x0,p0 toc

习 题 二

1. 用分枝定界法解:

21Max x x z +=

???

?

?

?

???≥≤+-≤+整数21212

121,,0,3121451149x x x x x x x x

2. 试将下述非线性的10-规划问题转换成线性的10-规划问题 3211max x x x x z -+=

???==≤++-)3,2,1(103

32321j x x x x j

,或

3. 某钻井队要从以下10个可供选择的井位中确定5个钻井探油,使总的钻探费用

为最小。若10个井位的代号为1021,,,s s s ,相应的钻探费用为1021,,,c c c ,并且井位选择上要满足下列限制条件:

(1) 或选择1s 和7s ,或选择钻探9s ; (2) 选择了3s 或4s 就不能选5s ,或反过来也一样; (3) 在8765,,,s s s s 中最多只能选两个;试建立这个问题的整数规划模型。

MATLAB求解线性规划含整数规划和01规划问题.pdf

MATLAB 求解线性规划(含整数规划和0-1规划)问题 线性规划是数学规划中的一类最简单规划问题,常见的线性规划是一个有约束的,变量范围为有理数的线性规划。如: max 712z x y =+ 9430045200s.t 310300,0 x y x y x y x y +≤??+≤??+≤??≥? 对于这类线性规划问题,数学理论已经较为完善,可以有多种方法求解此类问题。但写这篇文章的目的并不是为了介绍数学理论,我们这里主要讲解如果利用工具求解这一类线性规划问题。 最著名,同时也是最强大的数学最优化软件是LINGO/LINDO 软件包,它能够求解多种的数学规划问题,同时还提供了多种的分析能力。但LINGO 软件并不容易上手,同时,应用LINGO 的场合一般是大规模的线性规划问题,小小的线性规划完全可以不使用它。一个更受科研人员欢迎的数学软件是MATLAB ,它以功能强大而称著,并有数学软件中的“航空母舰”之称。我们这里就是要学习使用MATLAB 软件求解线性规划(含整数规划和0-1规划)问题。 为了使得不熟悉MATLAB 的人员也能够使用MATLAB 进行线性规划问题求解,本文将对MATALB 中使用到的函数和过程以及结果进行详细的分析,最后会对每一个问题都给出一个可以完全“套用”的MATLAB 程序。 我们首先从上面的线性规划问题开始,为了便于表达,将上面的式子写成矩阵形式: max 712z x y =+ 9430045200s.t 310300,0x y x y ???????? ? ??≤? ? ? ???? ? ???????≥? 于是约束就表达为了一个Ax b ≤不等式。 求解MATLAB 线性规划时,最常用的函数是linprog 函数,下面来介绍一下这个函数的使用。 打开MATLAB 帮助文档(PS:帮助文档的内容是最全的,只要你的英文过了专业8级),可以看到linprog 函数求解的是具有如下标准形式的线性规划:

整数线性规划理论

整数线性规划理论 §1 概论 1.1 定义 规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型整数线性规划。目前所流行的求解整数规划的方法,往 1.2 如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类: 1o 变量全限制为整数时,称纯(完全)整数规划。 2o 变量部分限制为整数的,称混合整数规划。 1.3 整数规划特点 (i ) 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。 ②整数规划无可行解。 例1 原线性规划为 21min x x z += 0,0,5422121≥≥=+x x x x 其最优实数解为:4 5min ,4 5,021===z x x 。LINGO1.lg4 LINGO11.lg4 ③有可行解(当然就存在最优解),但最优解值变差。 例2 原线性规划为 21m i n x x z += 0,0,6422121≥≥=+x x x x 其最优实数解为:2 3min ,23,021===z x x 。 若限制整数得:2min ,1,121===z x x 。LINGO2.lg4 LINGO21.lg4 (ii ) 整数规划最优解不能按照实数最优解简单取整而获得。 1.4 求解方法分类: (i )分枝定界法—可求纯或混合整数线性规划。 (ii )割平面法—可求纯或混合整数线性规划。 (iii )隐枚举法—求解“0-1”整数规划: ①过滤隐枚举法; ②分枝隐枚举法。 (iv )匈牙利法—解决指派问题(“0-1”规划特殊情形)。 (v )蒙特卡洛法—求解各种类型规划。 下面将简要介绍常用的几种求解整数规划的方法。 §2 分枝定界法 对有约束条件的最优化问题(其可行解为有限数)的所有可行解空间恰当地进行

整数线性规划

整数线性规划 【数学模型】 m in T x f x st. A x b ?≤ A eq x b eq ?= lb x ub ≤≤ i x 取值为整数 其中f , x , b , beq , lb 和ub 为向量,A 和Aeq 为矩阵。 【函数】 intprog 【说明】 在Matlab 中无求解整数线性规划的现成函数,利用Matlab 的线性规划函数linprog 来编写整数线性规划函数,输入与输出与linprog 类似,采用分枝定界法来实现。 Matlab 主程序intprog 如下: function [x,fval,status] = intprog(f,A,B,I,Aeq,Beq,lb,ub,e) %整数规划求解函数 intprog() % 其中 f 为目标函数向量 % A 和B 为不等式约束 Aeq 与Beq 为等式约束 % I 为整数约束 % lb 与ub 分别为变量下界与上界 % x 为最优解,fval 为最优值 % 控制输入参数 if nargin < 9, e = 0.00001; if nargin < 8, ub = []; if nargin < 7, lb = []; if nargin < 6, Beq = []; if nargin < 5, Aeq = []; if nargin < 4, I = [1:length(f)]; end , end , end , end , end , end %求解整数规划对应的线性规划,判断是否有解 options = optimset('display','off'); [x0,fval0,exitflag] = linprog(f,A,B,Aeq,Beq,lb,ub,[],options); if exitflag < 0 disp('没有合适整数解'); x = x0; fval = fval0; status = exitflag; return ; else %采用分支定界法求解

整数线性规划word版

第三章 整数线性规划 本章, 我们介绍三种解决整数线性规划问题的软件: 第一种: MATLAB 中的optimization toolbox 中的若干程序; 第二种: LINDO 软件; 第二种: LINGO 软件. 1. MATLAB 程序说明 程序名: intprogram, L01p_e, L01p_ie, transdetobi, biprogram intprogram 是利用分支定界法解决整数规划问题, 是全部的整数规划问题; L01p_e 是利用枚举法解决0-1规划问题, 变量要求全部为0或者1; L01p_ie 是利用隐枚举法解决0-1规划问题, 变量要求全部为0或者1; Transdetobi 是枚举法和隐枚举法中利用到的将十进制数转化为二进制数的函数; Biprogram 是MATLAB6.5以上版本中有的求解0-1规划的函数的程序. intprogram 执行实例1: 12 121212max 2010s.t.5424 2513 ,0, f x x x x x x x x =++≤+≤≥ 且为整数 在命令窗口的程序执行过程和结果如下: >> c=[-20,-10]; %将最大转化为最小; >> a=[5,4;2,5]; >> b=[24;13]; >> [x,f]=intprogram(c,a,b,[0;0],[inf;inf],[],0,0.0001) % c,a,b 之后[0;0] is the value of low bound;[inf;inf] is the value of up bound;[] is the initialization;0 is the number of the equation constraints; 0.0001 is the concise rate. x = 4.0000 1.0000 f = -90 intprogram 执行实例2: 书中例题3.3.1 在命令窗口的程序执行过程和结果如下: >> c=[-1,-1]; >> a=[-4,2;4,2;0,-2]; >> b=[-1;11;-1];

探讨线性规划整数最优解的调整

探讨线性规划整数最优解的调整 对于高中的二元一次不等式(组)与平面区域这个知识点是不难的,不过对于解题的规范性学生还是要加强的。在这里就和大家探讨必修五课本当中的一道关于线性规划要求整数解的问题。 例1:某工厂用A ,B 两种配件生产甲,乙两种产品,每生产一件甲产品使用4个A 配件耗时1h ,每生产一件乙产品使用4个B 配件耗时2h ,该厂每天最多可以从配件厂获得16个A 配件和12个B 配件,按每天工作8h 计算,该厂所有可能的日生产安排是什么?若生产一件甲产品获利2万元,生产一件乙产品获利3万元,问哪种生产安排利润最大? 分析:这是一道典型的线性规划的问题,首先可以设甲,乙两种产品分别为x,y 件,从而列出约束条件。在这道题目中,所设的是产品个数的问题,那就要注意x,y ∈N +。 解:设甲,乙两种产品分别为x,y 件,由题意可得: ???????????∈≥≥≤≤≤++ N y x,0y 0x 164y 164x 8 2y x 接着还要求解第二问,这就涉及到了目标函数,设利润为Z ,则Z=2x+3y 。 当目标函数刚好与可行域交于点M (4,2)时,能使获得的利润最大,Z max =14(万元) M(4,2)

此题中的点M 是刚好为整数点,而假设M 不是为整数点时,那又应该如何寻找其最优解?接下来再以必修五课本的一道为例题. 评析:对于此道类型的题目求出来的最优解恰好能符合条件,难度没那么大,但是有些题目对于最优解还要再进一步进行讨论。 例2:要将两种大小不同的钢板截成A ,B ,C 三种规格,每张钢板可同时截得三种规格的小钢板的块数如下表所示: 问题1:今需要A ,B ,C 三种规格的成品分别15,18,27,用数学关系式和图形表示上述要求。 问题2:各截这两种干板多少张可得所需A ,B ,C 三种规格成品,且使所用钢板张数最少? 分析:这种也是典型的线性规划的题目,问题1难度就是读懂题目,然后根据题意列出约束条件;而对于问题2即是求最优解,而此题的最优解也是要取整数,而这个整数最优解相对上一题就较难点。 解:设需截第一种钢板x 张,第二种钢板y 张,则 ?????????? ?∈≥≥≥+≥+≥++ N y x,0y 0x 27 3y x 182y x 15y 2x 则图形中的阴影部分的所有整数点就是可截的方法。接着还要求解问题 规格类型 钢板类型 A 规格 B 规格 C 规格 第一种钢板 2 1 1 第二种钢板 1 2 3

用“小范围搜索法”求“线性规划问题”的最优整数解

用“小范围搜索法”求“线性规划问题”的最优整数解 笔者对教科书中的全部7个线性规划的实际应用问题进行了研究和分类。其中1个问题(教科书第61页例3)的最优解不是整数解,最优解有且只有一个,最优解显然在边界折线的顶点处,此为第一类问题;有3个问题(教科书第64页练习第2题、第65页习题第3题,第66页研究课题与实习作业)的最优解为整数解,最优整数解有且只有一个,最优解整点显然在边界折线的顶点处,此为第二类问题;另有3个问题(教科书第63页例4、第65页习题第4题、第87页复习参考题七A组第16题)的最优解为整数解,最优整数解可能不止一个,最优解整点不在边界折线的顶点处,或虽在边界折线的顶点处但并不显然,此为第三类问题。第一、第二类问题的最优解可以通过解一个二元一次方程组直接得到,学生比较容易掌握。第三类问题的最优解不能通过解一个二元一次方程组直接得到,必须通过观察图形或计算检验去寻找,学生不容易掌握,学习困难比较大。 为了解决这类寻找最优整数解的困难,笔者采用“小范围搜索法”进行教学。该方法的优点在于,把在大范围同寻找最优整数解转化为在小范围内寻找最优整数解,而且在通过观察图形作出准确判断有困难的情况下,通过计算检验作出准确判断的工作量比较小。其步骤为(1)在边界折线顶点附近的小范围内搜索一个可行域内的年整点;(2)过该点作一条斜率为-(其中A,B分别为目标函数中变量x,y的系数)的直线,与可行域边界折线相交得到一个小范围的区域;(3)在这个小范围区域内继续搜索全部最优整数解。 用“小范围搜索法”成功解题的关键是分析,要把分析贯彻于解题的全过程,观察图形要分析,计算检验也要分析,通过分析充分发掘线性约束条件和线性目标函数的特殊性,使搜索范围缩到最小,计算的工作量减到最小。下面以教科书中的题目为例,说明“小范围搜索法”的运用。 例1教科书第65页习题题,题目略。 本题的线性约束条件 线性目标函数z=200x+150y,其中x,y分别为大房间与小房间的间数。作出可行域如图1。 (1)搜索一个可行域内邻近边界折线顶点的整点。 解方程组 得到点A(,),由于点A的坐标不是整数,故不是最优解。由于要使目标函数取最大值,因此要寻找可行域右上侧靠近边界或边界上的整点。与点A邻近的整点共有4个(2,8),(2,9),(3,8)与(3,9),显然点(2,8)是可行域内的整点,点(3,9)不是可行域内的整点。记点(a,b)处的目标函数的值为z(2,8),所以还应检验点(2,9)与(3,8)是否在可行域内。注意到目标函数z=200x+150y=150(x+y)+50x,而2+9=3+8,所以必有z (3,8)>z(2,9),所以应先检验点(3,8)是否在可行域内。观察与计算都表明该点在可行域内。记点(3,8)为B,B即为搜索到的可行域内邻近边界折线顶点的整点。 (2)作出可行域内的小范围搜索区域。 算出z(3,8)=1800,过B作直线200x+150y=18004x+3y=36.

线性规划中的最优整数解

线性规划中的最优整数解 线性规划中的最优解,就是在线性约束条件下使目标函数取得最大值或最小值的可行 解,而求最优整数解,是同学们的棘手问题,下面以例题的形式讲讲如何求最优解。 例. 某人承揽了一项业务:需做文字标牌6个,绘画标牌5个。现有两种规格的原料, 甲种规格每张32m ,可做文字标牌1个、绘画标牌2个;乙种规格每张22m ,可做文字标 牌2个、绘画标牌1个,求两种规格的原料各用多少张才能使总的用料面积最小?最小用料 面积是多少? 分析:将已知数据列成如下所示的表格: 解法一:设甲种规格的原料用x 张,乙种规格的原料用y 张,总的用料面积为z 2m ,则 z=3x+2y x+2y ≥6 2x+y ≥5 x ≥0 y ≥0 其可行域如图所示: 解方程组 x+2y=6 2x+y=5 得M 的坐标为47 (,)33

当直线z=3x+2y过点M 47 (,) 33 时z最小,此时 4726 32 333 z=?+?= 由题意可知,点M 47 (,) 33 不是最优解,因为此问题最优解(x,y)中x,y应都是非负 整数,所以目标函数z的最小值一定是大于26 3 的整数,且x,y都是非负整数。取z=9,得 3x+2y=9,其非负整数解是(1,3)和(3,0),但点(3,0)不在可行域内,舍去,所以 点(1,3)是最优解, min 9 z= 解法二:由解法一可知,点M 47 (,) 33 不是最优解,这时可求出可行域内左下侧靠近 边界的整点,依次为A(0,5),B(1,3),C(2,2),D(3,2),E(4,1),F(5,1),G(6,0),将这些点的坐标分别代入目标函数z=3x+2y,求出z的各对应值,经检验可知,在整点B(1,3)处z取得最小值9。 答:甲种规格的原料用1张,乙种规格的原料用3张时,总的用料面积最小,其最小用料面积为92 m。 对于线性规划中的最优整数解问题,当解方程组得到的解不是整数解时,可采用如下的方法: 1.调整优值法:先求“非整点最优解”及“最优值”,根据题意调整“最优值”,再求目标函数中的整数解,便可得出最优整数解。课本人教A版必修5第89页例6求最优整数解用的就是这种调整优值法。 2.代入验证法:在可行域内求出与“边界”(求得非整点最优解的两条直线)靠近的所有整点,代入目标函数,再进行比较就可得出最优整数解。

整数线性规划理论(优选.)

最新文件---------------- 仅供参考--------------------已改成-----------word 文本 --------------------- 方便更改 赠人玫瑰,手留余香。 整数线性规划理论 §1 概论 1.1 定义 规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。目 前还没有一种方法能有效地求解一切整数规划。 1.2 整数规划的分类 如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类: 1o 变量全限制为整数时,称纯(完全)整数规划。 2o 变量部分限制为整数的,称混合整数规划。 1.3 整数规划特点 (i ) 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。 ②整数规划无可行解。 例1 原线性规划为 21m in x x z +=

0,0,5422121≥≥=+x x x x 其最优实数解为:4 5min ,45 ,021===z x x 。LINGO1.lg4 LINGO11.lg4 ③有可行解(当然就存在最优解),但最优解值变差。 例2 原线性规划为 21m in x x z += 0,0,6422121≥≥=+x x x x 其最优实数解为:2 3min ,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 分枝定界法 对有约束条件的最优化问题(其可行解为有限数)的所有可行

相关文档
最新文档