运筹学 指派问题课件 PPT
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6 17 17 0 0 0 0 0 0 0 45 45 (2)
矩阵(2)是将矩阵(1)第一三行同时减5,第一列加5得到的。
第四步:这里的直线数 = 3,进行下一轮计算(直线 数=4时停止进算)。 (1)从矩阵未被直线覆盖的数字中找出一个最小数k = 5,并且减去5; (2)直线相交处的元素加上k = 5, 被直线覆盖而没有 相交的元素不变。
3
返回总目录 1, 第i工厂生产第j种产品 i 1, 2 , 3 , 4 , j 1, 2 , 3 , 4 解:设 xij 0 , 第i工厂不生产第j种产品
min Z 58 x11 69 x12 180 x13 260 x14
75 x21 50 x22 150 x23 230 x24
16
返回总目录
第五步:找出4个独立的0元: 58 69 工厂1 令对应的变量等于1,其余变量等于 0180 ,得 260 75 50 150 230 工厂2 到两个最优解。 65 70 170 250 工厂3
工厂4 82 55 200 280
产品1 产品2 产品3 产品4
( 0) ( 0) 6 17 17 30 30 0 (0) 0 0 0 0 0 ( 0) 32 32 (0) 45 45 1 0 0 0 第1个工厂加工产品1 1 0 0 1 0 第2个工厂加工产品3 第3个工厂加工产品4 0 0 0 0 1 0 第4个工厂加工产品2 0 1 0 0 单位产品成本和513 0
这样的问题可以用整数规 划方法或运输单纯形法来求 解,但计算量较大。
匈牙利数学家克尼格给出 了求解这类指派问题匈牙利 算法,非常简单而有效。 匈牙利算法的条件是:问 题求最小,行数与列数相 等及效率非负。
产品1 产品2 产品3 产品4 工厂1
x11
x12 x22 x32 x42
x13 x23 x33 x43
一.算法的基本思想: 在效率矩阵中找出4个不同行不同列的数(单位产 品成本)使得它们的总和最小。
方案2 单位产品成本总和594
产品1 产品2 产品3 产品4 工厂1 工厂2 75 69 工厂1 工厂2 工厂3
效率矩阵
产品1 产品2 产品3 产品4 58 75 65 82 69 50 70 55 180 150 170 200 260 230 250 280
x14 x24 x34 x44
工厂2 x21 工厂3 x31 工厂4 x41
1 1 1 1
1
1
1
1
产品1 产品2 产品3 产品4
工厂1 工厂2 工厂3 工厂4 58 75 65 82 69 50 70 55 180 150 170 200 260 230 250
5280
返回总目录
数学模型 匈牙利算法 其他变异的指派问题
7
返回总目录
二. 指派问题的匈牙利算法 匈牙利算法的两个相关定理: 定理2 若矩阵A的元素可分成“0”与非“0”两部分, 则覆盖零元素的最少直线数等于位于不同行不同列 的零元素(称为独立零元)的最大个数。 如果最少直线数等于m,则存在m个独立零元,令这 些零元对应的 xij 1, 其余变量=0,得到最优解。 m是效率矩阵的行数=列数。
工厂2 x21 工厂3 x31
1 1 1 1
工厂4 x41
1
1
1
1
产品1 产品2 产品3 产品4
工厂1 工厂2 工厂3 工厂4 58 75 65 82 69 50 70 55 180 150 170 200 260 230 250
4280
返回总目录 1, 第i工厂生产第j个产品 i 1, 2 , 3 , 4 , j 1, 2 , 3 , 4 解:设 xij 0 , 第i工厂不生产第j个产品
65 x31 70 x32 170 x33 250 x34 工厂1 x11 82 x41 55 x42 200 x43 280 x44
产品1 产品2 产品3 产品4
x12 x22 x32 x42
x13 x23 x33 x43
x14 x24 x34 x44
x11 x12 x13 x14 1 x x x x 1 21 22 23 24 x31 x32 x33 x34 1 x41 x42 x43 x44 1 x11 x21 x31 x41 1 x x x x 1 12 22 32 42 x13 x23 x33 x43 1 x14 x24 x34 x44 1 xij 0, or ,1, i , j 1, 2, 3,4
定理2 覆盖零元的最少直线数等 于不同行不同列的零元(称为独 立零元)的最大个数。当找到 m=4个独立零元时,得到最优解。
第四步:这里的直线数 = 3(直线数=4时停止运算), 于是修改效率矩阵: (1)从矩阵未被直线覆盖的数字中找出一个最小数k = 5,并且减去5; (2)直线相交处的元素加上k = 5, 被直线覆盖而没有 相交的元素不变。
ij ij i j
58 75 65 82
0 11 122 202 69 180 260 58 25 0 100 180 50 150 230 50 0 5 105 185 70 170 250 65 27 0 145 225 55 200 280 55 0 0 100 180 v j (C )
ij
ui
0 11 22 22 25 0 0 0 0 5 5 5 45 45 27 0(b )
ij
第二步:找出效率矩阵每列的最小元素,再分别从每 列中减去,有: 13
返回总目录
第三步:用最少的直线覆盖所有0:
( 0) 11 22 22 25 0 (0 ) 0 0 5 5 5 ( ) 27 0 45 45
15
返回总目录
第三步:用最少的直线覆盖所有0:
0 0 11 22 22 25 25 0 0 0 0 0 5 5 5 27 27 0 45 45 6 17 17 0 30 0 0 0 0 0 0 0 0 45 45 32 6 17 17 0 0 0 0 0 0 0 45 45
17 17 0 (0) ( 0) 0 (0) 45 45 6 0 0
0 0 0 第1个工厂加工产品1 第2个工厂加工产品4 0 0 1 第3个工厂加工产品3 0 1 0 第4个工厂加工产品2 1 0 0 单位产品成本和513
8
返回总目录
二. 指派问题的匈牙利算法 例1 某公司拟将四种新产品配置到四个工厂生产,四 个工厂的单位产品成本(元/件)如下表所示。求最 优生产配置方案使得单位产品成本总和为最小。
一.算法的基本思想: 在效率矩阵中找出4个不同行不同列的数(单位产 品成本)使得它们的总和最小。
方案1 单位产品成本总和558
效率矩阵
产品1 产品2 产品3 产品4 58 75 65 82 69 50 70 55 180 150 170 200 260 230 250 280
11
返回总目录
二.算法的迭代步骤: 第一步:找出效率矩阵每行的最小元素,并分别从每 行中减去最小元素,有:
58 75 65 82 69 180 260 58 50 150 230 50 70 170 250 65 55 200 280 55
14
返回总目录
第三步:用最少的直线覆盖所有0:
0 0 11 22 22 25 0 0 0 -5 25 0 0 5 5 5 27 27 0 45 45
(1)
6 17 17 0 +5 30 0 0 0 0 0 0 0 0 45 45 32
产品1 产品2 产品3 产品4
效率表
工厂1 工厂2
58 75
69 50
180 150
260 230
工厂Βιβλιοθήκη Baidu 工厂4
65 82
70 55
170 200
250 280
2
返回总目录
例1 某公司拟将四种新产品配置到四个工厂生产,四 个工厂的单位产品成本(元/件)如下表所示。求最 优生产配置方案使得单位产品成本总和为最小。
效率矩阵
产品1 产品2 产品3 产品4 工厂1 工厂2 工厂3 工厂4 58 75 65 82 69 50 70 55 180 150 170 200 260 230 250 280 12
返回总目录
定理1 b c u v , (bij ) 的最优解等价于 (Cij ) 的最优解 第一步:找出效率矩阵每行的最小元素,并分别从每 行中减去最小元素,有:
6
返回总目录
二. 指派问题的匈牙利算法 匈牙利算法的两个相关定理:
定理 1 如果从指派问题效率矩阵 (Cij ) 的每一行元 素中分别减去(或加上)一个常数 ui(称为该行的 位势),从每一列分别减去(或加上)一个常数 v j (称为该列的位势),得到一个新的效率矩阵 (bij ) , 其中 bij cij ui v j ,则 (bij ) 的最优解等价于(Cij ) 的最优 解,这里 Cij 及 bij 均非负。
回到第三步,用最少的直线覆盖所有0。 此时最少直线数=4,表明矩阵中存在4个不同行不 同列的零元素,于是得到最优解。 第五步:找出4个独立的0元:
( 0 ) 30 0 32 6 17 17 0 ( 0) 0 0 0 ( 0 ) (0 ) 45 45 ( 0 ) 30 0 32 6 17 17 0 0 ( 0 ) 0 ( 0) 0 (0 ) 45 45
这个问题的求解可以采用枚举法。将所有分配方案求出, 总分最小的方案就是最优解。本例的方案有4×3×2×1 = 24 种。 由于方案数是工厂数的阶乘,当工厂数和产品数较多时, 计算量非常大。 而用0-1规划描述此类分配 问题显得非常简单。下面建 立相应的数学模型。
产品1 产品2 产品3 产品4 工厂1 工厂2 工厂3 工厂4 58 75 65 82 69 50 70 55 180 150 170 200 260 230 250 280
10
工厂3
工厂4 200
250
工厂4
返回总目录
一.算法的基本思想: 在效率矩阵中找出4个不同行不同列的数使得它们 的总和最小。 找出4个不同行不同列的零元使得它们的和为最小0,
令这些零元对应的 xij 1, 其余变量=0,得到最优解。
效率矩阵的变形
产品1 产品2 产品3 产品4 工厂1 工厂2 工厂3 工厂4 * 0 * * 0 * * * * * * 0 * * 0 * 定理1 工厂1 工厂2 工厂3 工厂4
产品1 产品2 产品3 产品4 工厂1 工厂2 58 150 工厂1 工厂2 工厂3 工厂4 280
效率矩阵
产品1 产品2 产品3 产品4 58 75 65 82 69 50 70 55 180 150 170 200 260 230 250 280
9
工厂3
工厂4
70
返回总目录
二. 指派问题的匈牙利算法 例1 某公司拟将四种新产品配置到四个工厂生产,四 个工厂的单位产品成本(元/件)如下表所示。求最 优生产配置方案使得单位产品成本总和为最小。
返回总目录
指派问题
数学模型
匈牙利算法 其他变异的指派问题
1
返回总目录
指派问题 指派问题也称为分配或配置问题。是资源合理配 置或最优匹配问题。 一. 数学模型 例1 某公司拟将四种新产品配置到四个工厂生产,四 个工厂的单位产品成本(元/件)如下表所示。求最 优生产配置方案使得单位产品成本总和为最小。