分配问题与匈牙利法

合集下载

运筹学-12分配问题

运筹学-12分配问题

具体求解过程(6)
• 4.没有找到m个独立的 “0”:
• (1)找最小直线覆盖所有 “0”
• 对没有打的行画横线; • 所有打的列画上垂线. • 找到了覆盖矩阵所有零
元素的最小直线数.

(0) 8 2 5 11 (0) 5 4 2 3 (0) 0 0 11 4 5
O3 26 17 16 19 0
增加一个虚拟工作T5
O4 19 21 23 17 0 O5 17 18 19 17 0
每一个工人干 这项工作需 要的时间比其他工作所需时 间要多的多,为什么?
O2下岗,
O1T1, T5 , O3T3 , O4T4 , O5T2 ,93-27=66
人员少,工作岗位多的情况P.125/4.5
• 如该列没有零元素或有 两个以上零元素(划去的不 计在内),则专下一列,直到 最后一列为止.
0 8 2 5 11 0 5 4 2 3 0 0 0 11 4 5
(0) 8 2 5 11 (0) 5 4 2 3 0 0 0 11 4 5 .
具体求解过程(4)

总时间:101

•加一个虚拟人员戊,
39 34
38 27
26 28
20 40
33 32
其效率为55(最大) 丁 24 42 36 23 45
甲B;乙D;丙C;丁A;戊E 戊 0 0
0
0
0
总时间:165-55=101
人员少,工作岗位多的情况P.125/4.5

25 29 31 42 37 25 0 4 6 17 12 0 4 5 17 7
• 即做2.找到m个独立
“0”

匈牙利法求解指派问题

匈牙利法求解指派问题

然后划去所在的列的其他0 元素,记作Ø。
Ø 13 7 0 6 6 9 5 3 2 Ø1 0 0
➢给只有一个0元素的列的0 元素加圈,记。
Ø 13 7 0 6 6 9 5 3 2 Ø 1 0
然后划去所在的行的其他0元 素,记作Ø
Ø 13 7 0 6 6 9 5 3 2 Ø 1 Ø
➢给最后一个0元素加圈, 记。
Ø 13 7 6 6 9 5 3 2 Ø 1 Ø
可见m=n=4,得到最优解。
0001 0100 1000 0010
即甲译俄文、乙译日文、丙 译英文、丁译德文所需时间 最少。Z=28小时
例6 分配问题效率矩阵
任务 A B C D E 人员
甲 12 7 9 7 9 乙8 9 6 6 6 丙 7 17 12 14 9 丁 15 14 6 6 10 戊 4 10 7 10 9
12 7 9 7 9 7 89666 6 7 17 12 14 9 7 15 14 6 6 10 6 4 10 7 10 9 4
50202 23000 0 10 5 7 2 98004 06365
➢从只有一个0元素的行开始,给 这个0元素加圈,记
50202 23000
10 5 7 2
98004 06365
然后划去所在的列的其他0元素,记 作Ø。
70202 4 3 000 Ø 8350 11 8 0 0 4 4 1 4 3
➢从只有一个0元素的行开始,给这个0 元素加圈,记
70202 4 3 000 Ø 8 3 5 11 8 0 0 4 4 1 4 3
然后划去所在的列的其他0元素,记 作Ø。
70202 4 3 00Ø Ø 8 3 5 11 8 0 0 4 4 1 4 3

4.2-分配问题和匈牙利法

4.2-分配问题和匈牙利法

0 0 0 1 0
0 0 1 0 0
0 0 0 0 1
0 1 0 0 0
0 1 3 2 0
0 3 0 3 6 0 2 0 2 0 0 3 0 2 3 0 4 4 0 6
此问题有多个最优解
匈牙利法

第三种情况
矩阵中所有零元素或被划去,或打上( )号,但打( )号的 零元素个数仍小于n.
整数规划
整数规划的数学模型 设置逻辑变量建立整数规划模型 分配问题与匈牙利法 分支定界法、割平面法 应用举例
§3 分配问题与匈牙利法

分配问题的标准形式及其数学模型

分配问题也称指派问题(assignment problem),在我们现实 生活中,常有各种性质的分配问题.例如:应如何分配若干 项工作给若干个人(或部门)来完成,以达到总体的最佳效果 等等.由于分配问题的多样性,我们有必要定义分配问题的 标准形式.
可用表上作 解:这是一个标准的分配问题.若设0-1变量 业法求解
1 表示学生i翻译语种j xij (i, j 1, 2,3, 4) 0 表示学生i不翻译语种j 则问题的数学模型为
min z 14 x11 9 x12 4 x13 15 x14 11x21 7 x22 9 x23 10 x24 13 x31 6 x32 10 x33 5 x34 17 x41 9 x42 15 x43 13 x44 4 xij 1 i 1, 2,3, 4 j 1 4 s.t. xij 1 j 1, 2,3, 4 i 1 xij 0或1 i, j 1, 2,3, 4
匈牙利法

0 8 11 0 上述例子完成一、二、三步之后如右: 2 3 转向第四步: 0 11

多传感器静态数据分配问题的匈牙利解法

多传感器静态数据分配问题的匈牙利解法

算 表 明 , 法 能 较 大 程 度 地 降 低 计 算 量 , 一 种 实 用 性 很 好 的 方 法 , 时 也 值 得 向 更 高 维 该 是 同 的情 况 作 进 一 步 的研 究和 仿 真 比较 。 关 键 词 : 传 感 器 数 据 融 合 ; 标 跟 踪 ; 据 关 联 多 目 数
( 京 理 工 大 学 动 力 工 程 学 院 8 0教 研 室 , 苏 南 京 2 0 9 ) 南 1 江 1 0 4

要 : 目标 多 传 感 器 数 据 关 联 中 的 分 配 问 题 一 直 是 数 据 融 合 领 域 中 的 一 个 关 键 多
问 题 , 多 的 研 究 者 都 提 出 了 一 系 列 不 同 的 方 法 来 解 决 这 个 NP— a d 问 题 。 本 文 提 出 了 众 hr 用 2维 分 配 问 题 的 匈 牙 利 解 法 来 解 决 该 问 题 , 出 求 解 2D ,一 分 配 的 方 法 。 经 仿 真 计 给 一 3D
分 配 算 法 相 比于 多 假 设 跟 踪 算 法 MHT( 去 被 1 多 目标 多 传 感 器数 据 关 联 的静 态 分 配 过 认 为 是 最 优 关 联 的 唯 一 方 法 ) 说 是 一 种 可 行 问 题 来 性 和 可 实 现性 更 强 的 方 法 。 — 分 配 算 法 是 一 D Ⅳ 个 传 感 器 对 侦 察 区 域 测 量 可 得 到 个 LS , 种 离 散 数 学 优 化 方 法 , 是 该 方 法 在 ≥ 3时 是 扫 描 目录 ( I T) 每 个 目录 都 有 与 实 际 目标 数 但
能 经 能 获 得 目标 方 位 数 据 , 数 据 关 联 变 得 非 常 困 划 问题 的 特 点 , 在 一 定 程 度 上 降 低 计 算 量 , 则 难 。 目前 数 据 关 联 采 用 的 多维 分 配 算 法 中 , D — 仿 真 表 明是 一 种 实 用 性 很 强 的方 法 。

第五章 匈牙利法与最佳指派问题

第五章 匈牙利法与最佳指派问题

7 2 2
4
3
8 3 5 3
11 8
4
4 1 4
情况一出现,即得到了最优解,其相应的解矩阵为:
0 1 0 0 0
0 0 1 0 0
xij
1
0
0
0
0
0 0 0 1 0
0 0 0 0 1
由此得知最优指派方案为甲完成任务B,乙完成任务
C,丙完成任务A,丁完成任务D,戊完成任务E,最少时
间为
min z 7 6 7 6 6 32
而总的最少时间为32天.
当然,由于方法中的第二步4中的情况二的出现,造成 指派问题的最优解常常是不唯一的,但不同最优解的 最优值总是相同的.
第三节 非标准指派问题
前一节的匈牙利法只适用于目标函数为极小、价值 系数矩阵为方阵且价值系数矩阵中元素均为非负的情况。 当指派问题不满足上述三个条件时,就应先化成标准的 指派问题,然后再用匈牙利法求解.
解:
ABC DEF
甲 16 10 12 15 0 0 8 2
甲 16 10 12 15 0 0
8
2
乙 11 12 10 18 0 0 3 2 3

11
12
10
18
0
0
3
2
3
丙 8 17 13 16 0 0 7 3 1

8
17 13 16
0
0
7
3
1
8 10 10 15
本例经过反复的行、列检验后得到如下矩阵:
5 2 2
2
3
10 5 7 5
9
8
4
6 3 6 2
情况三出现,亦即未得到完全分配方案,求解过程 按以下步骤继续进行。

第四讲指派型及匈牙利方法

第四讲指派型及匈牙利方法

第四讲 指派模型及匈牙利方法§ 4.1 引言将不同的任务分派给若干人去完成,由于任务有难易,人员素质有高低,因此各人去完成不同的任务的效率就有差异。

我们的问题是:应分派何人去完成哪种任务使得总效率最高(或所花费的时间最少,或所需的费用最低)?这一类问题称为指派问题或分配问题。

指派问题的一般提法是:用最佳方法按照一对一的原则把“任务”指派给“人”。

具体地就是:设有n 个人A 1,A 2,…,A n ,被分派去完成n 项工作B 1,B 2,…,B n ,要求每项工作需且仅需一个人去完成,每个人需完成且仅需完成一项工作。

已知A i 完成B j 工作的效率(如工时、成本或价值等)为c ij 。

问应如何指派,才能使总的工作效率最好?指派问题本质上是0—1规划问题。

设X ij 表示A i 完成B j 工作,并令⎪⎩⎪⎨⎧=工作去完成当不指派工作去完成当指派j i j i ij B A B A X 0 1,则指派模型的标准形式为), ,2 ,1,( }1 ,0{ ) , ,2 ,1( 1 ), ,2 ,1( 1s.t.)0( min 1111n j i X n j X n i Xc X c Z ij n i ij nj ijij ni nj ij ij ΛΛΛ=∈====≥=∑∑∑∑====由c ij 组成的方阵C = (c ij )n ⨯n 称为效率矩阵。

只要效率矩阵C 给定,指派问题也就相应确定。

若0ij x 为指派模型的最优解,则n 阶方阵X = (0ij x ) 称为指派模型的最优解方阵。

事实上,方阵X 为一置换方阵,即该矩阵中的每一行、每一列只有一个“1”。

显然,指派问题是运输问题的特例。

§ 4.2 匈牙利方法除了求解0—1规划外,解决指派问题还有其特殊的方法,它是由匈牙利数学家柯尼格(D. Köngig )提出的,因此得名匈牙利方法(The Hungarian Method of Assignment )。

分配问题指派问题与匈牙利法

分配问题指派问题与匈牙利法

0 0 0 1 0
1
0
0
0
0
整体解题思路总结
整体解题思路总结
例题:
单位:小时
人1 人2 人3 人4 人5
工作1 4
8
7 15 12
工作2 7
9 17 14 10
工作3 6
9 12 8
7
工作4 6
7 14 6 10
工作5 6
9 12 10 6
整体解题思路总结
例题:
4 8 7 15 12 7 9 17 14 10
第5讲 分配问题(指派问题)与匈牙利法
分配问题的提出
分配问题的提出
若干项工作或任务需要若干个人去完成。由于每人的知识、能力、经验的不同, 故各人完成不同任务所需要的时间不同(或其他资源)。
问: 应指派哪个人完成何项工作,可使完成所有工作所消耗的总资源最少?
分配问题的提出
➢设某公司准备派 n 个工人x1,x2,…,xn ,去作 n 件工作 y1,y2,…,yn。已知工人xi完成工作 yj 所需 时间为cij (i,j=1,2,…,n)。
6
9
12
8
7
6 7 14 6 10
ui
0 0
3 1
0 7
11 7
8 3
0 1
பைடு நூலகம்
0
2
3
2
1
1
0 0 5 0 4 0
0
2
3
4
0
0
vj
-1 0 0 0 0
⑨从原矩阵的每个元素aij 中分别减去ui和vj,得到新元 素
ui
0 0
3 1
0 7
11 7
8 3

整数规划---匈牙利法

整数规划---匈牙利法

x1 (1) 1 0 0 0 x2 0 (1) 1 0 0 x3 0 1 0 0 (1) x4 0 0 (1) 0 0 x5 0 0 1 (1) 1
y1
y2
y3
y4
y5
但礼让原则未必都能得到最大 匹配,其次礼让原则当规模大 时无法使用,且无法用计算机 实现
z' = ∑∑C'ij xij =∑∑Cij xij − a∑xij + b∑xij = ∑Cij xij − a + b = z − a + b
j =1 i =1 n n
利用这个性质,可使原效益矩阵变换为含有很多零 元素的新的矩阵(即每行减去该行的最小值,再每列 也类似),其余C’ij ≥0. 如果C=(C’ij)有n个不同行,不同列的零元素,以下 简称为独立的零元素,则令矩阵x=( xij )中,对这n个独 立的零元素位置取1,其余取0,代入目标函数得z’= 0,它一定是最小(因为C’ij ≥0 )
Step4:增加(转移)零元素 a.求出未被直线覆盖的元素中的最小值k(本例中 k=2). b.对打√行减去k,对打√列加上k go to step2
2 (0) 8 11 (0) 5 2 3 (0) 0 13 4

5 √ 4 0 √ 5
0 (0) 6 13 (0) 5 4 3 (0) 0 11 2
进一步考虑
指派问题用匈牙利法计算,模型需要满足的形式: (1)目标函数是求最小值 (2)效益矩阵必须是n阶方阵 (3)效益矩阵中每个元素Cij ≥0,且是常数
如人员分配问题:
x1 x2 x3 x4 x5 y1 y2 y3 y4 y5
x1 x2 A = (aij ) = x3 x4 x5 1 0 0 0 0

指派问题

指派问题

Step 4、改进 1 、改进C
8 2 5√ 0 5 4 3 0 0 √ 1列中加上 ; 在已打√号的列中加上 在已打 号的列中加上θ; 13 C2 = 得到一个新矩阵 C2。 4 -2 用 C2 代替 C1,返回步骤 2. 0
8 2 5 0 5 4 3 0 0 11 4 5
0 11 C = 上述步骤可能出现三种情况 1 2 情况一: 情况一:矩阵每行都有一个打圈的 0
0 元素。此时得到问题的最优解 元素。此时得到问题的最优解.
8 2 5 0 5 4 3 0 0 11 4 5
2 15 C= 13 4
10 9 7 4 14 8 14 16 11 15 13 9
2 4 11 4
0 11 B= 2 0
8 7 5 0 10 4 3 5 0 11 9 5
Step 2、确定 1中线性独立的 元素 元素. 、确定C 中线性独立的0元素 从第一行开始,若该行只有一个 元素 就对这个0 元素, 从第一行开始,若该行只有一个0元素,就对这个 元素加圈,然后划去其所在列的其它0元素 元素;若该行 元素加圈,然后划去其所在列的其它 元素 若该行 没有其它0元素或有两个以上 元素( 元素或有两个以上0元素 没有其它 元素或有两个以上 元素(已划去的不 ),转下一行 直到最后一行为止。 转下一行; 计),转下一行;直到最后一行为止。 然后,从第一列开始 若该列只 然后 从第一列开始,若该列只 从第一列开始 0 有一个0元素 就对这个0元素 元素,就对这个 有一个 元素 就对这个 元素 11 加圈(同样不考虑已划的) 加圈(同样不考虑已划的), 再划去其所在行的其它0元素 元素; 1 再划去其所在行的其它 元素 C = 2 若该列没有0元素或有两个以 若该列没有 元素或有两个以 元素, 上0元素,则转下列直到最后 元素 0 一列为止。 一列为止。 重复上述步骤. 重复上述步骤

基于空缺链和匈牙利算法的资源分配问题2

基于空缺链和匈牙利算法的资源分配问题2

130基于空缺链和匈牙利算法的资源分配问题杨 子 马 硕 贾 隆 哈尔滨工业大学(威海)摘 要:对于寄居蟹,壳是它们生命的保障,寄居蟹要很慎重地思考并且评估壳资源,才会交换他们的壳,同时它们也能着眼于未来,所以它们有着最好的蟹类的平均主义思想。

而我们人类从中看出空屋链模型和匈牙利算法对于社会资源分配的启示,例如职位招聘,房屋流动等。

关键词:空屋链 匈牙利算法 资源分配一、引言为了说明让每个人都受益的交换策略的起源,有以下背景。

寄居蟹,一种在美国非常流行的宠物类型,依靠其它生物的壳作为保护。

当蟹遇到了新壳,会立即从住所出来,试穿新住所,这是典型的寄居蟹式作风。

但如果这个新壳有些偏大,它可不会失望的走掉,相反,它会站在这个新壳附近一直等待着,直到其它的蟹出现,那些新来的都会试试这个新壳。

但如果这个新壳对于新来的来说也很大的话,那么它们会一起等待,有时,一个新壳旁边的寄居蟹甚至20组之多。

但这些蟹不是随机的,相反,它们按个头从大到小排成整齐一排。

一旦有一个蟹能够适应这个新壳,队伍中的所有蟹都将会迅速交换它们的壳。

队伍前最大的的蟹将会遗弃它自己的壳,然后那第二大的寄居蟹将会使用那个被最大的寄居蟹遗弃的壳。

然后一直这样传递下去。

由此,这个连续的交换资源使得队伍每一个个体都能得到好处的方式(经济学家称为“空缺链”)启示我们发现更优秀的资源分配方式。

二、模型1.基本模型。

空缺链最初出现在住宅市场,对家庭的初始迁移,包含新家庭或家庭搬走留下的住房市场。

当这个初始空屋单位是第一个房子,当全家搬到了另一个空房子,这个空缺链将继续。

户主的家庭没有搬或当以家庭为单位的房屋拆迁,空置链停止。

我们以职位为社会资源为例,探讨社会资源的更有利分配。

1.1定义和符号。

V i:在i区的空位数 N:区域同质化数 r ij :从i到j地区空置转让转换率 V i r i :1.从i到的空缺j的地区总流面积2.家庭总迁移从i流动到j区面积 F i :i区空置损失率 G i :i区空置生成率 q ij :从i空缺转移到j区概率 Σj m:从i区住宅总面积中被选择的机会 1.2假设。

匈牙利法解决人数及任务数不等的指派问题

匈牙利法解决人数及任务数不等的指派问题

匈牙利法解决人数与任务数不等的指派问题于凯重庆科技学院经济管理学院物流专业重庆沙坪坝区摘要:本文将讨论运筹学中的指派问题,而且属于非标准指派问题,即人数与任务数不相等的指派问题,应当视为一个多目标决策问题,首先要求指派给个人任务数目两两之间相差不能超过1,其次要求所需总时间最少,并且给出了该类问题的求解方法。

关键词:运筹学指派问题匈牙利算法系数矩阵解矩阵引言:在日常的生产生活中常遇到这样的问题:有n项任务,有n个人员可以去承担这n 项任务,但由于每位人员的特点与专长不同,各对象完成各项任务所用的时间费用或效益不同;有因任务性质要求和管理上需要等原因,每项任务只能由一个人员承担来完成,这就涉及到应该指派哪个人员去完成哪项任务,才能使完成n项任务花费总时间最短,总费用最少,产生的总效益最佳。

我们把这类最优匹配问题称为指派问题或分配问题。

1.指派问题的解法——匈牙利法早在1955年库恩(,该方法是以匈牙利数学家康尼格(koning)提出的一个关于矩阵中0元素的定理为基础,因此得名匈牙利法(The Hungonrian Method of Assignment)1.1匈牙利解法的基本原理和解题思路直观的讲,求指派问题的最优方案就是要在n阶系数矩阵中找出n个分布于不用行不同列的元素使得他们的和最小。

而指派问题的最优解又有这样的性质:若从系数矩阵C(ij)的一行(列)各元素都减去该行(列)的最小元素,得到新矩阵CB(ij),那么以CB(ij)为系数矩阵求得的最优解和原系数矩阵C(ij)求得的最优解相同。

由于经过初等变换得到的新矩阵CB(ij)中每行(列)的最小元素均为“○”,因此求原指派问题C(ij)的最优方案就等于在新矩阵CB(ij)中找出n个分布于不同行不同列的“○”元素(简称为“独立○元素”),这些独立○元素就是CB(ij)的最优解,同时与其对应的原系数矩阵的最优解。

1.2匈牙利法的具体步骤第一步:使指派问题的系数矩阵经过变换在各行各列中都出现○元素。

指派问题与匈牙利解法

指派问题与匈牙利解法

指派问题与匈⽛利解法指派问题概述:实际中,会遇到这样的问题,有n项不同的任务,需要n个⼈分别完成其中的1项,每个⼈完成任务的时间不⼀样。

于是就有⼀个问题,如何分配任务使得花费时间最少。

通俗来讲,就是n*n矩阵中,选取n个元素,每⾏每列各有1个元素,使得和最⼩。

如下图:指派问题性质:指派问题的最优解有这样⼀个性质,若从矩阵的⼀⾏(列)各元素中分别减去该⾏(列)的最⼩元素,得到归约矩阵,其最优解和原矩阵的最优解相同.匈⽛利法:12797989666717121491514661041071091.⾏归约:每⾏元素减去该⾏的最⼩元素502022300001057298004063652.列归约:每列元素减去该列的最⼩元素502022300001057298004063653.试指派:(1)找到未被画线的含0元素最少的⾏列,即,遍历所有未被画线的0元素,看下该0元素所在的⾏列⼀共有多少个0,最终选取最少个数的那个0元素。

(2)找到该⾏列中未被画线的0元素,这就是⼀个独⽴0元素。

对该0元素所在⾏和列画线。

50202230000105729800406365502022300001057298004063655020223000010572980040636550202230000105729800406365(3)暂时不看被线覆盖的元素,重复(1)(2)直到没有线可以画。

(4)根据(2)找到的0元素个数判断,找到n个独⽴0元素则Success,⼩于n个则Fail.(本例⼦中,n=5,可以看到,第⼀次试指派之后,独⽴0元素有4个,不符合)4.画盖0线:⽬标:做最少的直线数覆盖所有0元素,直线数就是独⽴0元素的个数。

注意:这跟3的线不同;不能⽤贪⼼法去画线,⽐如1 0 01 1 01 0 1若先画横的,则得画3条线,实际只需2条;若先画竖的,将矩阵转置后同理。

步骤3得出的独⽴0元素的位置50202230000105729800406365(1)对没有独⽴0元素的⾏打勾、(2)对打勾的⾏所含0元素的列打勾(3)对所有打勾的列中所含独⽴0元素的⾏打勾(4)重复(2)(3)直到没有不能再打勾(5)对打勾的列和没有打勾的⾏画画线,这就是最⼩盖0线。

匈牙利法解决人数及任务数不等的指派问题

匈牙利法解决人数及任务数不等的指派问题

匈牙利法解决人数与任务数不等的指派问题于凯重庆科技学院经济管理学院物流专业重庆沙坪坝区摘要:本文将讨论运筹学中的指派问题,而且属于非标准指派问题,即人数与任务数不相等的指派问题,应当视为一个多目标决策问题,首先要求指派给个人任务数目两两之间相差不能超过1,其次要求所需总时间最少,并且给出了该类问题的求解方法。

关键词:运筹学指派问题匈牙利算法系数矩阵解矩阵引言:在日常的生产生活中常遇到这样的问题:有n项任务,有n个人员可以去承担这n 项任务,但由于每位人员的特点与专长不同,各对象完成各项任务所用的时间费用或效益不同;有因任务性质要求和管理上需要等原因,每项任务只能由一个人员承担来完成,这就涉及到应该指派哪个人员去完成哪项任务,才能使完成n项任务花费总时间最短,总费用最少,产生的总效益最佳。

我们把这类最优匹配问题称为指派问题或分配问题。

1.指派问题的解法——匈牙利法早在1955年库恩(w.w.ku.hn)就提出了指派问题的解法,该方法是以匈牙利数学家康尼格(koning)提出的一个关于矩阵中0元素的定理为基础,因此得名匈牙利法(The Hungonrian Method of Assignment)1.1匈牙利解法的基本原理和解题思路直观的讲,求指派问题的最优方案就是要在n阶系数矩阵中找出n个分布于不用行不同列的元素使得他们的和最小。

而指派问题的最优解又有这样的性质:若从系数矩阵C(ij)的一行(列)各元素都减去该行(列)的最小元素,得到新矩阵CB(ij),那么以CB(ij)为系数矩阵求得的最优解和原系数矩阵C(ij)求得的最优解相同。

由于经过初等变换得到的新矩阵CB(ij)中每行(列)的最小元素均为“○”,因此求原指派问题C(ij)的最优方案就等于在新矩阵CB(ij)中找出n个分布于不同行不同列的“○”元素(简称为“独立○元素”),这些独立○元素就是CB(ij)的最优解,同时与其对应的原系数矩阵的最优解。

匈牙利法解决人数与任务数不等的指派问题1

匈牙利法解决人数与任务数不等的指派问题1

匈牙利法解决人数与任务数不等的指派问题于凯重庆科技学院经济管理学院物流专业重庆沙坪坝区摘要:本文将讨论运筹学中的指派问题,而且属于非标准指派问题,即人数与任务数不相等的指派问题,应当视为一个多目标决策问题,首先要求指派给个人任务数目两两之间相差不能超过1,其次要求所需总时间最少,并且给出了该类问题的求解方法。

关键词:运筹学指派问题匈牙利算法系数矩阵解矩阵引言:在日常的生产生活中常遇到这样的问题:有n项任务,有n个人员可以去承担这n 项任务,但由于每位人员的特点与专长不同,各对象完成各项任务所用的时间费用或效益不同;有因任务性质要求和管理上需要等原因,每项任务只能由一个人员承担来完成,这就涉及到应该指派哪个人员去完成哪项任务,才能使完成n项任务花费总时间最短,总费用最少,产生的总效益最佳。

我们把这类最优匹配问题称为指派问题或分配问题。

1.指派问题的解法——匈牙利法早在1955年库恩(w.w.ku.hn)就提出了指派问题的解法,该方法是以匈牙利数学家康尼格(koning)提出的一个关于矩阵中0元素的定理为基础,因此得名匈牙利法(The Hungonrian Method of Assignment)1.1匈牙利解法的基本原理和解题思路直观的讲,求指派问题的最优方案就是要在n阶系数矩阵中找出n个分布于不用行不同列的元素使得他们的和最小。

而指派问题的最优解又有这样的性质:若从系数矩阵C(ij)的一行(列)各元素都减去该行(列)的最小元素,得到新矩阵CB(ij),那么以CB(ij)为系数矩阵求得的最优解和原系数矩阵C(ij)求得的最优解相同。

由于经过初等变换得到的新矩阵CB(ij)中每行(列)的最小元素均为“○”,因此求原指派问题C(ij)的最优方案就等于在新矩阵CB(ij)中找出n个分布于不同行不同列的“○”元素(简称为“独立○元素”),这些独立○元素就是CB(ij)的最优解,同时与其对应的原系数矩阵的最优解。

分配问题与Hungarian算法

分配问题与Hungarian算法

分配问题与Hungarian算法分配问题与Hungarian算法分配问题指派问题匈⽛利算法匈⽛利⽅法是⼀种能够在多项式时间内解决分配问题(assignment problem)的组合优化算法。

它由Harold Kuhn 与1955年发展并提出,由于该算法很⼤程度上依赖于先前两位匈⽛利数学家:Denes Konig 和 Jeno Egervary,所以被命名为“匈⽛利⽅法”。

1957年James Munkres重新审视了这个⽅法,证明发现该⽅法是严格polynomial的,所以之后该⽅法也被称为Kuhn-Munkres 算法或者Munkres分配算法。

原始的匈⽛利算法的时间复杂度是,然⽽之后Edmonds和Karp,以及Tomizawa独⽴发现经过⼀定的修改,该算法能改达到的时间复杂度。

Ford和Fulkerson将该⽅法扩展到⼀般运输问题的求解上。

2006年,研究发现Carl Custav Jacobi在19实际就解决了assignment问题,并且在其逝世后的1890年求解过程被以拉丁语形式发表。

指派问题匈⽛利法解决的指派问题应该具有两个约束条件workes 和tasks的数⽬应该相同,即o2o问题。

求解的是最⼩化问题,如⼯作时间的最⼩化、费⽤的最⼩化等等指派问题⽰例:有三个workers: Jim, Steve和Alan,现在有3个⼯作:clean the bathroom, sweep the floors和wash the windows需要交给这三个⼈,每个⼈只能完成⼀个任务,对应的cost matrix如下---Clean bathroom Sweep floors Wash windowsJim$2$3$3Steve$3$2$3Alan$3$3$2那么如何分配任务是开销最⼩就是⼀个指派问题匈⽛利法步骤问题: 假定某单位有甲、⼄、丙、丁、戊五个员⼯,现需要完成A、B、C、D、E五项任务,每个员⼯完成某项任务的时间如下图所⽰,应该如何分配任务,才能保证完成任务所需要的时间开销最⼩?1476015762594.jpg解:1. 写出系数矩阵2. 更新系数矩阵,使系数矩阵的每⼀⾏每⼀列都减去该⾏该列的最⼩值,保证每⼀⾏每⼀列都有0元素出现,参见定理2.3. 选择只有⼀个0元素的⾏或列将该0元素标注为独⽴0元素,并将该0元素所在的列或⾏中0元素划掉,直⾄找不到满⾜条件的⾏或列,需要注意的是在循环时,划掉的0元素不再视为0元素。

分配问题与匈牙利法

分配问题与匈牙利法

7 8 11 9
第一步:初始变换
2 15 13 4 2 10 4 14 15 4 9 14 16 13 9 7 8 11 9 7
0 13 11 2 6 0 10 11 0574 0142
0042
0 13 7 0 6069 0532 0100
找独立0元素
0 13 7 0 6069 0532 0100
(2)操作简单,应用性强。 在当今国际化的市场 竞争中,企业成本和利
润成为衡量其经营绩效的重要参考指标,企业经 营的目标都是以最小化的成本换回最大化的利润 回报。随着现代科技的飞速发展,企业必须适应 时代的潮流,不断进行技术创新和产品研发,在 此过程中,科学合理的决策方案将成为影响企业 发展的重要因素。 匈牙利法不仅可以为企业人事 决策提供可靠的政策建议,同时可以预测和估算 出企业未来一段时期的成本和收益总量,而且操 作方便,应用性强,受到了现代企业管理者的青 睐。
设 1 xij 0
分配第i人完成第j项任务 未分配第i人完成第j项任务
nn
min z
aij xij
i 1 j 1
n
xij 1,
i 1, 2, ..., n
j1
n
s.t . xij 1, j 1, 2, ..., n
i 1
xij
1或0

分配问题的匈牙利解法
定义1 效率矩阵
处理方法:用效率矩阵中的最大元素减去矩阵 中的各个元素得到一个新的矩阵,对这个新的 矩阵用匈牙利方法求解。

《基于匈牙利法的企业员工任务分配问 题研究》
基金项目:国家社科基金资助项目(06BZZ022) 统计与决策2011年第5期
摘 要: 现代企业的发展,必须依托科学高效的

整数规划---匈牙利法

整数规划---匈牙利法

Step4:增加(转移)零元素 a.求出未被直线覆盖的元素中的最小值k(本例中 k=2). b.对打√行减去k,对打√列加上k go to step2
2 (0) 8 11 (0) 5 2 3 (0) 0 13 4

5 √ 4 0 √ 5
0 (0) 6 13 (0) 5 4 3 (0) 0 11 2
i =1 j =1 n n
∑x
i =1 n j =1
n
ij
=1 =1
∑x
ij
xij = 0或 ,i = 1 ~ n, j = 1 ~ n 1
显然,这是一个典型的0-1规划问题。也可以看成是一 个产量和销量为1的运输问题。可以用相应方法求解。 但有解分配问题更有效的方法—匈牙利法
匈牙利法
由最大匹配问题的讨论可知,可行解可用一个0-1矩阵 给出。如前例
2 2 4 4 0 0 4 3 6 5 0 4 2 1 0 2 5 0 3 6 3 2 3 1 7 -1 -2
指派问题与匈牙利法
2)试指派(找独立0元素) )试指派(找独立 元素 元素)
2 2 4 4 0
0 4 2 4 5 0 3 0 1 0 1 3 0 3 5 1 2 3 0 5
所以,给出求最大匹配的匈牙利算法
x1 x2 设A = x3 x4 x5
1 0 0 0 0
y1
y2
1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 1 1
y3
y4
y5
求最大匹配。
有一份中文说明书,需译成英、日、德、俄四种文字,分别 记为E、J、G、R,现有A、B、C、D四人,他们将中文翻 译成不同语种,所需时间如表3-1.问应分配何人去完成何工 作,使所需总时间最少(一人做一件事)。

运用匈牙利法求解分配问题

运用匈牙利法求解分配问题

运用匈牙利法求解分配问题于淑兰【摘要】文中针对于运筹学基础及应用的教材上运用匈牙利法求解分配问题的过程做了改进,并举例说明了矩阵中没有独立零元素情况的具体处理办法.【期刊名称】《通化师范学院学报》【年(卷),期】2011(032)006【总页数】3页(P9-10,13)【关键词】匈牙利法;独立零元;调整;假设【作者】于淑兰【作者单位】泊头职业学院经济管理系,河北泊头062150【正文语种】中文【中图分类】O22匈牙利法是求解极小型(优化方向为极小)指派问题的一种方法,这种方法最初由w.w.kuhn提出,后经改进而形成,解法基于匈牙利数学家D.König给出的一个定理而得名.它的基本原理是:对任何一个求最小值的效率矩阵(cij),将其某一行或某一列的各个元素减去或者加上同一个常数k,得到一个新的矩阵(bij),则新矩阵与原矩阵有相同的最优解.如果问题是求最大值的话,则需要把目标函数转换成求最小值,再使用匈牙利法求解.当矩阵中独立零元素的个数等于矩阵阶数n时,独立零元素对应的变量xij=1,其他元素对应的变量xij=0,这就是分派问题的最优解矩阵,而很多情况下我们很难直接得到独立零元素的个数等于矩阵阶数这种结果,遇到这种情况需要进行调整,在《运筹学基础及应用》这本教材中给出了调整的方法,在教学过程中发现书中针对此内容写的有些松散,方法不易学生接受,难度大.结合自己的教学经验,归纳整理了一个更为简单可行的调整方法.下面将其应用到具体实例中加以说明.例1 有一份说明书,要分别译成英、日、德、俄四种文字,交甲、乙、丙、丁四个人去完成.因个人专长不同,他们完成翻译不同文字所需的时间(h)如表1所示,应如何分配,使这四人分别完成这四项任务总的时间为最小.表1 翻译不同文字所需的时间(h)人工作甲乙丙丁译成英文21097译成日文154148译成德文13141611译成俄文415139解题步骤如下:(1)先从效率矩阵的每行减去该行的最小元素,再从效率矩阵的每列减去该列的最小元素;(2)找出矩阵中独立零元素.先找出每行中仅有一个“0”的元素,并划去与该“0”同列的其他0元素,即φ;然后对矩阵的列作同样的变换;(3)当矩阵中独立零元素的个数等于矩阵的阶数时,可以分派任务,否则需要调整矩阵,方法如下:①对没有独立的零所在的行打*;②在已打*的行中,对φ所在的列打*;③在已打*的列中,对有独立零所在的行打*;简记为:没有零的行→φ的列→有独立零的行;④重复以上三步直到不能做标记为止;⑤用直线划去没有标记的行,划去有标记的列;⑥将保留下来的元素减去它们的最小元素,将仅被一条直线覆盖的元素保持不变,将同时被两条直线覆盖的元素,分别加上“减去的最小元素”.调整完毕后,再重新找出独立的零元,满足独立零元的个数等于矩阵的阶数,就停止,否则就按上述步骤继续调整,直到得到分配方案为止.解 (1)从矩阵的每行减去该行的最小元素,再从矩阵的每列减去该列的最小元素(目的是为了简化数据);→→(2)找出矩阵中独立的零元素,记得要划去对应列或者对应行的“0”;→发现丁没有事情做.(3)由于独立零元素的个数为3个,小于矩阵的阶数4,所以必须进行调整.未被直线覆盖的数字最小的是2,将“8、2、5、11、4、5”分别减去2,将同时被两条直线覆盖的数字“11、2”加上2,得到新的矩阵,并找出独立的零元→ 独立零元的个数等于矩阵的阶数,调整完毕.即最优方案为:甲将说明书译成俄文,乙将说明书译成日文,丙将说明书译成英文,丁将说明书译成德文,全部所需的时间为4+4+9+11=28h,这种方法,相对于教材要简单明了,思路上更清晰,学生更容易接受.有时我们会发现对矩阵进行调整后,各行各列都没有独立的零元素,对于这种情况就需要进行假设.例2 假定有五位司机被分配完成五项任务,完成各项任务的时间(h)如表2:问应如何分配,使得这五位司机完成这五项任务时间最短.表2 司机完成任务的时间任务A任务B任务C任务D任务E司机甲759811司机乙9127119司机丙85469司机丁73696司机戊467511解 (1)从矩阵的每行减去该行的最小元素,再从矩阵的每列减去该列的最小元素,并找出独立的零元素.→→→独立零元的个数是4,不等于矩阵的阶数5,需要调整.(2)调整矩阵独立零元的个数不等于矩阵的阶数,仍需要调整.(3)按照规则进行调整矩阵中各行各列都没有独立的零.可以从第一行中任意一个“0”处进行假设,此例中第一行共有三个零,可以进行三种假设.(4)①假设司机甲做任务A,找出独立的零元,要注意的是,甲已经做了任务A,就不能再做其他任务,所以第一行中余下的两个“0”应划去,同时划去第一列的“0”;再从各行到各列找出独立的零元.独立零元的个数等于矩阵的阶数,得到分配方案1.司机甲完成任务A,司机乙完成任务E,司机丙完成任务C,司机丁完成任务B,司机戊完成任务D.完成该方案总的时间为:7+9+4+3+5=28h.②假设司机甲做任务B,依照上述方法找出独立的零元,独立零元的个数等于矩阵的阶数,得到方案2:司机甲完成任务B,司机乙完成任务C,司机丙完成任务D,司机丁完成任务E,司机戊完成任务A.完成该方案总的时间为:5+7+6+6+4=28h.③假设司机甲做任务D,找出独立的零元,,独立零元的个数等于矩阵的阶数,得到方案3:司机甲完成任务D,司机乙完成任务E,司机丙完成任务C,司机丁完成任务B,司机戊完成任务A.完成该方案总的时间为:5+7+6+6+4=28h.经过对比发现三个方案用时是一样的,所以用哪个方案均可,如果问题中三个方案的时间不相同,我们应该取用时最短的那个方案.参考文献:[1]王凯阳.物流运筹学[M].北京:北京大学出版社,2009.[2]胡运权,等.运筹学基础及应用[M].第五版,北京:高等教育出版社,2008.。

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

2
5
Ø0
3
◎0
4 1 ◎0 1 3
选择直线外的最小元素 为1;直线外元素减1, 直线交点元素加1,其 他保持不变。
4
Ø0
3
5
1

◎0 2 3 0Ø 5

分配问题与匈牙利法
1 ◎0 3 1 3 √
2
6 Ø0 3
0◎

l =m=4 < n=5
选择直线外最小元素为1, 直线外元素减1,直线交
分配问题与匈牙利法
3 4 3 0
0
1
0
5
2 0 4 4
2
6
0
0
试指派
3 4 3 ◎

1
Ø
5
2 ◎ 4 4
2
6

Ø
得到4个独立零元素, 所以最优解矩阵为:
0 0 0 1
1
0
0
0
0 1 0 0
0 0 1 0
即完成4个任务的总时间最少为:2+4 +1+8=15
分配问题与匈牙利法
例4.8 已知五人分别完成五项工作耗费如下表,求最优分配 方案。
)
4 3
5 1
9 10
8 4 4 1
5 9 8 2 2
2)试指派(找独立0元素)
4 5 9 0
0
1
5
4
2 0 9 3
3
7
6
0
-5
4 5 4 0
0
1
0
4
பைடு நூலகம்
2 0 4 3
3 7 1 0
4 5 4 ◎

1
Ø
4
2 ◎ 4 3
3
7
1
Ø
找到 3 个独立零元素
但m=3< n= 4
分配问题与匈牙利法
若仍有没有划圈的0元素,且同行(列)的0元素至少有两个,比 较这行各0元素所在列中0元素的数目,选择0元素少这个0元素 加圈(表示选择性多的要“礼让”选择性少的)。然后划掉同行同 列的其它0元素。可反复进行,直到所有0元素都已圈出和划掉为 止。
分配问题与匈牙利法
若◎ 元素的数目m 等于矩阵的阶数n(即:m=n),那么这
0
0
0
0
分配问题与匈牙利法
3. 一个人可做几件事的指派问题
若某人可做几件事,则将该人化作相同的几个“人”来接受指派,且费用系数 取值相同。
例如:丙可以同时任职A和C工作,求最优指派方案。
甲 15 20 10 9

6
5
4
7
丙 10 13 16 17
15 20 10 9
6
5
4
7
10 13 16 17
2)试指派(找独立0元素)
2 0 4 2 4
2
5
0
3
0
4 1 0 1 3
4
0
3
5
1
0 2 3 0 5
2 0◎ 4 2 4
2
5
Ø0
3
◎0
4 1 0◎ 1 3
4
Ø0 3
5
1
0◎ 2 3 Ø0 5
独立0元素的个数l=4<5,故画直线调整矩阵。
分配问题与匈牙利法
2 ◎0 4 2 4 √
0 1 0 0 0
0
0
0
1
0
0 0 0 0 1
1 0 0 0 0
0 0 1 0 0
即甲-B,乙-D,丙-E,丁-A, 任务C放弃。
最少时间为105。
0元素对应解矩阵(xij)中的元素为1,其余为0,这就得到最优解。
分配问题与匈牙利法
找独立0元素,常用的步骤为:
从只有一个0元素的行开始,给该行中的0元素加圈,记作◎ 。 然后划去◎ 所在列的其它0元素,记作Ø ;这表示该列所代表的 任务已指派完,不必再考虑别人了。依次进行到最后一行。
从只有一个0元素的列开始(画Ø的不计在内),给该列中的0 元素加圈,记作◎;然后划去◎ 所在行的0元素,记作Ø ,表示 此人已有任务,不再为其指派其他任务了。依次进行到最后一列。
11
6
3
8 14 17
6
4
5
3
2
1
5 9 10 0 0
11
6
3
0
0
8 14 17 0 0
6
4
5
0
0
3 2 1 0 0
当人数m小于工作数n时,加上n-m个人,例如
15 20 10 9
6
5
4
7
10 13 16 17
15 20 10 9
6
5
4
7
10 13 16 17
10
13
16
17
分配问题与匈牙利法
4. 某事一定不能由某人做的指派问题
将该人做此事的效率系数取做足够大的数,可用M表示。
例4.10 分配甲、乙、丙、丁四个人去完成A、B、C、D、E五项 任务。每个人完成各项任务的时间如表所示。由于任务数多于人 数,考虑任务E必须完成,其他4项中可任选3项完成。试确定最 优分配方案,使完成任务的总时间最少。
3)作最少的直线覆盖所有0元素
4 5 4 ◎ √

1
Ø
4
2 ◎ 4 3
3
7
1
Ø

独立零元素的个数m等于最少 直线数l,即l=m=3<n=4;

4)没有被直线通过的元素中选择最小值为1,变换系数矩阵,将没有被直线通
过的所有元素减去这个最小元素;直线交点处的元素加上这个最小值。得到新
的矩阵,重复2)步进行试指派
指派问题的最优解已得到。若m < n, 则转入下一步。
3) 用最少的直线通过所有0元素。其方法:
① 对没有◎的行打“√”; ② 对已打“√” 的行中所有含Ø元素的列打“√” ; ③ 再对打有“√”的列中含◎ 元素的行打“√” ; ④ 重复①、②直到得不出新的打√号的行、列为止; ⑤ 对没有打√号的行画横线,有打√号的列画纵线,这就得到覆盖
分配问题与匈牙利法
解: 1) 这是不平衡的指派问题,首先转换为标准型,再用匈牙利 法求解。 2) 由于任务数多于人数,所以假定一名虚拟人,设为戊。因为工 作E必须完成,故设戊完成E的时间为M(M为非常大的数),其 余效率系数为0,则标准型的效率矩阵表示为:
分配问题与匈牙利法
用匈牙利法求出最优指派方案为:
分配问题与匈牙利法
解:1)变换系数矩阵,增加0元素。
7 5 9 8 11 5
9
12
7 11
9
7
8 5 4 6 9 4
7 3 6 9 6 3
4 6 7 5 11 4
2 0 4 3 6
2
5
0
4
2
4 1 0 2 5
4 0 3 6 3
0 2 3 1 7
-1 -2
分配问题与匈牙利法
分配问题与匈牙利法
例4.6 有一份中文说明书,需译成英、日、德、俄四种文字, 分别记作A、B、C、D。现有甲、乙、丙、丁四人,他们将 中文说明书译成不同语种的说明书所需时间如下表所示,问 如何分派任务,可使总时间最少?
分配问题与匈牙利法
解:1)变换系数矩阵,增加0元素。
6 7 11 2 2
( c ij
所有0元素的最少直线数 l 。
注:l 应等于m,若不相等,说明试指派过程有误,回到第2步,另行试 指派;若 l=m < n,表示还不能确定最优指派方案,须再变换当前的系 数矩阵,以找到n个独立的0元素,为此转第4步。
分配问题与匈牙利法
4) 变换矩阵(bij)以增加0元素
在没有被直线通过的所有元素中找出最小值,没有被直线 通过的所有元素减去这个最小元素;直线交点处的元素加上这个 最小值。新系数矩阵的最优解和原问题仍相同。转回第2步。
注:此问题有多个最优解
分配问题与匈牙利法
Ø0 Ø0 3 ◎0 3
1
6
0Ø 2
0◎
3 2 0◎ 0Ø 3
2
0◎
2
3
Ø0
0◎ 4 4 0Ø 6
总费用为=8+9+4+3+4=28
分配问题与匈牙利法
2. 不平衡的指派问题
当人数m大于工作数n时,加上m-n项虚拟工作,例如:
5
9 10
4 2 ◎0 1 3 √ 点元素加1,其他保持不
3
Ø0 2
4
变,得到新的系数矩阵。
0 Ø √
◎0 3 3 Ø0 5
√√

分配问题与匈牙利法
0Ø ◎0 3 0Ø 3
1
6
0◎ 2
Ø0
3 2 0Ø 0◎ 3
2
Ø0
2
3
◎0
◎0 4
4
总费用为
0 6 Ø
=5+7+6+6+4=28
分配问题与匈牙利法
指派问题的求解步骤:
1) 变换指派问题的系数矩阵(cij)为(bij),使在(bij)的各行各列中都出现0元素,即 • 从(cij)的每行元素都减去该行的最小元素; • 再从所得新系数矩阵的每列元素中减去该列的最小元素。
2) 进行试指派,以寻求最优解。 在(bij)中找尽可能多的独立0元素,若能找出n个独立0元素,就以这n个独立
相关文档
最新文档