分配问题及匈牙利算法

合集下载

【算法题】任务分配问题---匈牙利算法

【算法题】任务分配问题---匈牙利算法

【算法题】任务分配问题---匈⽛利算法⼀、问题描述问题描述:N个⼈分配N项任务,⼀个⼈只能分配⼀项任务,⼀项任务只能分配给⼀个⼈,将⼀项任务分配给⼀个⼈是需要⽀付报酬,如何分配任务,保证⽀付的报酬总数最⼩。

问题数学描述:⼆、实例分析---穷举法在讲将匈⽛利算法解决任务问题之前,先分析⼏个具体实例。

以3个⼯作⼈员和3项任务为实例,下图为薪酬图表和根据薪酬图表所得的cost矩阵。

利⽤最简单的⽅法(穷举法)进⾏求解,计算出所有分配情况的总薪酬开销,然后求最⼩值。

total_cost1 = 250 + 600 + 250 = 1100; x00 = 1,x11 = 1,x22 = 1;total_cost2 = 250 + 350 + 400 = 1000; x00 = 1,x12 = 1,x21 = 1;total_cost3 = 400 + 400 + 250 = 1050; x01 = 1,x10 = 1,x22 = 1;total_cost4 = 400 + 350 + 200 = 950; x01 = 1,x12 = 1,x20 = 1; //最优分配total_cost5 = 350 + 400 + 400 = 1150; x02 = 1,x10 = 1,x21 = 1;total_cost6 = 350 + 600 + 250 = 1150; x02 = 1,x11 = 1,x22 = 1;对于任务数和⼈员数较少时,可利⽤穷举法计算结果。

若将N任务分配给N个⼈员,其包含的所有分配情况数⽬为N!,N增⼤时,穷举法将难以完成任务。

三、匈⽛利算法下⾯简要介绍匈⽛利算法。

其基本的理论基础是针对cost矩阵,将cost矩阵的⼀⾏或⼀列数据加上或减去⼀个数,其最优任务分配求解问题不变。

算法的基本步骤如下:四、实例分析---匈⽛利算法下⾯结合具体实例,分析匈⽛利算法如何解决任务分配问题。

以N = 4为实例,下图为cost列表和cost矩阵。

匈牙利算法

匈牙利算法
第22页
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
第23页
50202 23000 0 10 5 7 2 98004 06365
第24页
➢从只有一个0元素的行开始,给 这个0元素加圈,记
50202 23000
10 5 7 2
70202 4 3 00Ø Ø 8 3 5 11 8 0 0 4 4 1 4 3
第49页
➢从只有一个0元素的列开始,给这个0 元素加圈,记
72 0 2 4 3 00Ø Ø 8 3 5 11 8 0 0 4 4 1 4 3
第50页
然后划去所在的行的其他0元素,记 作Ø。
72Ø 2 4 3 00Ø Ø 8 3 5 11 8 0 0 4 4 1 4 3
第11页
2 15 13 4 2 10 4 14 15 4 (cij)= 9 14 16 13 9 7 8 11 9 7
0 13 11 2
6 0 10 11
057 4
0 13 7 0 606 9
014 2 42
053 2
010 0
第12页
第二步:进行试分配,以寻找最优解。
➢从只有一个0元素的行(或列)开 始,给这个0元素加圈,记,然后 划去所在的列(或行)的其他0元 素,记作Ø。
第34页
对没有的行,打
52Ø 2 2 3Ø Ø 10 5 7 2 9 8 Ø 4 Ø 6365
第35页
对已打行中所有含0元素的列打
52Ø 2 2 3Ø Ø 10 5 7 2 9 8 Ø 4 Ø 6365
第36页
再对打列中含0元素的行打 52Ø 2 2 3Ø Ø 10 5 7 2 9 8 Ø 4 Ø 6365

§2 分配问题与匈牙利法

§2 分配问题与匈牙利法
000 0 0
第二步:寻找独立0元素
50202 23000 0 10 5 7 2 -2 98004 0 6 3 6 5 -2
+2
最小元素为 min{10,5,7,2,6,3,6,5}=2
70202
43000 08350 11 8 0 0 4 04143
它有5个独立0元,得到最优解相应的解矩阵为
(1)任务E必须完成,其他4项中任选3项 完成;
任务 A B C D E 人员

25 29 31 42 37

39 38 26 20 33

34 27 28 40 32

24 42 36 23 45

0 0 0 0M
(2)其中有一人完成两项,其他每人完成一项;
任务 A B C D E 人员

25 29 31 42 37
第二步:在B中寻找位于不同行、不同列的 0元素。
(1)检查B的每行每列,从中找出未加标 记的0元素最少的一排(即行列的统称), 在该排用()标出一个0元,若该排有多个0 元,则任意标出一个即可;
(2)把刚得到()号标记的0元所在的行、列中 的其余0元划去,用表示;
(3)凡是(0), 就成为加了标记的0元,返 回(1)重复(1)、(2)、 ( 3),直到所 有0元都加上标记为止。若得到的加()号的0元 素个数等于n,则结束;否则转第三步
0 13 7 0 6069 0532 0100
0 13 11 2 6 0 10 11 0574 0142
0042
独立0元素
0 13 7 0 6069 0532 0100
得解矩阵
0 0 0 1
X
0
1
1 0

4.2-分配问题和匈牙利法

4.2-分配问题和匈牙利法
整数规划
❖整数规划的数学模型 ❖设置逻辑变量建立整数规划模型 分配问题与匈牙利法 ❖分支定界法、割平面法 ❖应用举例
§3 分配问题与匈牙利法
分配问题的标准形式及其数学模型
➢ 分配问题也称指派问题(assignment problem),在我们现实 生活中,常有各种性质的分配问题.例如:应如何分配若干 项工作给若干个人(或部门)来完成,以达到总体的最佳效果 等等.由于分配问题的多样性,我们有必要定义分配问题的 标准形式.
❖ 匈牙利法
0 8 2 5
上述例子完成一、二、三步之后如右:11 0 5 4
转向第四步:
2 3 0 0
0
11
4
5
k=2
u1=2 u2=2 u3=0 u4=2
2 6 0 3
9
2 3 2
2 3 0 0
2 9 2 3
回到第三步: 0 8 0 3 11 0 3 2
4 5 0 0
0
11
2
3、一个人可做几项任务的分配问题
4、目标函数为求最大值(最大化的分配问题)
nn
nn
max z
cij xij min w
cij xij
i1 j1
i1 j1
效率矩阵中元素全为负数,根据定理1,让效率矩阵中所有元素变成非负数,再利用匈牙利 法求解.
❖ 不平衡的分配问题
例1.已知下列五名运动员各种姿势的游泳成绩(各 为50m)如下表.试问如何从中选拔一个4×50m混 合泳的接力队,使预期的比赛成绩为最好?
37.7
43.4
C 33.3 29.2
0
32.9 33.1 28.5 26.4
0
38.8 42.2 38.9 29.6

匈牙利算法求解原理的应用

匈牙利算法求解原理的应用

匈牙利算法求解原理的应用什么是匈牙利算法匈牙利算法是一种用于解决二分图最大匹配问题的算法。

所谓二分图,就是一个节点集合可以分为两个不相交的子集,而且每个子集内的节点之间不存在边。

在二分图中,最大匹配问题就是寻找最大的边集合,使得每个节点都和边集合中的某条边相邻接。

匈牙利算法的原理是通过增广路径的方法来求解最大匹配问题。

其中增广路径是指在匹配图中的一条未被匹配的边交替经过未被匹配的节点,最终到达另一个未被匹配的节点的路径。

匈牙利算法的应用匈牙利算法有许多实际应用场景。

以下列举了一些典型的应用案例:1.婚姻匹配问题:假设有n个男人和n个女人,每个人都有一个倾向表,表明他们对各种婚姻选择的偏好程度。

那么如何进行匹配,使得每个人都得到一个满意度最高的选择,同时保证没有不合适的匹配?这就可以使用匈牙利算法进行求解。

2.任务分配问题:假设有m个任务和n个工人,每个任务对于每个工人都有不同的技能要求和报酬。

如何将任务分配给工人,使得任务总报酬最大化,并满足每个任务的要求?这也可以使用匈牙利算法进行求解。

3.运输问题:在某个地区有n个供应点和n个需求点,以及不同供应点到需求点之间的运输成本。

那么如何选择合适的运输方案,使得总运输成本最小?同样可以使用匈牙利算法进行求解。

4.社交网络匹配问题:在一个社交网络中,每个人都有一定的朋友圈和交往偏好。

如何将这些人进行匹配,使得每个人都能够找到最适合的交往对象?匈牙利算法也可以应用于这种情况。

匈牙利算法的实现步骤下面是匈牙利算法的具体实现步骤:1.在匹配图中选择一个未匹配的顶点作为起始点,并为其标记为已访问。

2.对于当前顶点的每一个邻接顶点,如果该邻接顶点未被匹配,则找到一条增广路径。

如果该邻接顶点已被匹配,但可以通过其他路径找到一条增广路径,则将该邻接顶点的匹配权转移到当前顶点的匹配边上。

3.继续选择下一个未匹配的顶点,重复步骤2,直到无法找到增广路径为止。

4.返回当前匹配图的最大匹配。

第五讲分配问题指派问题与匈牙利法

第五讲分配问题指派问题与匈牙利法

i1 j 1
相关定理
使每行每列 都出现零元素
定理:若将分配问题系数矩阵的每一行及每一列分别 减去各行及各列的最小元素,则新分配问题与原分配 问题有相同的最优解,只有最优值差一常数。
时 工作
时 工作

A
B
间C
A
B
C
人员
人员

7 8
甲9
0 10
2

9
12
乙4 5
87
0

8
5
丙4 4
10 0
步骤1:变换系数矩阵,使其每行每列都出现0元素
cn1
cn1
...
cnn
x11 x12 ... x1n
X
x21
x22
...
x2
n
... ... ... ...
xn1
xn1
...
xnn
系数矩阵
(效率矩阵)
n个人 n件事
解矩阵
(决策变量矩 阵)
定义:在系数矩阵C中,处在不同行不同列的一
组零元素,称为独立零元素组,其中每个元素
称为独立零元素。
圈0个数等于n=55 0 2 0 9
2 3 0 0 8
0 10 5 7 5 9 8 0 0 4
0 6 3 6 0
0 1 0 0 0
0 0 1 0 0
1 0 0 0 0 0 0 0 1多重0最优解
0 0 0 0 1
5 0 2 0 9
2 3 0 0 8
0 10 5 7 5 9 8 0 0 4
0 6 3 6 0
一纵线,即得到覆盖当前0元素的最少直线集。
0 3 0 11 8
0 1 7 7 3

分配问题与匈牙利法

分配问题与匈牙利法

0 13 11 2
10 4 14 15 4
9 14 16 13 9
7 8 11 9 7
6 0 10 11
0 5 7 4
0 1
4
2
2)试指派(找独立0元素) 4 2
0 13 7 0 6 0 6 9 0 5 3 2 0 1 0 0
0Ø 13 7 ◎0
6 ◎0 6 9
0◎ 5 3 2

分配问题与匈牙利法
Page 24
1. 最大化指派问题
处理方法:设m为最大化指派问题系数矩阵C中最大元素。
令矩阵B=(m-cij)nn则以B为系数矩阵的最小化指派问题和
原问题有相同的最优解。
例4.9 某人事部门拟招聘4人任职4项工作,对他们综合考评的 得分如下表(满分100分),如何安排工作使总分最多。
分配问题与匈牙利法
Page 7
例4.6 有一份中文说明书,需译成英、日、德、俄四种文字, 分别记作A、B、C、D。现有甲、乙、丙、丁四人,他们将 中文说明书译成不同语种的说明书所需时间如下表所示,问 如何分派任务,可使总时间最少?
任务
A
B
C
D
人员

6
7
11
2

4
5
9
8

3
1
10
4

5
9
8
2
分配问题与匈牙利法
Page 8
解:1)变换系数矩阵,增加0元素。
6 7 11 2 2
4 5 9 0
(cij
)
4 3
5 1
9 10
8 4 4 1
5 9 8 2 2
0 1 5 4 2 0 9 3 3 7 6 0

线性规划例题5分配问题及匈牙利算法

线性规划例题5分配问题及匈牙利算法
• (1)分别取决策变量x1 ,x2 为坐标向量建立
直角坐标系。 • (2)对每个约束(包括非负约束)条件,
先取其等式在坐标系中作出直线,通过
判断确定不等式所决定的半平面。各约束半 平面交出来的区域(存在或不存在),若存在, 其中的点表示的解称为此线性规划的可行解。 这些符合约束限制的点集合,称为可行集或 可行域。
同时,我们有一个追求目标,即获
取最大利润。于是可写出目标函数z
为相应的生产计划可以获得的总利
润:z=40x1+30x2 +50x3
【解】设x1、x2、x3 分别为甲、乙、丙三种产品 的产量数学模型为:
mZ a 4 x x 1 0 3x 2 0 5x 3 0
3 x1 x 2 2 x3 200
问:如何分配,能使所需的 总时间最少?
人 工作 甲 乙 丙 丁
译英文 2 10 译日文 15 4 译德文 13 14 译俄文 4 15
97 14 8 16 11 13 9
1.1 数学模型 Mathematical Model
线性规划(Linear Programming,缩写为LP)是运筹学的重 要分支之一,在实际中应用得较广泛,其方法也较成熟, 借助计算机,使得计算更方便,应用领域更广泛和深入。
怎样辨别一个模型是线性规划模型?其特征是: 1.解决问题的目标函数是多个决策变量的线性函 数,通常是求最大值或 最小值; 2.解决问题的约束条件是一组多个决策变量 的线 性不等式或等式。
书本还例举了诸如合理用料问题;配料问题;投资问题;均衡配 套生产问题等.
• 线性规划的一般模型
max(min)Z c1x1 c2 x2 L cn xn
6
x 1 0 、 x 2 0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0 13 11 2
6
0
10
11
0 5 7 4
0
1
4
2
2020/12/13
6
第4章 整数规划与分配问题
运筹学
0 13 11 2
6
0
10
11
0 5 7 4
0
1
4
2
-0 -0 -4 -2
0 13
6
0
0 5
0
1
7 0
6
9
3 2
0
0
2020/12/13
7
第4章 整数规划与分配问题
4
2 ◎ 4 3
3
7
1
Ø


3 4 3 ◎
◎ 1
Ø
5
2 ◎ 4 4
2
6
0
Ø
3 4 3 ◎
◎ 1
Ø
5
2 ◎ 4 4
2
6

Ø
得到4个独立零元素, 所以 最优解矩阵为:
2020/12/13
运筹学
3 4 3 0
0
1
0
5
2 0 4 4
2
6
0
0
0 0 0 1
1
0
0
0
0 1 0 0
3
0
2
4
0
3
Ø0
2
4
◎0

0 3 3 0 5 ◎0 3 3 Ø0 5
√√

2020/12/13
20
第4章 整数规划与分配问题
运筹学
1 ◎0 3 1 3 √
英语 6 4 3 5
日语 7 5 1 9
德语 11 9 10 8
俄语 2 8 4 2
第4章 整数规划与分配问题
求解过程如下: 第一步,变换系数矩阵:
运筹学
6 7 11 2 2
(cij
)
4 3
5 1
9 10
8 4 4 1
5 9 8 2 2
4 5 9 0
0
1
5
4
2 0 9 3
3
7
6
0
4 5 4 0
4
Ø0
3
5
1
◎0 2 3 0Ø 5
1 0 3 1 3
2
6
0
3
0
4 2 0 1 3
3
0
2
4
0
0 3 3 0 5
2020/12/13
19
第4章 整数规划与分配问题
运筹学
1 0 3 1 3 1 ◎0 3 1 3 √
2
6
0
3
0
2
6
◎0
3
Ø0

4 2 0 1 3 4 2 Ø0 1 3 √
2020/12/13
4
第4章 整数规划与分配问题
例1
任务
人员
A
B
C
D

2
15
13
4

10
4
14
15

9
14
16
13

7
8
11
9
运筹学
第4章 整数规划与分配问题
求解过程如下: 第一步,变换系数矩阵:
2 15 13 4 -2
10
4
14
15
-4
9 14 16 13 -9
7
8 11
9
-7
运筹学
2020/12/13
17
第4章 整数规划与分配问题
运筹学
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

l =m=4 < n=5
2020/12/13
18
第4章 整数规划与分配问题
运筹学
2 ◎0 4 2 4
2
5
Ø0
3
◎0
4 1 ◎0 1 3
例3
运筹学
费 工作

A
B
C
D
E
人员

7
5
9
8
11

9
12
7
11
9

8
5
4
6
9

7
3
6
9
6

4
6
7
5
11
第4章 整数规划与分配问题
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
2020/12/13
运筹学
2 0 4 3 6
2
5


独立零元素的个数m等于最少直线数l,即l=m=3<n=4;
第四步,变换矩阵(bij)以增加0元素:没有被直线覆盖的所有元素中的最小元素为1,然后 打√各行都减去1;打√各列都加上1,得如下矩阵,并转第二步进行试指派:
2020/12/13
12
ቤተ መጻሕፍቲ ባይዱ
第4章 整数规划与分配问题
4 5 4 ◎ √

1
Ø
0
0
1
0
13
第4章 整数规划与分配问题
任务 人员
甲 乙 丙 丁
英语 6 4 3 5
日语 7 5 1 9
德语 11 9 10 8
此分配问题的最优时间:2+4+1+8=15
运筹学
俄语 0 0 0 1
2
1
0
0
0
8
0 1 0 0
4 2
0
0
1
0
2020/12/13
14
第4章 整数规划与分配问题
0
4
2
4 1 0 2 5
4
0
3
6
3
0 2 3 1 7
-1 -2
16
第4章 整数规划与分配问题
运筹学
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
1
0
4
2 0 4 3
3
7
1
0
第二步,试指派:
-5
4 5 4 ◎
◎ 1
Ø
4
2 ◎ 4 3
3
7
1
Ø
找到 3 个独立零元素 但m=3<n=4
2020/12/13
11
第4章 整数规划与分配问题
运筹学
第三步,作最少的直线覆盖所有0元素:
4 5 4 ◎ √

1
Ø
4
2 ◎ 4 3
3
7
1
Ø
13

7
8
11
9 0 0 1 0
此分配问题的最优时间:4+4+9+11=28
第4章 整数规划与分配问题
运筹学
例 2 有一份中文说明书,需译成英、日、德、俄四种文字。现有甲、乙、丙、丁四人,他们 将中文说明书译成不同语种的说明书所需时间如下表所示,问如何分配任务,使总时间最少?
任务 人员
甲 乙 丙 丁
第4章 整数规划与分配问题
例1
任务
人员
A
B
C
D

2
15
13
4

10
4
14
15

9
14
16
13

7
8
11
9
运筹学
第4章 整数规划与分配问题
运筹学
2. 匈牙利法
第一步:变换指派问题的系数矩阵(cij)为(bij),使在(bij)的各行各列中都出现0元素 第二步:进行试分配,以寻求最优解。如果得到最优解,运算结束,否则转到第三步。 第三步:作最少的直线覆盖所有0元素。 第四步:变换矩阵(bij)以增加0元素,转到第二步。
第4章 整数规划与分配问题
运筹学
分配问题与匈牙利法
2020/12/13
1
第4章 整数规划与分配问题
运筹学
1. 分配问题
在实际中经常会遇到这样的问题,有n 项不同的任务,需要n 个人分别完成其中的一项,但 由于任务的性质和各人的专长不同,因此各人去完成不同的任务的效率(或花费的时间或费 用)也就不同。于是产生了一个问题,应指派哪个人去完成哪项任务,使完成 n 项任务的总 效率最高(或所需时间最少),这类问题称为分配问题或指派问题。
第二步,试分配:
0Ø 13
6
0◎
0◎ 5

1
7 ◎0
6
9
3 2
0◎ Ø0
运筹学
0 0 0 1
0
1
0
0
1 0 0 0
0
0
1
0
2020/12/13
8
第4章 整数规划与分配问题
运筹学
任务
人员
A
B
C
D 0 0 0 1
相关文档
最新文档