0-1型整数线性规划模型理论
0-1规划

0-1规划0-1规划是决策变量仅取值0或1的一类特殊的整数规划。
在处理经济管理中某些规划问题时,若决策变量采用 0-1变量即逻辑变量,可把本来需要分别各种情况加以讨论的问题统一在一个问题中讨论。
目录简介应用范围隐枚举法简介应用范围隐枚举法展开简介0-1规划0-1 Programming一种特殊形式的整数规划。
这种规划的决策变量仅取值0或1,故称为0-1变量或二进制变量,因为一个非负整数都可以用二进制记数法用若干个0-1变量表示。
0-1变量可以数量化地描述诸如开与关、取与弃、有与无等现象所反映的离散变量间的逻辑关系、顺序关系以及互斥的约束条件,因此0-1规划非常适合描述和解决如线路设计、工厂选址、生产计划安排、旅行购物、背包问题、人员安排、代码选取、可靠性等人们所关心的多种问题。
实际上,凡是有界变量的整数规划都可以转化为0-1规划来处理。
由于0-1规划具有深刻的背景和广泛的应用,几十年来一直受到人们的重视。
求解0-1规划的方法主要是隐枚举法(如分枝定界法)。
对一些特殊问题还有一些更加有效的方法,例如对指派问题,用D.柯尼希发明的匈牙利法求解更显方便有效。
应用范围0-1规划主要用于求解互斥的计划问题、约束条件互斥问题、固定费用问题和分派问题等方面。
互斥计划问题如确定投资项目,选定投资场所,决定投产产品等。
设有几种产品,各产品投产后获得的利润为c j,投资限额为B,规定决策变量xj的取值为1则此0-1规划的数学模型为23式中max表示求极大值;s.t.表示“受约束于”;z是目标函数;aj是各种产品的投资额。
约束条件互斥问题设有m个互相排斥的约束条件(≤型)ai1x1+ai2x2+…+ainxn≤bi(i=1,2,…,m)为了保证这m个约束条件中只有一个起作用,引入m个0-1变量y i和一个足够大的常数M,构造m+1个约束条件ai1x1+ai2x2+…+ainxn≤bi+yiMy1+y2+…+ym=m-1因为m个yi中只有一个能取0值,所以只有一个约束条件能起作用。
第四讲 0 1整数线性规划要点

? ??
x25 、? 项x1目3和4只能选中一项 x3i 、? 项0,1目5被i ?选1中,2,的? 前,5提是项目 1被选中;如何
在 满足上述条件下选择一个最好的投资
解:设 xi为决方策案变,量使(投i资? 1收,2益,?最,5大)
?1 投资第i个项目
xi ? ?
?0 不投资第i个项目
项目
1 2 3 4
整数规划建模举例
练习1 :组合投资问题。
某财团有 B 万元的资金,经过其考察选中 n个投资
项目,其中第 j个项目需投资金额为 a j 万元,预
计获利 c j( j ? 1,2..., n)万元,由于种种原因,
有两个附加条件:第一,项目 2和项目3至少选择一
个;第二项目 5,6,7恰好选择两个。问应如何选
例1:一个旅行者要到某地作两周的带包旅行 ,装背包时,他 发现除了已装的必需物件外,他还能再装5公斤重的东西.他 打算从下列4种东西中选取,使增加的重量不超过5公斤又 能使使用价值最大.这4种东西的重量和使用价值( 这里用打 分数的办法表示价值) 如下表所示,问旅行者应该选取哪些 物件为好?
解:建立模型为 max Z=6x 1 ? 7 x 2 ? 3 x3 ? 9 x4
在 满足上述条件下选择一个最好的投资
解:设 xi为决方策案变,量使(投i资? 1收,2益,?最,5大)
?1 投资第i个项目
xi ? ?
?0 不投资第i个项目
项目
1 2 3 4
投资额 (万元) 210 300 100 130
投资收益 (万元) 150 210 60 80
Z表示投资效益
5
260
180
max=150*x1+210*x2 +60*x3+80*x4+180* x5; 210*x1+300*x2+100 *x3+130*x4+260*x5 <=600; x1+x2+x3>=1; x3+x4=1; x5<=x1; @bin(x1); @bin(x2); @bin(x3); @bin(x4); @bin(x5);
整数线性规划

分枝定界法的理论基础:
1 2 k , i j (1) max cx max (max cx, max cx, , max cx)
x x1 x 2 x k
(2) 若 i j ,则 max cx max cx
xi xi x
分 枝
给定整数规划问题IP max z C T X
若x 的某个分量 xi 不是整数,
0
0
则将 IP分解为两个子问题
max z C X AX b X 0 X为整数向量 xi [ xi0 ]
T max z C X AX b X 0 X为整数向量 xi [ xi0 ] 1
记 z0 z
x1 4, x1 5
将问题B0分解为两个子问题B1和B2(分枝), 分别解B1,B2得 B1: x1=4, x2=2.10, z1=349 B2: x1=5, x2=1.57, z2=341
max z 40 x1 90 x2 max z 40 x1 90 x2 9 x1 7 x2 56 7 x 20 x 70 1 2 x1 4 B1 x1 , x2 0 9 x1 7 x2 56 7 x 20 x 70 1 2 x1 5 B2 x1 , x2 0
4、几点说明 (1)、如果要求目标的最大值
max z cij xij
令
bij M cij
i
j
其中
M max{ cij }
效率矩阵可变为B,将分配问题转换为一个极 小化问题
min z
'
b x
ij i j
ij
(2)、如果分配问题中,人员数 m 不等于工作数 n 时,可以类似于不平衡运输问题建立模型的 方法,增加虚拟人员或虚拟工作。
用Lingo求解整数(0-1)规划模型

1、建立数学模型, 2、用lingo循环语句编写程序.
上机作业题 人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一
定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
班次
时间段
人数 班次
时间段
人数
1
6:00~9:00
例 4 求函数 z x 22 y 22 的最小值.
例 4 求函数 z x 22 y 22 的最小值.
解: 编写Lingo 程序如下:
min=(x+2)^2+(y-2)^2; @free(x); 求得结果: x=-2, y=2
二、Lingo 循环编程语句
(1) 集合的定义 包括如下参数: 1) 集合的名称.
12,8 3,0; enddata
!数据赋值;
max=@sum(bliang(i):a(i)*x(i)); !目标函数;
@for(yshu(j):@sum(bliang(i):x(i)*c(j,i))<=b(j));
!约束条件;
例6:人员选拔问题
队员号码 身高 / m 位置 队员号码 身高 / m 位置
例 2 用Lingo软件求解整数规划问题
min z 2 x1 5 x2 3 x3
4 x1 x2 x3 0
2
x1
4 x2
2 x3
2
x1
x2
x3
2
xi 0 且取整数, i 1, 2, 3
Lingo 程序:
min=2*x1+5*x2+3*x3; -4*x1-x2+x3>=0; -2*x1+4*x2-2*x3>=2; x1-x2+x3>=2; @gin(x1);@gin(x2);@gin(x3);
整数线性规划及0-1规划 图文

例3 选课策略
课号
课名
学分
所属类别
先修课要求
1
微积分
5
数学
2
线性代数
4
数学
3
最优化方法
4
数学;运筹学 微积分;线性代数
4
数据结构
3
数学;计算机
计算机编程
5
应用统计
4
数学;运筹学 微积分;线性代数
6
计算机模拟
3
计算机;运筹学
计算机编程
7
计算机编程
2
计算机
8
预测理论
2
运筹学
应用统计
9
数学实验
3
运筹学;计算机 微积分;线性代数
7 计算机编程
计算机
8
预测理论
运筹学
9
数学实验 运筹学;计算机
约束条件
最少2门数学课, 3门运筹学课, 2门计算机课。
xi=1 ~选修课号i 的 课程(xi=0 ~不选)
目标函数 选修课程总数最少
9
Min Z xi i1
x 1x2x3x4x52
x3x5x6x8x93 x4x6x7x92
小型 中型 大型
现有量
钢材(吨)
1.5
3
5
600
劳动时间(小时) 280
250
400
60000
利润(万元)
2
3
4
• 制订月生产计划,使工厂的利润最大。
• 如果生产某一类型汽车,则至少要生产80辆,
那么最优的生产计划应作何改变?
汽车厂生产计划
模型建立
设每月生产小、中、大型 汽车的数量分别为x1, x2, x3
用Lingo求解整数(0-1)规划模型.

Lingo 程序: max=2*x1+5*x2+3*x3+4*x4;
-4*x1+x2+x3+x4>=0; -2*x1+4*x2+2*x3+4*x4>=1; x1+x2-x3+x4>=1; @bin(x1);@bin(x2);@bin(x3);@bin(x4);
温州大学城市学院
例 2 用Lingo软件求解整数规划问题 min z 2 x1 5 x2 3 x3
温州大学城市学院
注意:
Lingo 默认变量的取值从0到正无穷大,
变量定界函数可以改变默认状态.
@free(x): 取消对变量x的限制(即x可取任意实数值)
例 4 求函数 z x 2 y 2 的最小值.
2 2
温州大学城市学院 例 4 求函数 z x 2 y 2 的最小值.
,8
温州大学城市学院
温州大学城市学院
上机作业题
要求:
1、建立数学模型,
2、用lingo循环语句编写程序.
温州大学城市学院
上机作业题
人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一 定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
成绩 甲 乙 丙 丁 自由泳 / s 56 63 57 55 蛙泳 / s 74 69 77 76 蝶泳 / s 61 65 63 62 仰泳 / s 63 71 67 62
甲, 乙, 丙, 丁 四名队员各自游什么姿势 , 才最有可能取得好成绩?
温州大学城市学院
整数规划方法

割平面法是R.E.Gomory于1958年提出的一种方法,它主要 用于求解纯ILP。 割平面法是用增加新的约束来切割可行域,增加的新约束 称为割平面方程或切割方程。其基本思路为: 若其松弛问题的最优解X*不满足整数约束,则从X*的 非整分量中选取一个,用以构造一个线性约束条件,将其 加入原松弛问题中,形成一个新的线性规划,然后求解之 。若新的最优解满足整数要求,则它就是整数规划的最优 解;否则重复上述步骤,直到获得整数最优解为止。
用割平面法求整数规划问题最优解的步骤: 1. 求整数规划问题所对应的线性规划问题的最优 解。如果是整数解,则停止计算,否则,进行下一步。 2. 由最终单纯形表得到:
xi aik xk bi
k
xi 是基变量
将a ik,bi 都分解为整数部分 和非负真分数之和, N f 即:
aik N ik f ik bi N i f i 0 f ik 1 0 fi 1
为最终获得整数最优解,每次增加的线性约束条件应当两 个基本性质: (1)已获得的不符合整数要求的LP最优解不满足该线性 约束条件,从而不可能在以后的解中出现; (2)凡整数可行解均满足该线性约束条件,因而整数最优 解始终被保留在每次剩余的线性规划可行域中。
例1 用割平面法求解整数规划问题
max z x1 x 2 x1 x 2 1 3 x x 4 1 2 s.t. x1 , x 2 0 x1 , x 2是整数
继续求解定界,重复下去,直到得到最优解为 止。
7
二、整数规划求解方法
2. 分枝定界法一般步骤
1)将原整数规划问题(A)去掉所有的整数约束变为线 性规划问题(B) ,用线性规划的方法求解问题(B):
关于求解0_1型整数规划的若干问题

0 前言化问题,可知最优解的目标函数一定不小于 5。
为此,在求最优解之前先增加一个约束条件,即过滤0- 1 型整数规划是整数规划的特例,其数学模型的目 条件:3x - 2x +5x !5##⊙ 标函数、约束条件与线性规划相同,不同的是其变量只能1 2 3 过滤条件的作用是:在检验一个解是否为可行解之取 0 和 1,分别表示两种截然相反的结果。
0- 1 型整数规前,先看目标函数是否不小于 5,若小于 5,则肯定不是最 划应用很广,如土木工程系统的最优工程配置问题,城建优解,其可行性无须再检验而直接被淘汰,可以大大减少规划中的居民点、给水点、加油站和商业网点的最优布局计算工作量。
问题,均可应用 0- 1 型整数规划求得最优解。
有了过滤条件,就可以列表计算。
对解集中的解逐个检0- 1 型整数规划的数学模型如下:验,先检验过滤条件,若不符合则直接淘汰该解;若符合条 目标函数:件⊙,再按①~④顺序检验每一个约束条件,当某一个约 束条件不满足时即行淘汰,其右边的约束条件再无检验 约束条件:的必要。
这样,计算工作量可大为减少。
本例中有 3 个变量,共有 23=8 个解需要检验,通过计 算求得的最优解为: .本例以 为初始可行解,通过建立过滤条1 求解 0- 1 型整数规划三种通用的方法 件,只计算了 18 次就找到了最优解,而用穷举法需要计算1.1 穷举法40 次,技术工作量大大减少了。
如在求解过程发现更好的 由于 0- 1 型整数规划的变量个数有限且取值非 0 即可行解及时更换过滤条件 ,计算工作量还可进一步减少。
1,所以不难将解的集合找出来,再检验每个解的可行性, 1.2.2 对隐枚法法 I 的评价 凡符合全部约束条件者均为可行解,通过比较目标函数 对隐枚举法 I 来说其数学模型无须转化为标准型,减的值便可找到最优解,这个解法称为穷举法。
当变量和约 少了人工处理的工作量,但它需要检验的方案较多,而且 束条件很多时,其工作量是非常大的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0-1型整数线性规划模型理论
(1) 0-1型整数线性规划
0-1型整数线性规划是一类特殊的整数规划,它的变量仅取值0或1.其模型如下:
T min ..01(1,2,
,)j f s t x j n =⎧⎨=⎩c x
Ax =b 取或 其中()T 12,,,,n c c c =c ()T 12,,,,n x x x =x (),ij m n
a ⨯=A ()T 12,,,.m
b 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 n
i i Z x ==∑
()()()
123453568946791234712567
5812923
2200..20
0020
01(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 =
1
1
1
1
1
1
f =
20。