第六章-整数规划2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指派问题的提出和模型
问题的提出 有n项不同的任务需要完成,而恰好有n个人(或n台设备)可以 分别完成其中的一项工作,但由于任务的性质和个人的专长不 同,因而不同的人去完成不同的工作产生的效率就不一样。那 么,应派哪一个人去完成哪一项工作才能使总的效率最高?
问题模型
nn
min
cij xij
没有被直线覆盖的元素中找最小者, 对未被覆盖的行(列)减去该元素
0 3
1 0
1 1
0
0
0 2
0 11 8 6 6 2 2 1 0 5 0 4 3 4 0
第一列加1
1 3 0 11 8 0 0 6 6 2 0 1 2 1 0 1 0 5 0 4 1 2 3 4 0
指派问题应用举例
各建筑队完成每座厂房所需费用(万元)
B1
B2
B3
B4
A1
3
4
5
2
A2
8
5
7
6
A3
9
6
4
5
A4
5
3
6
6
指派问题的匈牙利算法
4 8 7 15 12 7 9 17 14 10 6 9 12 8 7 每行减最小数 6 7 14 6 10 6 9 12 10 6
若一行中有多个0元素,任选一个
若独立0元素的个数等于行数, 则停,否则继续下面计算。
0 3 0 11 8 0 1 7 7 3 0 2 3 2 1 0 0 5 0 4 0 2 3 4 0
没有 的行打√
0 3 0 11 8 0 1 7 7 3 √ 0 2 3 2 1 √ 0 0 5 0 4 0 2 3 4 0
z≥5
(0,1,0)
-2
(0,1,1)
3
(1,0,0)
3
(1,0,1)
8
z≥8
(1,1,0)
1
(1,1,1)
6
0-1整数规划的枚举法
(x1 , x2 , x3)
z
约束条件
删除 最优
1
2
3
4
条件
解
(1,0,1)
8
z≥8
(1,1,1)
6
(0,0,1)
5
(0,1,1)
3
(1,0,0)
• 注意:不要使用 Excel中的“IF( )” 函数来表达 xi 和 yi
的逻辑关系。
例如:设单元格 A5 代表 x1,单元格 A6 代表 y1,Solver
无法处理诸如A6 = IF(A5>0,1,0) 的约束关系式。
Excel求解
例6.9.5人翻译5种外文的速度(印刷符号/小时)如下表6-11 所示。若规定每人专门负责一个语种的翻译工作,那么,试解 答下列问题: (1)应如何指派,使总的翻译效率最高? (2)若甲不懂德文,乙不懂日文,其他数字不变,则应如何 指派?
0-1整数规划
0-1整数规划的标准型和解法
标准型
必须大于
等于0
n
min z c j x j
j 1
n j 1
cij
x
j
bi ,i
1,2,, m
x j 0或1, j 1,2,, n 必须≤
解法 全枚举法 隐枚举法
0-1整数规划的枚举法
max z = 3 x1 - 2 x2 + 5 x3
对于该指派问题,建立如下Excel电子表格,如下图
由于此问题的自由变量只能取0或1,所以在添加约束时要添加 所有自由变量为bin。求解结果见下图:
整数规划建模
投资股票例子
某公司考虑有6个投资ห้องสมุดไป่ตู้案, 这六项投资所需的现金和财 务净现值累计(NPV:净现值是指公司资产或股票的内在价 值与成本之差 )如下表所示, 公司现有资金为$14,000,公 司想使NPV最大,问最优策略是什么?
f (x1, x2, …, xn ) My g (x1, x2, …, xn ) M (1-y) y = 0 or 1
不允许选择3种股票的例子
Either f(x)=x1+x2+x3+x4+x5+x6 4 or g(x)=f(x)=x1+x2+x3+x4+x5+x6 2
引入一个变量,并增加以下约束: x1+x2+x3+x4+x5+x6 4w x1+x2+x3+x4+x5+x6 2 + 4w
投资
1
2
3
4
Investment 需要现金
(1000s)
$5 $7 $4 $3
NPV added (1000s)
$16 $22 $12 $8
5
6
$4 $6
$11 $19
决策变量
xi
1, 0,
if we invest in i 1,...,6, else
目标函数和约束条件
Max z = 16x1+ 22x2+ 12x3+ 8x4+ 11x5+ 19x6
√
在已打√的行中,对 0 所在的列打√ 在已打√的列中,对 所在的行打√ 重复上述过程,直到不能打√
0 3 0 11 8 0 1 7 7 3 √ 0 2 3 2 1 √ 0 0 5 0 4 0 2 3 4 0
√
对没有打√的行,打√的列划线
0 3 0 11 8 0 1 7 7 3 0 2 3 2 1 0 0 5 0 4 0 2 3 4 0
s.t. 5x1+ 7x2+ 4x3+ 5x4+ 4x5+ 6x6 14 xj {0,1} for each j = 1 to 6
如何建立以下逻辑关系约束
正好选择三种股票 如果选择股票2,必须也选择股票1 如果选择股票1,那就不能选择股票3 股票4和股票5只能选其一。 不允许选择3种股票。
- g (x1, x2, …, xn ) My
(1)
f (x1, x2, …, xn ) M (1-y) (2)
y = 0 or 1
(1)
x1+x2+x3+x4+x5+x6 2
(2)
增加一个辅助变量 w {0,1} 满足 如果 w = 1, 条件(1)满足 如果 w = 0, 条件(2)满足 因为 w 取 0 或 1, 所以至少有一个约束满足
不允许选择3种股票(续)
增加以下约束:
x1+x2+x3+x4+x5+x6 4w
i1 j 1
n
s.t.
xij 1, j 1,2,, n
i 1 n
xij 1, i 1,2,, n
j 1
xij 0 或1, 对一切i, j.
指派问题应用举例
某市计划在今年内修建4座厂房:发电厂、化肥厂 、机械厂、食品厂,分别记为B1,B2,B3,B4。 该市有4个大的建筑队A1,A2,A3,A4都可以承 担这些厂房的建造任务。但由于各个建筑队的技术 水平、管理水平等不同,它们完成每座厂房所需要 的费用也不一样。为计算简单,设有关数据如下表 所示。又因希望尽早把这4座厂房都建造好,故需 把这4个建筑队都动用起来,即每个队分配一项任 务。市政府经费紧张,于是提出研究下述问题:究 竟应该指派哪个队修建哪个厂,才能使建造4座厂 房所花的总费用最少?
max s.t.
z = 3y10 + 6y11 + 12y12 + 4y20 + 8y21 + 16y22 + 32y23
y10 + 2y11 + 4y12 5 2y10 + 4y11 + 8y12 + 3y20 + 6y21 + 12y22 + 24y23 30 yij = 0 or 1
指派问题
算法原理:设C (cij )nn是一个效率矩阵,若可行解 x*的n个 1所对应的n个cij 都等于0,则 x*是最优解。
对于前面的例子,得 到如下的效率矩阵:
3
C
8 95
4 5 6 3
5 7 4 6
2 6 5 6
2 5 4 3
1 3
用0-1变量表示一般整数规划
max s.t.
z = 3x1 + 4x2
x1
5
0 x1 5
2x1 + 3x2 30
0 x2 10
xj 0, xj integer, j=1,2
22 5 23, 23 10 24
x1 = y10 + 2y11 + 4y12 x2 = y20 + 2y21 + 4y22 + 8y23 yij = 0 or 1
如果 w=1 那么 x1+x2+x3+x4+x5+x6 4
如果 w=0 那么 x1+x2+x3+x4+x5+x6 2
(1) (2)
(A) (B) (1) (2)
If-Then 约束
两个约束条件
f (x1, x2, …, xn ) > 0 g (x1, x2, …, xn ) 0
如果约束条件 f (x1, x2, …, xn ) > 0 被满足, 则约束 g (x1, x2, …, xn ) 0 也必须被满足。
1,在所有未划去数中找出最小数,设为d 2,将所有未画去的数都减去d,而对位于两 直线交点处的数则加上d。 3,得出最优指派方案。
(1)
0
2
3
0
2
0
2
1
(2)
4
2
0
1
1
0
3
3
(3)
0
3
3
0
1
0
1
0
(1)
4
3
0
1
0
0
2
2
(3)
(2)
(4)
注:最优解不一定唯一!
如果限制决策变量取整数,则在约束关系选项中选择“int”; 如果限制决策变量取0或1,则在约束关系选项中选择“bin”。
(A)
x1+x2+x3+x4+x5+x6 2 + 4w
(B)
如果 w=1 那么
x1+x2+x3+x4+x5+x6 4
(1)
如果 w=0 那么
x1+x2+x3+x4+x5+x6 2
(2)
各种条件用整数约束条件的表示 Either-Or 约束
两个约束条件 至少一个被满足。
f (x1, x2, …, xn ) 0 g (x1, x2, …, xn ) 0
1 3 0 11 8
1 0 0 1
3 0 1 0
0 6 2 5
11 6 1 0
8 2 0 4
重复前面步骤加圈
0 0 1
0 1 0
6 2 5
6 1 0
2 0 4
1· 2 3 4 0
1· 2 3 4 0
0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1
5 2
1
2 0 2 0
3 2 0 3
0 1 1 3
0 2 4 1
2 0 2 0
3 2 0 3
0
1 13
B
效率矩阵
每行元素中减去 该行的最小元素
每列元素中减去 该列的最小元素
指派问题的匈牙利算法(续)
划去C中所有0元素所需要 的最少直线数等于C中不同行 不同列上0元素的个数
4 8 7 15 12 7 9 17 14 10 6 9 12 8 7 6 7 14 6 10 6 9 12 10 6
7+9+6+6+6=34
指派问题应用举例
各建筑队完成每座厂房所需费用(万元)
B1
B2
B3
B4
A1
3
4
5
2
A2
8
5
7
6
A3
9
6
4
5
A4
5
3
6
6
指派问题的匈牙利算法
约束条件建模
正好选择三种股票
x1+ x2+ x3+ x4+ x5+ x6=3
如果选择股票2,必须也选择股票1
x1 如果x选2 择股票1,那就不能选择股票3
x1 + x3 1
股票4和股票5只能选其一
x4 + x5 = 1
不允许选择3种股票
Either x1+x2+x3+x4+x5+x6 4 or
s.t.
x1 + 2 x2 - x3 ≤ 2
x1 + 4 x2 + x3 ≤ 4
x1 + x2
≤3
4 x2 + x3 ≤ 6
x1 , x2 , x3 = 0 or 1
0-1整数规划的枚举法
(x1 , x2 , x3)
z
约束条件
删除 最优
1
2
3
4
条件
解
(0,0,0)
0
z≥0
(0,0,1)
5
0 3 0 11 8 0 1 7 7 3 0 2 3 2 1 0 0 5 每列减最小数 0 4 0 2 3 4 0
0 4 3 11 8 0 2 10 7 3 0 3 6 2 1 0 1 8 0 4 0 3 6 4 0
找独立零元素:选只有一 个0元素的0加圈 ,每 个加圈的0元素所在行和 列的其它0划去( 0 )。
3
(1,1,0)
1
(0,0,0)
0
(0,1,0)
-2
用0-1变量表示一般整数规划
如果一个整数变量 x 有上界 u,即 0 x u,
这里 2N u 2N+1,
则 x 可用0-1变量 yi(i=0,1,…,N)表示: x = i=0,1,…,N 2i yi, yi = 0 or 1, i=0,1,…,N