匈牙利算法在企业员工指派问题的应用(最终版)

匈牙利算法在企业员工指派问题的应用(最终版)
匈牙利算法在企业员工指派问题的应用(最终版)

闽江学院

本科毕业论文

题目匈牙利算法在企业员工指派问题的应用学生姓名张雯

学号120080901139

系别数学系

年级2008级

专业数学与应用数学

指导教师林耿

职称讲师

完成日期2012年4月10日

闽江学院毕业论文诚信声明书

本人郑重声明:

兹提交的毕业论文(设计)《匈牙利算法在企业员工指派问题的应用》,是本人在指导老师林耿的指导下独立研究、撰写的成果;论文(设计)未剽窃、抄袭他人的学术观点、思想和成果,未篡改研究数据,论文(设计)中所引用的文字、研究成果均已在论文(设计)中以明确的方式标明;在毕业论文(设计)工作过程中,本人恪守学术规范,遵守学校有关规定,依法享有和承担由此论文(设计)产生的权利和责任.

声明人(签名):

2012年4月10日

摘要

在当今社会,竞争无处不在,企业的竞争也是如此.而员工指派问题又是企业不得不面对的问题.因此,企业员工指派问题就显得非常重要了,谁能够在这方面做的好,谁就能在竞争中多一分胜算.企业员工指派问题是指企业安排若干人员去完成若干项任务(任务和人数不一定相等),并且要求完成的效率最高.对于这一问题,匈牙利算法就是一个很好的解法.本文首先给出企业员工指派问题的数学模型,它分为两大类,一类是标准指派问题(即企业指派员工数与任务数相等),另一类是非标准指派问题(即企业指派员工数与任务数不相等),其次,在对匈牙利算法及其原理深入理解的基础上,利用匈牙利算法对企业员工指派问题的数学模型进行求解.其中,用标准的匈牙利算法求解标准的指派问题,对于非标准的指派问题,先把它进行适当的变换,然后用标准的匈牙利算法求解.再次,讲述了匈牙利算法的一些缺点及其改进,把匈牙利算法用C语言表示出来,并把它运用到实际的企业员工指派问题当中.最后,讲述了匈牙利算法的应用推广.

关键词:匈牙利算法;员工指派问题;运筹学;效益矩阵

Abstract

In modern society, competition exists everywhere, so does the competition among enterprises. Staff assignment is of great importance to enterprises. Those who do well in it will get more chances to win in the competition. Enterprise staff assignment is that enterprises assign a number of employees to accomplish some tasks in high efficiency ( The number of tasks is not necessarily equivalent to that of assigned staff ).

To solve this problem, the hungary algorithm is the best choice. In this thesis, the author firstly illustrates the enterprise staff assignment, which includes normal assignment problem and abnormal assignment problem. Secondly, the author solves the enterprise staff assignment with the hungary algorithm in two ways: one is normal hungary algorithm used to solve the normal assignment problem, the other is abnormal hungary algorithm used to solve the abnormal assignment problem. Thirdly, the author points out some defects and offers some improvements of the hungary algorithm, and write it in C language. At last, the author gives some examples of the application of the hungary algorithm.

Key words:hungary algorithm ;staff assignment problem; Operations Research; profit matrix

目录

1. 引言 (1)

2.指派问题的数学模型 (1)

2.1 指派问题 (1)

2.2指派问题的数学模型 (2)

3.匈牙利算法的基本原理及解题步骤 (2)

3.1 匈牙利算法的基本原理 (2)

3.2匈牙利算法的解题步骤 (3)

4.匈牙利算法求解员工指派问题的模型假设与符号说明 (3)

4.1 匈牙利算法解员工指派问题的模型假设 (3)

4.2 符号说明 (4)

5.企业员工指派问题的模型建立与求解 (4)

5.1标准指派问题(当m=n时,即为每个人都被指派一项任务) (4)

5.2非标准指派问题 (6)

6.匈牙利算法的缺点、改进以及C语言实现 (12)

6.1 匈牙利算法的缺点 (12)

6.2 匈牙利算法的改进 (14)

6.3 匈牙利算法的C语言实现(附录) (15)

7.匈牙利算法的应用推广 (15)

8.结束语 (17)

参考文献 (18)

附录 (19)

致谢 (22)

匈牙利算法在企业员工指派问题的应用

张雯

(闽江学院 数学系;福建 福州 350108)

1. 引言

当今社会,人力资源规划在企业人力资源管理活动中具有重要的地位和作用.人力资源规划是指为实施企业的发展战略,完成企业的生产经营目标,根据企业内外环境和条件的变化,运用科学的方法,使企业的人力资源和需求达到平衡,实现人力资源的合理配置,有效激励员工的过程.而企业员工指派问题在人力资源规划中又是必不可少的,为了使人力资源管理的“大才大用,小才小用,人尽其才,岗得其人,能位匹配”的基本原则[4]得以实现.因此,企业员工指派问题就显得很重要了,而匈牙利算法就是求解人员与工作任务配置合理化、科学化的一个好方法.

“匈牙利算法”最早是由匈牙利数学家考尼格(D.Koning )用来求矩阵中0元素的个数的一种方法,由此他证明了“矩阵中独立0元素的最多个数等于能覆盖所有0元素的最少直线数”.[7]1955年由库恩(W.W.Kuhn )在求解著名的指派问题时引用了这一结论,并对具体算法做了改进,仍然称为“匈牙利算法”.解指派问题的匈牙利算法是从这样一个明显的事实出发的:如果效率矩阵的所有元素0ij a ≥,而其中存在一组位于不同行不同列的零元素,则只要令对应于这些零元素位置的1ij x =,其余的0ij x =,则11m

m

ij ij i j z a x ===∑∑就是问题的最优解.

2.指派问题的数学模型

2.1 指派问题

从运筹学中,我们知道工作中常遇到这样的问题:有m 项任务需要n 个人来承担,每个人都能完成其中的每项任务,只是由于每个人的特点与专长不同,每个人完成各项任务所需的时间、费用或所产生的效益各不相同,又因为任务性质

的要求和管理上的需要等原因,每项任务只能由一个人来完成,每个人也只能承担其中的一项任务.问应指派哪个人去完成哪项任务才能使完成各项任务花费的总时间最短或总费用最少,或所产生的总效益最佳.我们把这类最优匹配问题称为指派问题.[10]

2.2指派问题的数学模型

设用()ij 0,1,2,,C i j n >=L 表示指派第i 人去完成第j 项任务时所用的时

间,定义决策变量1,0ij x ?=??当指派第i 人去完成第j 项任务时,当不指派第i 人去完成第j 项任务

,则指派问题可转

化为0-1线性规划问题: i 11

1

1

min 1,1,2,,.1,1,2,10,,1,2,,n n

ij ij

j n ij i n

ij i ij Z C x x j n s t x j n x i j n

====?

=??

?

==????==??==?

∑∑∑∑或L L L

3.匈牙利算法的基本原理及解题步骤

3.1 匈牙利算法的基本原理

简要地讲,求指派问题的最优解就是要在n 阶系数方阵中找到n 个这样的元素:它们分布在方阵的不同行、不同列上,并且这些元素之和为最小[1].而要使这些元素之和为最小,就要使其中的每一个元素尽可能的小——最好这些元素都是其所在行和列上的最小元素.

而指派问题的最优解又有这样的性质(定理1)[2]:如果从分配问题效率矩阵ij C ????的一行(列)各元素中分别减去该行(列)的最小元素,得到新的矩阵ij B ????为效率矩阵求得的最优解和用原效率矩阵ij C ????求得的最优解相同.

由于新矩阵ij B ????中每行、每列的最小元素均为“0”,因此,求原指派问题的最优解就转化为在新矩阵ij B ????中找出n 个分布在不同行、不同列上的“0”元素(简称为独立0元素[8]),这些独立0元素就是新矩阵ij B ????的最优解,找到新矩阵的最优解也就找到原矩阵的最优解了.

要在矩阵ij B ????中找到几个分布在不同行、不同列上的“0”元素,前提首先是在矩阵ij B ????中确定存在几个这样的“0”元素.那么,如何判断在矩阵ij B ????中是否存在n 个这样的独立0元素呢?考尼格(Koning )证明了这样一个定理(定理2)[3]:“覆盖所有’0’元素的最少直线数等于矩阵中独立0元素的最多个数.”利用这一定理,就可以通过寻找“能覆盖所有0元素的最少直线”来确定矩阵ij B ????中独立0元素的具体数量。倘若矩阵ij B ????中独立0元素的数量小于矩阵的阶数n ,就得继续对矩阵ij B ????进行化简,直到有了n 个独立的0元素为止,找到这n 个独立0元素也就找到了原指派问题的最优解.这就是匈牙利算法的基本思路.

3.2匈牙利算法的解题步骤

第一步,对耗费矩阵C 进行行(或列)约减,即每一行(或列)数据减去本行(或列)数据中的最小数,得矩阵1C ;

第二步,检查矩阵1C ,若矩阵1C 各行各列均有“0”,则跳过此步,否则进行列(或行)约减,即每一列(或行)数据减去本列(或行)数据中的最小数,得矩阵2C ;

第三步,画盖“0”线.即画最少的线将矩阵2C 中的0全部覆盖住,得矩阵3C ; 第四步,数据转换.若“盖0”线的数目等于矩阵的维数则直接跳到第六步,若“盖0”线的数目小于矩阵的维数则进行数据转换,进行数据转换的操作步骤如下:(1)找出未被“盖0”线覆盖的数中的最小值λ (2)将未被“盖0”线覆盖住得数减去λ (3)将“盖0”线交叉的数加上λ

第五步,重复第三步和第四步,直到“盖0”线的数目等于矩阵的维数. 第六步,求最优解.对n 维矩阵,找出不同行,不同列的n 个“0”,每个“0”的位置代表一对配置关系,具体步骤如下:

(1)先找只含有一个“0”的行(或列),将该行(或列)中的“0”打“?” (2)将带“?”的“0”所在列(或行)中的“0”打“?”

(3)重复(1)步和(2)步至结束.若所有行列均含有多个“0”,则从“0” (4)的数目最少得行或列中任选一个“0”打“?” 第七步,打“?”即为员工所对应的指派任务.

4.匈牙利算法求解员工指派问题的模型假设与符号说明

4.1 匈牙利算法解员工指派问题的模型假设

(1)员工数目与任务数目相等

(2)求解的是最小化问题,如工作时间最小化、费用最小化等.

4.2 符号说明

表格4-2 字母符号说明

符号

符号说明

n 表示企业指派的员工数 m 表示需要完成的任务数

ij C 表示指派第i 人去完成第j 项任务是所用的时间 ij x 表示决策变量

5.企业员工指派问题的模型建立与求解

5.1标准指派问题(当m=n 时,即为每个人都被指派一项任务)

问题的提出

假定某企业有甲、乙、丙、丁、戊五个员工,需要在一定的生产技术组织条件下,完成A 、B 、C 、D 、E 五项任务,每个员工完成每项工作所需要耗费的工作时间,如5-1所示.

表5-1 某企业员工完成任务时间汇总表 单位:(小时)

甲 乙 丙 丁 戊

A 10 5 9 18 11

B 13 19 6 12 14

C 3 2 4 4 5

D 18 9 12 17 15 E

11

6

14

19

10

请求出:员工与任务之间应当如何进行配置,才能保证完成工作任务的时间最短?最短时间为多少? 模型的建立

员 工

设用()ij 0,1,2,,5C i j >=L 表示指派第i 人去完成第j 项任务时所用的时间,

定义决策变量1,0ij x ?=??

当指派第i 人去完成第j 项任务时

,当不指派第i 人去完成第j 项任务,则指派问题的数学模

型为: 55

i 11

51

5

1

min 1,1,2,,5.1,1,2,510,,1,2,,5

ij ij

j ij i ij i ij Z C x x j s t x j x i j ====?

=??

?

==????==??==?

∑∑∑∑或L L L 模型的求解

由题意及匈牙利算法得效益矩阵

10591811504136

1319612147130

6832

4

45102231891217159038

6

11

6

1419105

08134

4

04113

404113

6130

45

6130

450

020000

200803

638

03634

8111408111

304102

513034

130

0703523

8100C =????

→????→????

→????→进行行约减

进行列约减画“盖0线”

数据转换重复画“盖0004722

1300404603403220087

0?????

???

?

???????→”线数据转换,标记得

由此可知当员工甲负责任务A ,员工乙负责任务D ,员工丙负责任务B ,员工丁负责任务C ,员工戊负责任务E 时,才能保证完成工作任务的时间最短,且最短的时间t=10+9+6+4+10=39小时.

5.2非标准指派问题

(1)当m n >时,即企业指派的员工数小于要求完成的任务数 问题的提出

某企业安排2个员工,完成3项任务,每个员工完成每项工作的时间如表5-2[4]所示.

表5-2 某企业员工完成任务时间汇总表一 单位:(小时)

甲 乙 A 10 5 B 13 19 C

3

2

求:应如何分配任务才能保证工作时间最短? 模型的建立

模型1 根据题意设用()ij 01,2,1,2,3C i j >==表示指派第i 人去完成第j 项任

务时所用的时间,定义决策变量ij 1,i j x =0i j ???当指派第人去完成第项任务时

,当不指派第人去完成第项任务

,则指

派问题的数学模型为: 23

ij ij

i=1j=1

2ij i=1

2ij i=1

ij minZ =C x x =1,j =1,2,3s.t x =1,j =1,2,3x =10,i =1,2,j =1,2,3

?

?

?

?

???????

∑∑∑∑或 因为该模型不能直接运用匈牙利算法求解,故我们进行如下分析:两员工负责三项任务,则必有一个员工需承担两项任务,因此增加甲’和乙’,分别表示他们完成第二项工作的情况,则上表变形为表5-3.

表5-3 某企业员工完成任务时间汇总表二 单位:(小时) 甲 甲’ 乙 乙’ A 10 10 5 5 B 13 13 19 19 C

3

3

2

2

表5-3中,员工数目多于任务数目,添加虚任务D ,得表5-4

员工

任务

员 工

表5-4 某企业员工完成任务时间汇总表三 单位:(小时)

甲 甲’ 乙 乙’ A 10 10 5 5 B 13 13 19 19 C 3 3 2 2 D

此时模型1变形为模型2

设用()ij 0,1,2,3,4C i j >=表示指派第i 人去完成第j 项任务时所用的时间,定义决

策变量1,0ij x ?=??当指派第i 人去完成第j 项任务时,当不指派第i 人去完成第j 项任务

,则指派问题的数学模型为:

44

i 11

41

4

1

min 1,1,2,3,4.1,1,2,3,410,,1,2,3,4

ij ij

j ij i ij i ij Z C x x j s t x j x i j ====?

=??

?

==????==??==?

∑∑∑∑或 模型的求解 利用

匈牙利算法求解,得效率矩阵

101055550

013131919006633221100000000

00

C =????→

进行列约减 5

500006611000000???????

?

?

?

???→画“盖0?

线标记得

.

员 工

即当乙完成A 、C 任务,甲完成B 任务时,完成工作时间最短,最短时间t=5+2+13=20小时.

(2)当m n <时,即企业指派员工数大于要求完成的任务数 问题的提出

某企业目前有5名员工,需要完成4项任务,每个员工完成每项任务的工

作时间如表5-5[4]所示.

表5-5 某企业员工完成任务时间汇总表一 单位:(小时)

甲 乙 丙 丁 戊 A 10 5 9 18 11 B 13 19 6 12 14 C 3 2 4 4 5 D

11

6

14

19

10

求:应如何分配任务才能保证工作时间最短? 模型的建立

模型1根据题意设用()ij 01,2,,5,1,2,3,4C i j >==L 表示指派第i 人去完成第

j

项任务时所用的时间,定义决策变量

1,0ij x ?=??

当指派第i 人去完成第j 项任务时,当不指派第i 人去完成第j 项任务,则指派问题可转化为0-1线性规划问

题: 54i 11

51

51

min 1,1,2,,4.1,1,2,410,1,2,,5,1,2,3,4

ij ij

j ij i ij i ij Z C x x j s t x j x i j ====?

=?

?

?

==????==??===?

∑∑∑∑或L L L 因为该模型不能直接运用匈牙利算法求解,故我们进行如下分析:五个员工负责四项任务则必有一个员工没有任务,此时可增添一项虚任务E ,则各员工完成任务E 的时间均为0,上表变形为5-6

员 工

表5-6 某企业员工完成任务时间汇总表二 单位:(小时)

甲 乙 丙 丁 戊 A 10 5 9 18 11 B 13 19 6 12 14 C 3 2 4 4 5 D 11 6 14 19 10 E

此时模型1变形为模型2:

设用()ij 0,1,2,,5C i j >=L 表示指派第i 人去完成第j 项任务时所用的时间,

定义决策变量1,0ij x ?=??当指派第i 人去完成第j 项任务时,当不指派第i 人去完成第j 项任务

,则指派问题可转化为

0-1线性规划问题:

55

i 11

51

5

1

min 1,1,2,,5.1,1,2,510,,1,2,,5

ij ij

j ij i ij i ij Z C x x j s t x j x i j ====?

=?

?

?

==????==??==?

∑∑∑∑或L L L 模型的求解

此时可用匈牙利算法计算,得效率矩阵

员 工 任 务

10591811504136

1319612147130

6832

44510223116141910508134

0000

00

004

04125

4

04125

6130

5

7

6130

5

7

212002124081234

0812*******

1

1

101926

1605703212C ??

?=?????→?????→????

?→?????→进行行约减

画“盖0?

进行数据转换画“盖0?

进行数据转换画“盖0?

10590041

00???

?

?

即当甲分配C 任务, 乙分配A 任务,丙分配B 任务,戊分配D 任务时,工作时间最短,最短时间t=3+5+6+10=24小时. (3)当所求问题为求最大化值时

问题的提出

某企业目前有5名员工完成5项任务,每个员工完成各项任务所获得的利润如表5-7[4]所示. 表5-7 某企业员工完成任务收益汇总表一 单位:(万元)

甲 乙 丙 丁 戊 A 10 5 9 18 11 B 13 19 6 12 14 C 3 2 4 4 5 D 18 9 12 17 15 E

11

6

14

19

10

求:如何给甲、乙、丙、丁、戊分配任务,使他们完成任务总收益最大? 问题分析

因为匈牙利算法求得是最小化问题,故我们需把最大化问题转化为最小化问题,我们取()max 1,2,,1,2,ij

e C i n j m ===L

L ,令()1,2,,1,2,i j i j b e C i n j m

=-==L L ,这样

我们就可以将最大化问题转化为最小化问题了,即11

min n

m

ij ij i j f b x ===∑∑

由题意知表5-7中最大的数据为19,用19分别减去其中的各个数据,则数据表转化为表5-8.

表5-8 某企业员工完成任务收益汇总表二 单位:(万元)

A 9 14 10 1 8

B 6 0 13 7 5 C

16

17

15

15

14

D 1 10 7 2 4 E

8

13

5

9

模型的建立

设用()ij 0,1,2,,5C i j >=L 表示指派第i 人去完成第j 项任务时所用的时间,定义

决策变量1,0ij x ?=??当指派第i 人去完成第j 项任务时

,当不指派第i 人去完成第j 项任务

,则指派问题可转化为0-1

线性规划问题: 55

i 11

51

5

1

min 1,1,2,,5.1,1,2,510,,1,2,,5

ij ij

j ij i ij i ij Z C x x j s t x j x i j ====?

=??

?

==????==??==?

∑∑∑∑或L L L 模型的求解

工 任 务

此时可以用匈牙利算法求解,得效率矩阵

914101881390760137560137516

1715151423110110724096138

13

5

9

8

13

5

9

C =????

→进行行约减

813807494036

012756012115230102305009513095538

13

4

9

4

9

5

????→????

→进行列约减

数据转换

画“盖0?

4

9

4036

0121152

30500

95534

9

005

?????

?

?

?????→画“盖0?

即当甲分配D 任务,乙分配B 任务,丙分配E 任务,丁分配A 任务,戊分配C 任务时,他们完成的任务收益最大,最大值为18+19+14+18+5=74万元.

6.匈牙利算法的缺点、改进以及C 语言实现

6.1 匈牙利算法的缺点

1.“匈牙利算法”在各种已发表的教材、专著和研究成果中,通常求解中、小型分配问题,效能矩阵的阶数通常不超过20,故很难发现“匈牙利算法”存在的问题.事实上,匈牙利算法在处理一些特殊数据时并不有效,算法不收敛,无法找出最优解[6].

2.在匈牙利算法的求解步骤中,效率矩阵既可以先进行“行约减”也可先进行“列约减”,并没有说是先进行“行约减”还是先进行“列约减”,但是,有时先进行“行约减”要比先“列约减”复杂,增加了许多步,有时却相反,我们来看下面例题.

例题:效率矩阵[5]

1518

212419232218

26

17161917

21

23

17

A = 1.先进行“行约减”:

01518212403691923221815402617161910103172123170460026902691440144010003100030360036000490049122012201200512005014

001

4

00491220120050A ??

????

=

?????→?????→

???→?????→

???→???→

进行“行约减”

进行“列约减”

画盖0线

进行数据转换

画盖线

标记得

1

4

0?

2.先进行“列约减”:

15182124

1923221826171619

17212317

A =

01574661

110022470

?????→进行“列约减”

000

157015735

503550110

0211002247024700

1

59

1

5913

301330110

04110040

2

5

2

5

?????→

???→?????→

???→进行“行约减”

画盖线进行数据转换

画盖线

0004900491220122012005

12005

140

140

00491220120050140???

??

??

????→

???→

???→进行数据转换

画盖线

标记得

由此可见,先进行“行约减”比先进行“列约减”更简单. 6.2 匈牙利算法的改进

综合上面两道例题,我们知道匈牙利算法还是有一些不足的,经过我反复的实验、观察效率矩阵的特殊性,现对效率矩阵进行改进,改进之后,就能少了许多麻烦的步骤,知道是先进行“行约减”还是先进行“列约减”.匈牙利算法的改进如下:

第一步,简化效率矩阵.(1)统计效率矩阵每行的最小元素的个数总和

()R sum 和每列的最小元素的个数总和()C sum .(2)若()R s u m 和()C sum 均大于

n ,且当()()R sum C sum ≥时,则先对效率矩阵的每列减去该列的最小元素,再

对所得的效率矩阵的每行减去该行的最小元素.反之,当()()R sum C sum ≤时,则先对效率矩阵的每行减去该行的最小元素,再对所得效率矩阵的每列元素减去该列的最小元素.(3)若(

)Rs u m 和()C sum 不满足均大于n ,

且当()()R sum C sum ≤时,则先对效率矩阵的每列减去该列的最小元素,再对所得的效率矩阵的每行减去该行的最小元素.反之,()()R sum C sum ≥时,则先对效率矩阵的每行减去该行的最小元素,再对所得的效率矩阵的每列减去该列的最小元素.

第二步,检查矩阵1C ,若矩阵1C 各行各列均有“0”,则跳过此步,否则进行列(或行)约减,即每一列(或行)数据减去本列(或行)数据中的最小数,得矩阵2C

第三步,画盖“0”线.即画最少的线将矩阵2C 中的0全部覆盖住,得矩阵3C ; 第四步,数据转换.若“盖0”线的数目等于矩阵的维数则直接跳到第六步,若“盖0”线的数目小于矩阵的维数则进行数据转换,进行数据转换的操作步骤如下:(1)找出未被“盖0”线覆盖的数中的最小值λ (2)将未被“盖0”线覆盖住得数减去λ (3)将“盖0”线交叉的数加上λ

第五步,重复第三步和第四步,直到“盖0”线的数目等于矩阵的维数. 第六步,求最优解.对n 维矩阵,找出不同行,不同列的n 个“0”,每个“0”的位置代表一对配置关系,具体步骤如下:

(1)先找只含有一个“0”的行(或列),将该行(或列)中的“0”打“?” (2)将带“?”的“0”所在列(或行)中的“0”打“?”

(3)重复(1)步和(2)步至结束。若所有行列均含有多个“0”,则从“0” (4)的数目最少得行或列中任选一个“0”打“?” 第七步,打“?”即为员工所对应的指派任务. 6.3 匈牙利算法的C 语言实现(附录)

7.匈牙利算法的应用推广

匈牙利算法不仅在企业员工指派问题上有重要的应用,而且它还解决了集体比赛项目中参赛队员的出场次序问题提供了一个科学的决策方法.

例 设有A ,B,C,D 四个队员参加4100?米接力赛跑,由于各队员的心理素质、交接棒技术、起跑以及冲刺速度等原因,所跑不同棒次所用时间(单位为秒)不尽相同,见下表1[9].

指派问题的匈牙利解法

指派问题的匈牙利解法 1、 把各行元素分别减去本行元素的最小值;然后在此基础上再把每列元素减去本列中的最小值。 ???????? ??????????? ? ?0 4 3 2 04 0 5 0 01 2 3 2 03 7 7 1 08 11 0 3 06 10 12 9 610 6 14 7 67 8 12 9 610 14 17 9 712 15 7 8 4 此时每行及每列中肯定都有0元素了。 2、 确定独立零元素,并作标记。 (1)、首先逐行判断是否有含有独立0元素的行,如果有,则按行继续处理;如没有,则要逐列判断是否有含有独立0元素的列,若有,则按列继续处理。若既没有含有独立0元素的行,也没有含有独立0元素的列,则仍然按行继续处理。 (2)在按行处理时,若某行有独立0元素,把该0元素标记为a ,把该0所在的列中的其余0元素标记为b ;否则,暂时越过本行,处理后面的行。把所有含有独立0元素的行处理完毕后,再回来处理含有2个以及2个以上的0元素的行:任选一个0做a 标记,再把该0所在行中的其余0元素及所在列中的其余0元素都标记为b 。

(3)在按列处理时,若某列有独立0元素,把该0元素标记为a ,把该0所在的行中的其余0元素标记为b ;否则,暂时越过本列,处理后面的列。把所有含有独立0元素的列处理完毕后,再回来处理含有2个以及2个以上的0元素的列:任选一个0做a 标记,再把该0所在列中的其余0元素及所在行中的其余0元素都标记为b 。 (4)、重复上述过程,即得到独立零元素(标记a 的“0”) ???????? ??a b b a b b a 0 4 3 2 04 0 5 0 01 2 3 2 03 7 7 1 08 11 0 3 0a b 3、 若独立零元素等于矩阵阶数,则已经得到最优解,若小于矩阵阶数,则继续以下步骤: (1)、对没有标记a 的行作标记c (2)、在已作标记c 的行中,对标记b 所在列作标记c (3)、在已作标记c 的列中,对标记a 所在的行作标记c (4)、对没有标记c 的行划线,对有标记c 的列划线 ??????? ? ??04320405001232037710 811030 / / / / / \/ \/

运筹学指派问题的匈牙利法实验报告

运筹学 课 程 设 计 报 告 专业: 班级: 学号: : 2012年6月20日

目录 一、题目。 二、算法思想。 三、算法步骤。 四、算法源程序。 五、算例和结果。 六、结论与总结。

一、题目:匈牙利法求解指派问题。 二、算法思想。 匈牙利解法的指派问题最优解的以下性质: 设指派问题的系数矩阵为C=()c ij n n?,若将C的一行(或列)各元素分别减去一个常数k(如该行或列的最小元素),则得到一个新的矩阵C’=()'c ij n n?。那么,以C’位系数矩阵的指派问题和以C位系数矩阵的原指派问题有相同最优解。 由于系数矩阵的这种变化不影响约束方程组,只是使目标函数值减少了常 数k,所以,最优解并不改变。必须指出,虽然不比要求指派问题系数矩阵中无 负元素,但在匈牙利法求解指派问题时,为了从以变换后的系数矩阵中判别能否 得到最优指派方案,要求此时的系数矩阵中无负元素。因为只有这样,才能从总 费用为零这一特征判定此时的指派方案为最优指派方案。 三、算法步骤。 (1)变换系数矩阵,使各行和各列皆出现零元素。 各行及各列分别减去本行及本列最小元素,这样可保证每行及每列中都有 零元素,同时,也避免了出现负元素。 (2)做能覆盖所有零元素的最少数目的直线集合。

因此,若直线数等于n,则以可得出最优解。否则,转第(3)步。 对于系数矩阵非负的指派问题来说,总费用为零的指派方案一定是最优指派方案。在第(1)步的基础上,若能找到n个不同行、不同列的零元素,则对应的指派方案总费用为零,从而是最优的。当同一行(或列)上有几个零元素时,如选择其一,则其与的零元素就不能再被选择,从而成为多余的。因此,重要的是零元素能恰当地分布在不同行和不同列上,而并在与它们的多少。但第(1)步并不能保证这一要求。若覆盖所有零元素的最少数目的直线集合中的直线数目是n,则表明能做到这一点。 此时,可以从零元素的最少的行或列开始圈“0”,每圈一个“0”,同时把位于同行合同列的其他零元素划去(标记为),如此逐步进行,最终可得n个位于不同行、不同列的零元素,他们就对应了最优解;若覆盖所有零元素的最少数目的直线集合中的元素个数少于n,则表明无法实现这一点。需要对零元素的分布做适当调整,这就是第(3)步。 (3)变换系数矩阵,是未被直线覆盖的元素中出现零元素。回到第(2)步。 在未被直线覆盖的元素中总有一个最小元素。对未被直线覆盖的元素所在的行(或列)中各元素都减去这一最小元素,这样,在未被直线覆盖的元素中势必会出现零元素,但同时却又是以被直线覆盖的元素中出现负元素。为了消除负元素,只要对它们所在的列(或行)中个元素都加上这一最小元素(可以看作减去这一最小元素的相反数)即可。 四、算法源程序。

指派问题的解法

指派问题的解法总结 问题引入:在工作的时候,常常需要对一些人进行工作安排,由于某些条件的限制, 每个人只能进行一种工作,怎么安排才能使得总工作时间最小。我们把这一类问题称 为指派问题。在这里,我只对人和工作刚好一对一的指派问题的解法进行总结,而对 于不是一对一的,则可以通过文献1中的一些方法进行变换。 目前问题解法的总结。 1:最广泛应用的解法:匈牙利算法。 算法简介:库恩(fW.W.Kuhn)于1955年提出了指派问题的解法.他引用了匈牙利数学家康尼格一个关于矩阵中0元素的定理:系数矩阵中独立0元素的最多个数等 于覆盖所有0元素的最少直线数。这个解法称为匈牙利解法。 匈牙利算法虽是运用最广泛的算法,但其操作过程却过于复杂。在划0的时候也不方 便记忆,对于初学者来说掌握不便。于是国内很多学者对指派问题给出了几个较简单,方便易记的算法。 2:指派问题新解法——目标值子矩阵法。 算法描述:任取变量矩阵X某一行中的最小元素,为该行元素目标值的最优解(但 不一定是系统目标函数的最优解),应该是系统目标函数满意解中的一个元素,记作 a11 划去a11 所在的行和列,取剩下的子矩阵中某一行的最小元素,记作a22。依次 类推,直到最后一个元素a nn.这些元素相加得系统目标函数的一个满意解,此为一 次运算.第二次运算取变量矩阵X中含a 以外的任一行,做与上面相同运算,又可以 得到系统的第二个满意解.相同地,对于n行做n次运算,共得到系统的n个满意解,系统的最优解即应该是这 n个满意解当中的最小值.若第i的最小元素在前面以被取 用过,则在进行第i的运算时,不选取该元素,取该行中未被选用过的元素中最小的一个进行运算。 算法分析:相对于匈牙利算法,此算法简单,方便操作。但不能给出所有最优解,得出的最优解唯一,若要给出全部最优解,则算法的次数将大大增加。 当矩阵维数较大的时候,可以对矩阵进行划分,以更快计算。 算法举例:对于变量矩阵x;

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

匈牙利法解决人数与任务数不等的指派问题 于凯 重庆科技学院经济管理学院物流专业重庆沙坪坝区 摘要:本文将讨论运筹学中的指派问题,而且属于非标准指派问题,即人数与任务数不相等的指派问题,应当视为一个多目标决策问题,首先要求指派给个人任务数目两两之间相差不能超过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匈牙利法的具体步骤 第一步:使指派问题的系数矩阵经过变换在各行各列中都出现○元素。 (1)先将系数矩阵的每行中的每个元素减去本行中的最小元素。 (2)再从系数矩阵的每列中的每个元素减去本列的最小元素。 第二步:进行试指派,以寻求最优解。 (1)从含有○元素个数最少的行(列)开始,给某个○元素加圈,记作◎,然后划去与◎所在同行(列)杂其他○元素,记作?。(注:从含元素 少的开始标记◎的原则) (2)重复进行(1)的操作,直到所有○元素都记作◎或?,称作“礼让原则”。 (3)按以上方法操作后,若◎元素数目m’等于矩阵阶数n,那么指派问题最优解已得到。若m﹤n,则转入下一步。 第三步:做最少的直线覆盖所有的○元素,以确定该系数矩阵中能找到最多的独立○元素。 (1)对没有◎的行打√号; (2)对已打√号的行中含有?元素所在的列打√号; (3)对已打√号的列中含有◎元素所在的行打√号; (4)重复(2)、(3)直到得不到新√号的行和列为止; (5)对没有√号的行画一横线,有√号的列画一竖线。如此便可以覆盖所有

匈牙利解法的步骤

指派问题的匈牙利法求解步骤: 1) 变换指派问题的系数矩阵(c ij)为(b ij),使在(b ij)的各行各列中都出现0元素,即 从(cij)的每行元素都减去该行的最小元素; 再从所得新系数矩阵的每列元素中减去该列的最小元素。 2) 进行试指派,以寻求最优解。 在(bij)中找尽可能多的独立0元素,若能找出n个独立0元素,就以这n个独立0 元素对应解矩阵(xij)中的元素为1,其余为0,这就得到最优解。 找独立0元素,常用的步骤为: 从只有一个0元素的行开始,给该行中的0元素加圈,记作◎。然后划去◎所 在列的其它0元素,记作?;这表示该列所代表的任务已指派完,不必再考虑别人了。依次进行到最后一行。 从只有一个0元素的列开始(画?的不计在内),给该列中的0元素加圈,记作◎; 然后划去◎所在行的0元素,记作?,表示此人已有任务,不再为其指派其他任务了。依次进行到最后一列。 若仍有没有划圈的0元素,且同行(列)的0元素至少有两个,比较这行各0元素所 在列中0元素的数目,选择0元素少这个0元素加圈(表示选择性多的要“礼让” 选择性少的)。然后划掉同行同列的其它0元素。可反复进行,直到所有0元素都已圈出和划掉为止。 若◎元素的数目m 等于矩阵的阶数n(即:m=n),那么这指派问题的最优解已 得到。若m < n, 则转入下一步。 3) 用最少的直线通过所有0元素。其方法: 对没有◎的行打“√”; 对已打“√”的行中所有含?元素的列打“√”; 再对打有“√”的列中含◎元素的行打“√”; 重复①、②直到得不出新的打√号的行、列为止; 对没有打√号的行画横线,有打√号的列画纵线,这就得到覆盖所有0元素的最 少直线数l 。 注:l 应等于m,若不相等,说明试指派过程有误,回到第2步,另行试指派;若 l=m < n,表示还不能确定最优指派方案,须再变换当前的系数矩阵,以找到n 个独立的0元素,为此转第4步。 4) 变换矩阵(b ij)以增加0元素 在没有被直线通过的所有元素中找出最小值,没有被直线通过的所有元素减去这 个最小元素;直线交点处的元素加上这个最小值。新系数矩阵的最优解和原问题仍相同。转回第2步。

指派问题的算法

指派问题的算法分析与实现 摘要 在企业、公司的运营与管理中,管理者总是希望把人员最佳分派以发挥其最大工作效率,从而降低成本、提高效益。然而,如果没有科学的方法是很难实现优化管理的,由此我们引入了指派问题。指派问题多是求项目的工时最少,而很多情况下人们并不关心项目总工时的多少,而只关心项目能否在最短的时间内完成,即历时最少的指派问题。这类问题研究的是n个人执行n项任务,执行每项任务的人数以及总的指派人项数均有限制,要求最优指派。在运筹学中求解整数规划的指派问题通常是通过匈牙利算法来求解,但指派问题也可以归结为一个0-1整数规划问题,本文先对指派问题进行陈述,引出对实际问题的求解。在指派问题的背景、描述中充分理解该问题,先运用匈牙利算法实现指派问题,然后再建立一个0-1整数规划模型,并运用matlab和lingo编译程序对问题进行编译,运用软件解决模型问题,最终实现指派问题在实际问题中的运用。通过运用匈牙利算法和0-1整数规划同时对指派问题求解,我们发现用0-1整数规划的方法来求解可以更简单,也更方便程序的阅读和理解。与此同时,我们还对0-1整数规划问题由整数数据深入研究到小数数据。最后通过实例来说明运用matlab,lingo编译程序来解决整数规划问题的简便和有效性。 关键词:指派问题;匈牙利算法;0-1整数规划;matlab模型;lingo模型1. 问题陈述 指派问题又称分配问题,其用途非常广泛,比如某公司指派n个人去做n 件事,各人做不同的事,如何安排人员使得总费用最少?若考虑每个职工对工作效率(如熟练程度等),怎样安排会使总销量达到最大?这些都是一个企业经营

管理者必须考虑的问题,所以该问题有重要的应用价值。 假设有n 件工作分派给n 个人来做,每项工作只能由一人来做,每个人只能做一项工作。若给出各人对各项工作所具有的工作效率。问应该如何安排人选,及发挥个人特长又能使总的效率最大。为此用0-1整数规划来实现指派问题即如何安排人选。 2.背景 在现实生活中,有各种性质的指派问题(Assignment Problem )。例如,在生产管理中,总希望把人员进行最佳分配,以发挥最大的工作效率;某部门有n 项任务要完成,而该部门正好有n 个人可以分别去完成其中任何一项,但由于任务性质和个人的专长不同,因此各人完成各项不同任务的效益(所费时间或所花费用)也有差别,如果分配每个人完成一项任务且仅为一项任务,则把每项任务分配给哪个人去完成,使完成所有n 项任务的总效益为最高(总时间、总费用为最小或创造的价值最大)?这是典型的分配问题或指派问题。又如有n 项加工任务,怎样指定n 台机器分别去完成,以使总的加工时间最少或总收入最大;有n 条航线,怎样指定n 艘船分别航行,使总收入最大,等等,都属于指派问题。 3. 指派问题的描述 3.1 指派问题的一般形式 指派问题的标准形式(以人和事为例)如下。有n 个人和n 项任务,已知第i 个人做第j 件事的费用为 ij c ,要求确定人和事之间的一一对应的指派方案,使 完成这n 项任务的费用最少。 一般把目标函数的系数写为矩阵形式,称矩阵 ? ? ? ? ?? ? ? ? ? ??????????==?nn n n n n n n ij c c c c c c c c c c C ..................)(212222111211 为系数矩阵(Coefficient Matrix ),也称为效益矩阵或价值矩阵。矩阵的元

浅析指派问题的匈牙利解法成稿讲解

浅析指派问题的匈牙利解法 胡小芹 数学科学学院数学与应用数学学号:040414057 指导教师:苏孟龙 摘要:对于指派问题,可以利用许多理论进行建模并加以解决,但匈牙利解法是解决指派问题的一种非常简单有效的方法,并且可以解决多种形式的指派问题,但匈牙利算法本身存在着一些问题,本文主要介绍了匈牙利算法的基本思想,基本步骤,以及它的改进方法.在匈牙利算法的基础上,本文还介绍了两种更简便实用的寻找独立零元素的方法——最小零元素消耗法和对角线法. 关键词:指派问题;匈牙利解法;最小零元素消耗法;对角线法 0 引言 在现实生活中经常会遇到把几个任务分派给几个不同的对象去完成,由于每个对象的条件不同,完成任务的效率和效益亦不同.指派问题的目标就是如何分派使所消耗的总资源最少(或总效益最优),如给工人分派工作,给车辆分配道路,给工人分配机床等等,同时许多网络问题(如旅行问题,任务分配问题,运输问题等),都可以演化成指派问题来解决.在现实生活中,指派问题是十分常见的问题,而匈牙利解法是解决指派问题的一种非常简单有效的方法.本文主要介绍匈牙利解法的基本原理及思想,解题步骤,不足与改进,以使匈牙利法更能有效地解决指派问题. 1 指派问题及其数学模型 指派问题是指由m项任务,需要n个人来承担,每人只能承担一项任务,且每项

任务只能有一人来承担,由于各人的专长不同,各人完成的任务不同,导致其效率也各不相同.因此,就产生怎样科学地指派任务,才能使完成各项任务所消耗的总资源最少(或总成本最低等),由于n m ,不同,指派问题可分为以下三种情况: 第一、当n m =时,即为每人指派一项任务. 第二、当n m >时,即任务数〉人数,这时可虚设)(n m -个人构成m m ?的 效率矩阵,并且这)(n m -个人在执行这m 项任务时的效率应该是效率最高. 第三、当n m <时,即配置人数〉任务数,这时应虚设)(m n -项任务,并且这n 个人在执行这)(m n -项任务时的成本最低. 通过虚设任务或人,指派问题的效率矩阵都可以转化成方阵.匈牙利解法要求指派问题最小化,其数学模型为 设用0ij c >(,1,2, ,)i j n =表示指派第i 个人去完成第j 项任务时所用的时间, 定义决策变量 10ij i j x i j ?=??表示第个人完成第项任务, 表示不指派第个人完成第项任务. 则问题可转化为0-1线性规划问题: ∑∑===n j ij n i c Z 11min t s ? 1 1 1,1,2,,, 1,1,2,,,01,i,j 1,2,,n n ij i n ij j ij x j n x i n x ==?==???==???==?? ∑∑或. 如果指派问题要求的是最大化问题如F max ,则可以转化为最小化问题,一般方法是:取max (,1,2 ),ij M c i j n ==令(,1,2,)ij ij b M c i j n =-=,则11 min ,n n ij i j f b ===∑∑,max F nM f F =-有从而求. 2 指派问题的解法——匈牙利解法

匈牙利算法在企业员工指派问题的应用(最终版)

闽江学院 本科毕业论文 题目匈牙利算法在企业员工指派问题的应用学生姓名张雯 学号120080901139 系别数学系 年级2008级 专业数学与应用数学 指导教师林耿 职称讲师 完成日期2012年4月10日

闽江学院毕业论文诚信声明书 本人郑重声明: 兹提交的毕业论文(设计)《匈牙利算法在企业员工指派问题的应用》,是本人在指导老师林耿的指导下独立研究、撰写的成果;论文(设计)未剽窃、抄袭他人的学术观点、思想和成果,未篡改研究数据,论文(设计)中所引用的文字、研究成果均已在论文(设计)中以明确的方式标明;在毕业论文(设计)工作过程中,本人恪守学术规范,遵守学校有关规定,依法享有和承担由此论文(设计)产生的权利和责任. 声明人(签名): 2012年4月10日

摘要 在当今社会,竞争无处不在,企业的竞争也是如此.而员工指派问题又是企业不得不面对的问题.因此,企业员工指派问题就显得非常重要了,谁能够在这方面做的好,谁就能在竞争中多一分胜算.企业员工指派问题是指企业安排若干人员去完成若干项任务(任务和人数不一定相等),并且要求完成的效率最高.对于这一问题,匈牙利算法就是一个很好的解法.本文首先给出企业员工指派问题的数学模型,它分为两大类,一类是标准指派问题(即企业指派员工数与任务数相等),另一类是非标准指派问题(即企业指派员工数与任务数不相等),其次,在对匈牙利算法及其原理深入理解的基础上,利用匈牙利算法对企业员工指派问题的数学模型进行求解.其中,用标准的匈牙利算法求解标准的指派问题,对于非标准的指派问题,先把它进行适当的变换,然后用标准的匈牙利算法求解.再次,讲述了匈牙利算法的一些缺点及其改进,把匈牙利算法用C语言表示出来,并把它运用到实际的企业员工指派问题当中.最后,讲述了匈牙利算法的应用推广. 关键词:匈牙利算法;员工指派问题;运筹学;效益矩阵

求解指派问题的匈牙利算法.doc

3.2 求解指派问题的匈牙利算法 由于指派问题的特殊性,又存在着由匈牙利数学家D.Konig 提出的更为简便的解法—匈牙利算法。算法主要依据以下事实:如果系数矩阵)(ij c C =一行(或一列)中每一元素都加上或减去同一个数,得到一个新矩阵)(ij b B = ,则以C 或B 为系数矩阵的指派问题具有相同的最优指派。 利用上述性质,可将原系数阵C 变换为含零元素较多的新系数阵B ,而最优解不变。若能在B 中找出n 个位于不同行不同列的零元素,令解矩阵中相应位置的元素取值为1,其它元素取值为零,则所得该解是以B 为系数阵的指派问题的最优解,从而也是原问题的最优解。 由C 到B 的转换可通过先让矩阵C 的每行元素均减去其所在行的最小元素得矩阵D ,D 的每列元素再减去其所在列的最小元素得以实现。 下面通过一例子来说明该算法。 例7 求解指派问题,其系数矩阵为 ????? ???????=16221917171822241819211722191516C 解 将第一行元素减去此行中的最小元素15,同样,第二行元素减去17,第三行元素减去17,最后一行的元素减去16,得 ????? ???????=06310157124074011B 再将第3列元素各减去1,得 ????? ???????=****20531005711407301B 以2B 为系数矩阵的指派问题有最优指派 ??? ? ??43124321 由等价性,它也是例7的最优指派。 有时问题会稍复杂一些。 例8 求解系数矩阵C 的指派问题

??????? ?????????=61071041066141512141217766698979712C 解:先作等价变换如下 ∨∨ ∨????????????????→????????????????----- 26360 40*089 57510*00*0032202*056107104106614151214121776669897971246767 容易看出,从变换后的矩阵中只能选出四个位于不同行不同列的零元素,但5=n ,最优指派还无法看出。此时等价变换还可进行下去。步骤如下: (1) 对未选出0元素的行打∨; (2) 对∨行中0元素所在列打∨; (3) 对∨列中选中的0元素所在行打∨; 重复(2)、(3)直到无法再打∨为止。 可以证明,若用直线划没有打∨的行与打∨的列,就得到了能够覆盖住矩阵中所有零元素的最少条数的直线集合,找出未覆盖的元素中的最小者,令∨行元素减去此数,∨列元素加上此数,则原先选中的0元素不变,而未覆盖元素中至少有一个已转变为0,且新矩阵的指派问题与原问题也等价。上述过程可反复采用,直到能选取出足够的0元素为止。例如,对例5变换后的矩阵再变换,第三行、第五行元素减去2,第一列元素加上2,得 ??????? ?????????0414******* 353800003420207 现在已可看出,最优指派为???? ??5314254321。

关于几种不平衡指派问题的修正匈牙利解法

龙源期刊网 https://www.360docs.net/doc/c210663155.html, 关于几种不平衡指派问题的修正匈牙利解法作者:杜金玲;周杰 来源:《价值工程》2010年第13期 摘要:本文利用实例验证了在用匈牙利算法求解指派问题时,不平衡的指派问题转化为平衡指派问题的必要性;总结对于几种不平衡的指派问题转化为平衡指派问题的方法,从理论上作出解释,并给出了相应的例题,特别对于任务数多于人数的指派问题,本文提出了新的更有针对性的转化方法,如“一人化成p人法”、“加边补小法”、“加边补零(M)法”等。 Abstract: In this paper, the necessity of the transformation of the unbalanced assignment problem to the balanced assignment problem is tested with examples. The methods of transformation are summarized and explained from theory; and gived an example of the problem, especially, the methods of the transformation are brought up. For example, the method of "one to p persons", the method of "the adding rows with zero or M",the method of "the adding rows with min" and so on. 关键词:指派问题;匈牙利算法;一人化成p人法;加边补小法;加边补零(M)法 Key words: assignment problem;the Hungaryalgorithm;the method of "one to p persons";the method of "the adding rows with min";the method of “the adding rows with zero or M” 中图分类号:TP301.6文献标识码:A文章编号:1006-4311(2010)13-0120-03 0引言 在实际生活和生产安排中,经常遇到要指派不同的工作人员去完成不同的工作。由于每个 人的专长不同,不同的人去完成各项任务的效率(或所花时间或成本等)一般地也不同。这样,就 产生了指派何人去完成何任务,使总效率最高(或所花时间最少或成本最低等)的问题。这类问题称为指派问题(Assignment Problem),又称为分配问题。 1平衡指派问题的数学模型 对于有n项任务且恰好有n个人去完成的指派问题(称为平衡指派问题),规定每人只完成一项任务,且每项任务只能由一个人去完成。已知aij表示第i个人完成第j项任务时的效率(所用时间或成本等),[aij]称为效率矩阵。设决策变量: xij=1,第i个人完成第j项任务0,否则(i,j=1,2,…,n),于是指派问题的数学模型为: min z=aijxij

相关文档
最新文档