运筹学课堂PPT5.4指派问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A
BCD
甲 85 92 73 90
效率表 乙 95 87 78 95
丙 82 83 79 90
丁 86 90 80 88
例5-15 人事部门欲安排四人到四个不同的岗位工作, 每个岗位一个人。经考核四人在不同岗位的成绩(百 分制)如下表所示,问如何安排他们的工作使总成绩 最好。
➢这个问题的求解可以采用枚举法。将所有分配方案 求出,总分最大的方案就是最优解。本例的方案有 4×3×2×1 = 24 种。
max Z 85x11 92x12 73x13 90x14
95 x21 87 x22 78 x23 95 x24
82 x31 83 x32 79 x33 90 x34
86 x41 90 x42 80 x43 88 x44
x11 x12 x13 x14 1
x21 x31
(1)从矩阵未被直线覆盖的数字中找出一个最小数k = 5, 并且减去5;
(2)直线相交处的元素加上k = 5, 被直线覆盖而没有 相交的元素不变。
第三步:用最少的直线覆盖所有0:
0 11 22 22 0 6 17 17 0 6 17 17
25 0
0
0
25
0
0
0
30
0
0
0
0 5 5 5 0 0 0 0 0 0 0 0
注意:当人数与工作数较多时,用直观的方法进行划 线及找独立的零元素比较困难,这时可按以下方法进 行:
58 69 180 260 58 0 11 122 202 0 11 22 22
75
50
150
230
50
25
65 70 170 250 65 0
82 55 200 280 55 27
0 5 0
5.4.2 指派问题的匈牙利算法 一.算法的基本思想:
在效率矩阵中找出4个不同行不同列的数使得它们 的总和最小。
找出4个不同行不同列的0元使得它们的和为最小0, 令这些零元素对应的 xij 1, 其余变量=0,得到最优解。
效率矩阵的变形
效率矩阵
产品1 产品2 产品3 产品4
产品1 产品2 产品3 产品4
A 甲 x11 乙 x21
丙 x31 丁 x41
1
A 甲 85 乙 95 丙 82 丁 86
BCD 1 x12 x13 x14 1 x22 x23 x24 1 x32 x33 x34 1 x42 x43 x44 111
BCD 92 73 90 87 78 95 83 79 90 90 80 88
5.4.2 指派问题的匈牙利算法
27 0 45 45
27
0
40
40
27
0
40
40
由于最少直线数 3 m 4 ,因此修改矩阵:
(1)从矩阵未被直线覆盖的数字中找出一个最小数5, 并且减去5; (2)直线相交处的元素加上5,被直线覆盖而没有相交 的元素不变。
重复步骤3,直到最少直线数=4。
3.用最少的直线覆盖所有0,最少直线数= 4。
27 0 45 45
(3)
27 0 45 45
32
0 45
(4)
45
矩阵(4)是将矩阵(3)第一三行同时减5,第一列加5得到的。
第四步:这里的直线数 = 3,进行下一轮计算(直线 数=4时停止进算)。
(1)从矩阵未被直线覆盖的数字中找出一个最小数k = 5, 并且减去5;
(2)直线相交处的元素加上k = 5, 被直线覆盖而没有 相交的元素不变。
(0) 6 17 17 (0) 6 17 17
0
25
0
0
0
0 5 5 5 0 5 5 5
27
(0)
45
45
27
0
45 45
3.用最少的直线覆盖所有0,最少直线数= 3。
(1)检查效率矩阵的每行每列,在零元素最少的行(列)中任选一 个零元素,对这个零元素打上( ), 将该(0)所在的行、列其他 零元素全打上记号×。同时对打( )及×的零元素所在的行或列 画一条直线。
x12 x13
x22 x23
x32 x33
x42 x43
1 1
x14 x24 x34 x44 1
A BCD 甲 85 92 73 90 乙 95 87 78 95 丙 82 83 79 90 丁 86 90 80 88
xij 0, or,1, i, j 1, 2, 3, 4
100 105 145
118850 225
25 0 27
0 5 0
0
0
5 5
45 45
0 0 100 180
1.找出效率矩阵每行的最小元素,并分别从每行中减 去最小元素,有:
2.找出效率矩阵每列的最小元素,再分别从每列中减 去,有:
(0) 11 22 22 0 11 22 22
25
0
(0 )
第三步:用最少的直线覆盖所有0:
0 11 22 22 0 6 17 17 0 6 17 17
25 0
0
0
25
0
0
0
30
0
0
0
0 5 5 5 0 0 0 0 0 0 0 0
27 0 45 45
(3)
27 0 45 45
32
0 45
(4)
45
回到第三步,用最少的直线覆盖所有0。
此时最少直线数=4,表明矩阵中存在4个不同行不 同列的零元素,于是得到最优解。
解:设
xij
1, 0,
分配第i人做第j项工作 i 1,2,3,4, j 1,2,3,4 不分配第i人做第j项工作
➢这样的问题可以用整数规 划方法或运输单纯形法来求 解,但计算量较大。
➢匈牙利数学家克尼格给出 了求解这类指派问题匈牙利 算法,非常简单而有效。
➢匈牙利算法的条件是:问 题求最小,人数与工作数 相等及效率非负。
5.4.2 指派问题的匈牙利算法
匈牙利算法的两个相关定理:
定理 5.5 若矩阵A的元素可分成“0”与非“0”两 部分,则覆盖零元素的最少直线数等于位于不同行 不同列的零元素(称为独立元素)的最大个数。
如果最少直线数等于m,则存在m个独立的零元素, 令这些零元素对应的 xij 1, 其余变量=0,得到最优解。 m是效率矩阵的行数=列数。
(2)重复第(1)步。在剩下的没有被直线画去的行、列中再找最 少的零元素,打上( ), 打上×及画线。直到所有零元素都被 直线画去。
3.用最少的直线覆盖所有0,最少直线数= 3。
0 11 22 22 0 6 17 17 0 6 17 17
25
0
0
0
25
0
0
0
30
5
0
0
0 5 5 5 0 0 0 0 0 0 0 0
第五章 运输与指派问题
5.1 运输问题的数学模型及其特征 5.2 运输单纯形法 5.3 运输模型的应用 5.4 指派问题
5.4 指派问题
指派问题也称为分配或配置问题。是资源合理配 置或最优匹配问题。
5.4.1 数学模型
例5-15 人事部门欲安排四人到四个不同的岗位工作, 每个岗位一个人。经考核四人在不同岗位的成绩(百 分制)如下表所示,问如何安排他们的工作使总成绩 最好。
工厂1 *
0
*
* 定理5.4 工厂1 58 69 180 260
工厂2 0
*
*
*
工厂2 75 50 150 230
工厂3 *
*
*
0
工厂3 65 70 170 250
工厂4 *
*
0
*
工厂4 82 55 200 280
二.算法的迭代步骤:
第一步:找出效率矩阵每行的最小元素,并分别从每 行中减去最小元素,有:
( 0) 11 22 22
25
0
(0 )
0
0 5 5 5
27 (0) 45 45
(3)
定理5.5 覆盖零元素的最少直线 数等于不同行不同列的零元素 (称为独立0元素)的最大个数。 当找到m=4个独立的零元素时, 得到最优解。
第四步:这里的直线数 = 3(直线数=4时停止运算), 于是修改效率矩阵:
产品1 产品2 产品3 产品4
工厂1 58
工厂2
150
工厂3
70
工厂4
280
效率矩阵
产品1 产品2 产品3 产品4 工厂1 58 69 180 260 工厂2 75 50 150 230 工厂3 65 70 170 250 工厂4 82 55 200 280
5.4.2 指派问题的匈牙利算法
例5-16 某公司拟将四种新产品配置到四个工厂生产, 四个工厂的单位产品成本(元/件)如下表所示。求 最优生产配置方案使得单位产品成本总和为最小。
(0)
45
45
1 0 0 0第1个工厂加工产品1 1 0 0 0第1个工厂加工产品1
0 0 1 0第第23个个工 工厂 厂加 加工 工产 产品 品34 0 0 0 1第第23个个工工厂厂加加工工产产品品43
0 0
0 1
0 0
10第单4位个产工品厂成加本工和产5品132
0 0
0 1
1 0
00第单4位个产工品厂成加本工和产5品132
➢由于方案数是人数的阶乘,当人数和工作数较多时, 计算量非常大。
➢而用0-1规划描述此类分
A
BCD
甲 85 92 73 90
配问题显得非常简单。下面 乙 95 87 78 95
建立相应的数学模型。
丙 82 83 79 90
丁 86 90 80 88
解:设
xij
1, 0,
分配第i人做第j项工作 i 1,2,3,4, j 1,2,3,4 不分配第i人做第j项工作
第一步:找出定效理率5矩.4 阵bij 每cij 行ui 的vj , (最bij )小的最元优素解等,价并于 (分Cij )别的最从优每解
行中减去最小元素,有:
ui
58 69 180 260 58
0 11 122 202
(1)
75 65
50 70
150 170
230 50
Hale Waihona Puke Baidu
25
250 65 0
一.算法的基本思想:
在效率矩阵中找出4个不同行不同列的数(单位产 品成本)使得它们的总和最小。
方案2 单位产品成本总和594
产品1 产品2 产品3 产品4
工厂1
69
工厂2 75
工厂3
250
工厂4
200
效率矩阵
产品1 产品2 产品3 产品4 工厂1 58 69 180 260 工厂2 75 50 150 230 工厂3 65 70 170 250 工厂4 82 55 200 280
第五步:找出4个独立的0元:
(0) 6 17 17
(0) 6 17 17
30 0 ( 0)
0
0 0 0 ( 0)
30 0 0 ( 0) 0 0 ( 0) 0
32 (0) 45 45
32 (0) 45 45
第五步:找出4个独立的0元: 工厂1
产品1 58
产品2 69
产品3 180
产品4 260
5.4.2 指派问题的匈牙利算法
例5-16 某公司拟将四种新产品配置到四个工厂生产, 四个工厂的单位产品成本(元/件)如下表所示。求 最优生产配置方案使得单位产品成本总和为最小。
一.算法的基本思想:
在效率矩阵中找出4个不同行不同列的数(单位产 品成本)使得它们的总和最小。
方案1 单位产品成本总和558
令对应的变量等于1,工其厂2余变75量等50于01,50 得230
到两个最优解。
工厂3 65 70 170 250
工厂4 82 55 200 280
(0) 6 17 17
30
0
(0)
0
0 0 0 (0)
32
(0)
45
45
(0) 6 17 17
30
0
0 (0)
0 0 (0) 0
32
匈牙利算法的两个相关定理:
定理 5.4 如果从指派问题效率矩阵 (Cij )的每一行元 素中分别减去(或加上)一个常数 u(i 称为该行的 位势),从每一列分别减去(或加上)一个常数 v j (称为该列的位势),得到一个新的效率矩阵 (bij ) , 其中 bij cij ui v j ,则 (bij ) 的最优解等价于(Cij ) 的最优 解,这里 Cij 及 bij 均非负。
x22 x32
x23 x33
x24 x34
1 1
x41 x42 x43 x44 1
A 甲 x11 乙 x21
丙 x31 丁 x41
1
BCD 1 x12 x13 x14 1 x22 x23 x24 1 x32 x33 x34 1 x42 x43 x44
111
x11 x21 x31 x41 1
0 5
100 105
180 185
(2)
82 55 200 280 55
(Cij )
27 0 145 225 0 0 100 180 v j
0 11 22 22
25 0
0
0
(3)
0 5 5 5
27
0 45
(bij )
45
第二步:找出效率矩阵每列的最小元素,再分别从每
列中减去,有:
第三步:用最少的直线覆盖所有0:
58 69 180 260 58 75 50 150 230 50 65 70 170 250 65 82 55 200 280 55
效率矩阵
产品1 产品2 产品3 产品4 工厂1 58 69 180 260 工厂2 75 50 150 230 工厂3 65 70 170 250 工厂4 82 55 200 280