整数规划特点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章整数规划
§1概论
1.1定义
规划中的变量(部分或全部)限制为整数时,称为整数规划。

若在线性规划模型中, 变量限制为整数,则称为整数线性规划。

目前所流行的求解整数规划的方法,往往只适用于整数线性规划。

目前还没有一种方法能有效地求解一切整数规划。

1.2 整数规划的分类
如不加特殊说明,一般指整数线性规划。

对于整数线性规划模型大致可分为两类: 1。

变量全限制为整数时,称纯(完全)整数规划。

2°变量部分限制为整数的,称混合整数规划。

3°变量只能取0或1时,称之为0-1整数规划。

整数规划特点
(i)原线性或划有最优解,当自变量限制为整数后,其整数规划解出现下述情况:
①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。

②整数规划无可行解。

例1原线性规划为
min z = X, + x2
s.t. 2xj + 4X2 =5, >0, x2 >0
其最优实数解为:= 09x2 =:,minz =:。

③有可行解(当然就存在最优解),但最优解值一定不会优于原线性规划的最优值。

例2原线性规划为
min z = Xj +改
s.t. 2xj + 4X2= 6, x} > 0, x2 > 0
3 3
其最优实数解为:=09X2 =-?minz = - O
若限制整数得:Xj =1,工2 =Lmin z = 2。

(ii)整数规划最优解不能按照实数最优解简单取整而获得。

1.3求解方法分类:
(i)分枝定界法一可求纯或混合整数线性规划。

(ii)割平面法一可求纯或混合整数线性规划。

(iii)隐枚举法一求解“0・1”整数规划:
①过滤隐枚举法;
②分枝隐枚举法。

(iv)匈牙利法一解决指派问题(“0・1”规划特殊情形)。

(v)蒙特卡洛法一求解各种类型规划。

下而将简要介绍常用的几种求解整数规划的方法。

§2分枝定界法
对有约束条件的最优化问题(其可行解为有限数)的可行解空间恰当地进行系统搜索,这就是分枝与定界内容。

通常,把全部可行解空间反复地分割为越来越小的子集, 称为分
枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。

在每次分枝后,凡是界限不优于已知可行解集目标值的那些子集不再进一步分枝, 这样,许多子集可不予考虑,这称剪枝。

这就是分枝定界法的主要思路。

分枝定界法可用于解纯整数或混合的整数规划问题。

在二十世纪六十年代初由Land Doig和Dakin等人提出。

由于这方法灵活且便于用计算机求解,所以现在它已是解整数规划的重要方法。

目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂选址问题、背包问题及分配问题等。

设有最大化的整数规划问题4,与它相应的线性规划为问题从解问题B开始, 若其最优解不符合A的整数条件,那么B的最优目标函数必是A的最优目标函数z,的上界,记作歹;而力的任意可行解的目标函数值将是/的一个下界z。

分枝定界法就是将B的可行域分成子区域再求其最大值的方法。

逐步减小)和增大z,最终求到现用下例来说明:例3求解下述整数规划
Max ? = 40工[+90工2
9工]+ 7X2 < 56
s.t. < 7工1 + 20X2 > 70
x1?x2 > 0且为整数
解(i)先不考虑整数限制,即解相应的线性规划夕,得最优解为:玉=4.8092,呵=1.8168 ,z = 355.8779
可见它不符合整数条件。

这时z是问题力的最优目标函数值/的上界,记作歹。

而石=0,x2 = 0显然是问题力的一个整数可行解,这时z = 0 ,是/的一个下界,记作z , 即0 <z*<356o (ii)因为 g当前均为非整数,故不满足整数要求,任选一个进行分枝。

设选气进行分枝,把可行集分成2个子集:
X, < [4.8092] =4, x, > [4.8092] +1 = 5
因为4与5之间无整数,故这两个子集内的整数解必与原可行集合整数解一致。

这一步称为分枝。

这两个子集的规划及求解如下:
问题用:Max z = 40Xj 4- 90x2
9Xi + 7X2 < 56
s.t < lx} + 20X2 2 70
0 < <4,X2 Z 0
最优解为:Xj =4.0?X2 =2.1,4 =349。

问题B2: Max z = 40玉 + 90x2
9工]+ 7X2< 56
s.t. « 7而 + 20X2 N 70
>5,X2 > 0
最优解为:Xj = 5.0,x2 = 1.57,Z] = 341.4O
再定界:0Vz*<349。

(iii)对问题坊再进行分枝得问题%和月2,它们的最优解为
B u : X] = 49X2 = 2,Z]] = 340
B n : x} = 1.43, x2 = 3.00,z】2 = 327.14
再定界:340<z* <341,并将妫2剪枝。

(iv)对问题坊再进行分枝得问题%和巳22,它们的最优解为
: x\ =5.44, x2 = 1.00, z22 = 308
勺2无可行解。

将用1,822剪枝。

于是可以断定原问题的最优解为:
x x = 4, x2 = 2, z = 340
从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为:
开始,将要求解的整数规划问题称为问题力,将与它相应的线性规划问题称为问题研
(i)解问题B可能得到以下情况之一:
(a)6没有可行解,这时刀也没有可行解,则停止.
(b)夕有最优解,并符合问题力的整数条件,6的最优解即为力的最优解,则停止。

(c)6有最优解,但不符合问题刀的整数条件,记它的目标函数值为5。

(ii)用观察法找问题力的一个整数可行解,一般可取易=0" = 1,・・•,〃,试探,
求得其目标函数值,并记作g。

以/表示问题力的最优目标函数值;这时有
z<z*<z
进行迭代。

第一步:分枝,在B的最优解中任选一个不符合整数条件的变量勺,其值为勺,以[屏]表示小于®的最大整数。

构造两个约束条件
X j < [bj]和x. >[bj] + l
将这两个约束条件,分别加入问题8,求两个后继规划问题用和夕2。

不考虑整数条件求解这两个后继问题。

定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出最优目标函数值最大者作为新的上界歹。

从已符合整数条件的各分支中,找出目标函数值为最大者作为新的下界冬,若无作用z = 0o
第二步:比较与剪枝,各分枝的最优目标函数中若有小于z者,则剪掉这枝,即以
后不再考虑了。

若大于W,且不符合整数条件,则重复第一步骤。

一直到最后得到
为止。

得最优整数解£,/=1,・・・,〃。

§3 0-1型整数规划
0-1型整数规划是整数规划中的特殊情形,它的变量习仅取值。

或1。

这时呵称
为0-1变量,或称二进制变量。

勺仅取值。

或1这个条件可由下述约束条件:
0 < < 1,整数
所代替,是和一般整数规划的约束条件形式一致的。

在实际问题中,如果引入0-1变 量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。

我们 先介绍引入0-1变量的实际问题,再研究解法。

3.1引入0-1变量的实际问题
3.1.1投资场所的选定一一相互排斥的计划
例4某公司拟在市东、西、南三区建立门市部。

拟议中有7个位置(点) 4(/ = 1,2,・・・,7)可供选择。

规定
在东区:由同,刀2,&三个点中至多选两个; 在西区:由A 4,A 5两个点中至少选一个; 在南区:
如选用4点,设备投资估计为九元,每年可获利润估计为q .元,但投资总额不能 超过
3元。

问应选择哪几个点可使年利润为最大?
解题时先引入0 -1变量也(z = 1,2,・・・,7) 令
1,当4•点被选中, 1 = 12 (7)
0,当耳.点没被选中.
于是问题可列写成:
7
Max z = 2% i=i
< B
i=\
X, + x 2 + x 3 < 2 x 4 + x 5 > 1
x 6 + x 7 > 1, x i = 0或1
3.1.2相互排斥的约束条件
① 有两个相互排斥的约束条件 5工]+ 4X 2 < 24 或 +3X 2 < 45。

为了统一在一个问题中,引入0-1变量V ,则上述约束条件可改写为:
]5工1 + 4X 2 <24 + yM <7七+3工2 <45 + (1-*
y = 0 或1
其中M 是充分大的数。

② 约束条件
%, = 0 或 500 < Xj < 800
可改写为
f500y<x } <800^
由&,4两个点中至少选一个。

x
i =
[y = 0或1
③如果有〃2个互相排斥的约束条件:
a i}x} H ----- F a in x n < ft. i = 1,2,・・•
为了保证这〃?个约束条件只有一个起作用,我们引入m个0 -1变量,•(,= 1,2,…,m) 和一个充分大的常数而下面这一组秫+ 1个约束条件
a i\X\ + * * * + a i n X n + Z = 1,2,・・・,秫(1)
凹+••• + * =秫-1 ⑵
就合于上述的要求。

这是因为,由于(2), m个北中只有一个能取0值,设=0, 代入(1),就只
有,=广的约束条件起作用,而别的式子都是多余的。

3.1.3关于固定费用的问题(Fixed Cost Problem)
在讨论线性规划时,有些问题是要求使成本为最小。

那时总设固定成本为常数,并在线性规划的模型中不必明显列出。

但有些固定费用(固定成本)的问题不能用一般线性规划来描述,但可改变为混合整数规划来解决,见下例。

例5某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成木就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。

所以必须全面考虑。

今设有三种方式可供选择,令
呵表示采用第/种方式时的产量;
勺表示采用第J种方式时每件产品的变动成本;
外表示采用第,种方式时的固定成本。

为了说明成本的特点,暂不考虑其它约束条件。

采用各种生产方式的总成本分别为k.
+ c.x;,当
4=7 7 = 123.
10, 当X, =0
在构成目标函数时,为了统一在一个问题中讨论,现引入0-1变量乃.,令
[1,当采用第/种生产方式,即勺>0时,
y f =< •/⑶
7[0,当不采用第.,种生产方式,即X- = 0时.
于是目标函数
minz = (k}y} +c1x1)4- (k2y2 + c2x7) 4- (k3y3 + c3x3)
(3)式这个规定可表为下述3个线性约束条件:
Xj—yjM, j = 1,2,3 (4) 其中"是个充分大的常数。

(4)式说明,当孔.>()时为必须为1;当孔.=()时只有为为0时
才有意义,所以(4)式完全可以代替(3)式。

3.2 0-1型整数规划解法之一(过滤隐枚举法)
解0-1型整数规划最容易想到的方法,和一般整数规划的情形一样,就是穷举法, 叩检查变量取值为0或1的每一种组合,比较目标函数值以求得最优解,这就需要检查变量取值的2〃个组合。

对于变量个数〃较大(例如〃>10),这几乎是不可能的。

因此
常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的最优解。

这样的方 法称为隐枚举法(Implicit Enumeration),分枝定界法也是一种隐枚举法。

当然,对有 些问题隐枚举法并不适用,所以有时穷举法还是必要的。

下面举例说明一种解0-1型整数规划的隐枚举法。

例 6 Max z = 3x }- 2x 2 + 5x 3
+ 2X 2 -x 3 < 2
x x + 4X 2 + x 3 < 4 Xj + x 2 < 3 4X 2 +x 3 < 6 Xj,x 2, x 3 = 0或 1
求解思路及改进措施:
(i) 先试探性求一个可行解,易看出(x 1?x 2,x 3) = (W)满足约束条件,故为一 个可行
解,且相应的目标函数值为z = 3。

(ii) 因为是求极大值问题,故求最优解时,凡是目标值zv3的解不必检验是否 满足约束条件即可删除,因它肯定不是最优解,于是应增加一个约束条件(目标值下界): 3x } -2X 2 +53 > 3 ,称该条件为过滤条件(Filtering Contraint)c 从而原问题等价于:
Max z = 3x }-2X 2 + 5x 3
x } + 2X 2 -x 3 <2 x } + 4X 2 +x 3 < 4 x 1 + x 2 < 3 4X 2 +x 3 < 6 x },x 2^x 3 = 0或 1
若用全部枚举法,3个变量共有8种可能的
组合,我们将这8种组合依次检验它 是否满足条
件(a)-(e),对某个组合,若它不满足(a),即不满足过滤条件,则(b)-(e)即 可行性条件不必再检验;若
它满足(a)—(e)且相应的目标值严格大于3,则进行(iii)。

(iii) 改进过滤条件。

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

按上述思路与方法,例6的求解过程可由下表来表示:
3x 1 一 2X 2 + 5X 3 > 3
(a) (b) (c)
(d)
(e)
(/)
从而得最优解(X;,X;,X;) = (1,0,1),最优值z*=8o
§4蒙特卡洛法(随机取样法)
前面介绍的常用的整数规划求解方法,主要是针对线性整数规划而言,而对于非线性整数规划目前尚未有一种成熟而有效的求解方法,因为非线性规划本身的通用有效解法尚未找到,更何况是非线性整数规划。

然而,尽管整数规划由于限制变量为整数而增加了难度;然而又由于整数解是有限个,于是为枚举法提供了方便。

当然,当自变量维数很大和取值范围很宽情况下,企图用显枚举法(即穷举法)计算出最优值是不现实的,但是应用概率理论可以证明,在一定的计算量的情况下,完全可以得出一个满意解。

例7已知非线性整数规划为:
Max z =
—8X| — 2%2 — 3乂3 —工4 — 2工5
<99。

= 1,・・・,5)
X] + 工2 + 工3 + 乂4 + 工5 - 400
s.t. <
x} + 2X2+2X3 + X4 + 6X5 < 800
2x} +x2 +6巧< 200
x3 +X4 +5X5 < 200
对该题,目前尚无有效方法求出准确解。

如果用显枚举法试探,共需计算(100)5=10】°个点,其计算量非常之大。

然而应用蒙特卡洛去随机计算1。

6个点,便可找到满意解,那么这种方法的可信度究竟怎样呢?
下而就分析随机取样采集1。

6个点计算时,应用概率理论来估计一下可信度。

不失一般性,假定一个整数规划的最优点不是孤立的奇点。

假设目标函数落在高值区的概率分别为0.01, 0.00001,则当计算1。

6个点后,有任一个点能落在高值区的概率分别为
1 一0.991°°°°°% 0.99 …99(100多位),
l-O.99999lo(xxx)o« 0.999954602o
解(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(l)=sum(x)-400;
g(2)=x(l) +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 (5state', sum (clock));
p0=0;
tic
for i=l:10"5
x=99*rand(5, 1);
xl=floor (x);x2=ceil(x);
[f, g]=mengte(xl);
if sum(g<=0) ~4
if pO<=f
xO=xl;pO=f;
end
end
[f, g]=mengte(x2);
if sum(g<=0) ~4
if pO<=f
x0=x2;pO=f;
end
end
end
xO, pO
toe
§5整数规划的计算机解法
整数规划问题的求解可以使用Lingo等专用软件。

对于一般的整数规划规划问题,无法直接利用Matlab的函数,必须利用Matlab编程实现分枝定界解法和割平而解法。

但对于指派问题等特殊的0-1整数规划问题或约束矩阵力是幺模矩阵时,有时可以直接利用Matlab的函数linprogo
例8求解下列指派问题,已知指派矩阵为
382103
87297
64275
84235
9106910
解:编写Matlab程序如卜:c=[3 8 2 10 3;8 729 7;6 4275 8 4 2 3 5; 9 10 6 9 10];
c=c (:);
a=zeros(10,25);
for i=l:5
a(i z (i-1)*5+l:5*i)=l;
a(5+i z i:5:25)=l;
end
b=ones (10,1);
[x,y]=linprog(c,[], [],a,b,zeros(25,1),ones(25,1)) 求得最优指派方案为x 15 =
x 23 = x 32 = x 44 = x 51 = 1 ,最优值为21o
习题二
1.用分枝定界法解:
Max z = X] +x 2
9 51 X, +——X. <—— 1
14 2 14 _ 2x, + x, < —
1 匕 3 XpX
2 > 0,玉,工2整数
2. 试将下述非线性的0-1规划问题转换成线性的0-1规划问题
max z = X] + x }x 2 一x 3
—2Xj + 3X 2 + X3 < 3
七=0或 1, (j = 1,2,3)
3. 某钻井队要从以下10个可供选择的井位中确定5个钻井探油,使总的钻探费 用为
最小。

若10个井位的代号为',%•••,A。

,相应的钻探费用为6,勺,・・・,乌0,并旦 井位选择上要满足下列限制条件:
(1) (2) (3)
在Ss ,S6,S" 中最多只能选两个;试建立这个问题的整数规划模型。

或选择S]和$7,或选择钻探$9;
选择了 $3或$4就不能选、5,或反过来也一样;。

相关文档
最新文档