指派问题

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

5 2 如: 3 4 6
9 3 4 0 7 4 3 0 8 5 9 0 6 2 7 0 5 7 4 0
(1)
4 3 6 5 0
3 2 9 4 0
6
5
5 4 11 7 3 0
(2)
6 0
2 6 8 7 0
一个人可做几件事的指派问题
0—1整数规划:如果整数现行规划问题的 所有决策变量xi仅限于0或1两个数值,则 称此问题为0—1线性整数规划,简称0— 1规划。变量xi称为0—1变量。 当我们面对是与非选择,可用0与1决策; 即i决策量 1是做这件事
x 0是不做这件事
i
一般指派问题的数学模型为:设
x
s.T 务
匈牙利指派问题 有 n 项不同的任务,恰好 n 个人可分别承担这些 任务,但由 于每人特长不同,完成各项任务的效率等情况也不同。 现假设必须 指派每个人去完成一项任务,怎样把 n 项任务指派给 n 个人,使 得完成 n 项任务的总的效率最高,这就是指派问题。 例6.有四个工人,要分别指派他们完成四项不同 的工作,每 人做各项工作所消耗的时间如下表所示,问应如何指派 工作,才能 使总的消耗时间为最少。如图(1)
(4) 重复(2),(3)直到得不出新的打√号的行、
列为止; (5) 对没有打√号的行画横线,有打√号的列 画纵线,这就得到覆盖所有0元素的最少直 线数 l 。l 应等于m,若不相等,说明试指派 过程有误,回到第二步(4),另行试指派;若 l=m < n,须再变换当前的系数矩阵,以找 到n个独立的0元素,为此转第四步。 第四步:变换矩阵(bij)以增加0元素。 在没有被直线覆盖的所有元素中找出最小元 素,然后打√各行都减去这最小元素;打√各 列都加上这最小元素(以保证系数矩阵中不 出现负元素)。新系数矩阵的最优解和原问 题仍相同。转回第二步。
即:甲做C工作、乙做D工作、 丙做A工作、丁做E工作、戊 做B工作。
这只是一个简单的指派问题,即 人数与任务的个数相等; 而我们生活中还常常会遇到以下 几种问题: 人数与工作不相等的指派问题; 一个人可做几件事的指派问题; 某件事不能由某个人做的指派 问题;如下:
人数与工作不相等的指派问题 例:某企业招聘工作人员m个,有n个工作;且每个人只能做 一个工作,一个工作只能有一个人做。 若m>n 则:模拟m—n个工作。(1) 若m<n 则:模拟n—m个工作人员。(2)
指派问题 主讲人:第五组 指导老师:胡松瀛
主讲内容: 1. 整数规划 2. 0—1整数规划 3. 匈牙利指派问题
—、整数规划:我们在解题 过程中往往会出现非整数结 果,然而在现实中,又常常 会遇到有限制整数条件的问 题,如:人力资源分配,工 作的选择等。因此我们就需 要对一些问题做整数规划。
整数规划可分为三种类型; 纯整数规划—即约束决 策变量都是非负整数—人 口的统筹 0—1整数规划—即约束 决策变量只有0和1;人才 的管理 混合型整数规划—即约 束变量部分是非负整数;
若某人可做几件事,则将该人化作相同 的几个“人”来接受指派,且费用系数 取值相同。 例:有甲、乙、丙三个做ABCD四个工作。其中丙可 同时胜任两个工作;如图: A B C D
甲 乙 丙
7 9 8 8
5 12 5 5
9 7 4 4
8 11 6 6
某件事不能由某个人做的指派问题
5
◎ 0
5 3 4 2 3 Ø 0 ◎ 0 3

减2
3 3 ◎ 0 0 Ø 6 2 5 2 0 Ø 3
√ 减2
第四步,变换矩阵(bij)
以增加0元素:没有被 直线覆盖的所有元素中
的最小元素为2,然后
√ 减2 打√各行都减去2;打 √各列都加上2,得如 下矩阵,并转第二步进 行试指派:
(4) 若仍有没有划圈的0元素,且同行(列)的0元素至少有 两个,则从剩有0元素最少的行(列)开始,比较这行各0
元素所在列中0元素的数目,选择0元素少的那列的这个 0元素加圈(表示选择性多的要“礼让”选择性少的)。 然后划掉同行同列的其它0元素。可反复进行,直到所 有0元素都已圈出和划掉为止。
(5)若◎ 元素的数目m 等于矩阵的阶数n,那么这指 派问题的最优解已得到。若m < n, 则转入下一步。 第三步:作最少的直线覆盖所有0元素。 (1)对没有◎的行打√号; (2)对已打√号的行中所有含Ø元素的列打√号; (3)再对打有√号的列中含◎ 元素的行打√号;
20 21 23 18
25 27 22 29
30 26 29 40
100 30 32 25
40 36 42 38
小结 对于标准的指派问题,我们可以通过匈牙利 指派解法来解决。而更深入的指派问题,如人 员与任务不等的指派问题,我们仍可以通过转 化成为标准的指派问题,再来解决。 指派问题的目标就是在解决问题时,如何分 派使所消耗的总资源最少(或总体效益最优)。 如:给工人分派工作,给车辆分配道路,给工 件分配机床等等。同时许多网络问题(如旅行 问题、任务分配问题、运输问题等)都可以演 化成指派问题来解决。在现实生活中,指派问 题是十分常见的实际问题,利用数学建模思想, 匈牙利解法可以很好地解决指派问题。
将该人做此事的效率系数取
做足够大的数,可用M表示。
例:有A B C D 四个公司去投标5个施工工程。其投资额 (万)如下表(3)。其中A不能投第四个工程。

甲 乙 丙 丁 20 21 23 18

25 27 22 29

30 26 29 40

27 30 32 25

40 36 42 38
由于A不能投资第四个工程,那么使A 对第四个工程的投资额M=100万,则 如表4:
列最小元
1
1
试指派—圈零得分配方案
2 1 ◎ 0 2 2
找到4个独立o元素,但m<n=4
◎ 5 0 3 3 ◎ 0 5 3 0 Ø 4 2 6 2 Ø 3 0 5 2 Ø ◎ 0 3 0 3
第三步:做最少直线覆盖所有0元素
2 1 ◎ 0 2 2
行最 小元
5 2 3 4 6
Biblioteka Baidu
9 3 6 7 7 4 1 2 8 5 9 6 6 2 7 5 5 7 4 8
3 1 3 2 4
2 1 0 2 2
6 0 3 4 6 3 0 1 5 2 6 3 4 0 5 3 1 3 0 4
工作 工人 甲 乙 丙 丁
A 15 19 26 19
B 18 23 17 21
C 21 22 16 23
D 24 18 19 17
解:引入0—1变量 xij,并令 xij = 1(当指派第 i人去完成第j项工作时)或0(当不指派 第 i人去完成第j项工作时).这可以表示为一个0--1整数规划 问题: Min z =15x11+18x12+21x13+24x14+19x21+23x22+22x23+18x24+26x31+17x32+ 16x33 +19x34+19x41 +21x42+23x43+17x44 s.t. x11+ x12+ x13+ x14= 1 (甲只能干一项工作) x21+ x22+ x23+ x24= 1 (乙只能干一项工作) x31+ x32+ x33+ x34= 1 (丙只能干一项工作) x41+ x42+ x43+ x44= 1 (丁只能干一项工作) x11+ x21+ x31+ x41= 1 ( A工作只能一人干) x12+ x22+ x32+ x42= 1 ( B工作只能一人干) x13+ x23+ x33+ x43= 1 ( C工作只能一人干) x14+ x24+ x34+ x44= 1 ( D工作只能一人干) xij 为0--1变量,i,j = 1,2,3,4
1 (当指派第i个人去完成第j件事) ij
n n i 1 j 1
M inf cij xij
x
j 1
n
ij
1
表示第i个人只能完成一个工作任
1
x
i 1
n
ij
表示1个人只能完成第j个任务
指派问题的的价值系数ci j 构成的n 阶方阵C =[ cij ]称为价值矩阵或系数 矩阵 对于问题的每一个可行解,可用X =[ xij ]来表示, 矩阵的每行和每列 中有且只有一个1 在系数矩阵中,位于不同行不同列 的0元素称为独立0元素
(1) 从只有一个0元素的行(列)开始,给这个0元素加圈,记作◎ 。然 后划去◎ 所在列(行)的其它0元素,记作Ø ;这表示这列所代表的任务 已指派完,不必再考虑别人了。 (2) 给只有一个0元素的列(行)中的0元素加圈,记作◎;然后划去◎ 所在行的0元素,记作Ø . (3) 反复进行(1),(2)两步,直到尽可能多的0元素都被圈出和划掉为 止。
例一: 有四个工人,要分别指派他们完成四项不同 的工作,每 人做各项工作所消耗的时间如下表所示,问 应如何指派工作,才能使总的消耗时间为最 少?
任 务 人员 甲 乙 丙 丁 戊 A B C D E
5 2 3 4 6
9 7 8 6 5
3 4 5 2 7
6 1 9 7 4
7 2 6 5 8
第一步:变换系数矩阵(减去行与列的最小元素)
独立零元素的个数m等于最少直线数l,即l =m=3<n=4;
Ø 0 1 ◎ 0 Ø 0 2
3 5 4
0 ◎
1
5 ◎ 0 4 6 1 Ø 3 0 0 0 ◎ 5 Ø
1 0 Ø 2 ◎ 0 3
0 0 1 0 0
0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0
这是一个简单的0—1整数规划模型。我们可以用匈牙利指派法来解决。 匈牙利法:系数矩阵中独立 0 元素的最多个数等于能覆盖所有 0 元 素的最少直线数。从而只需要找到n个独立0元素。 匈牙利解题步骤: 第一步:变换指派问题的系数矩阵(cij )为(bij),使在(bij)的各行各列 中都出现0元素,即 (1) 从(cij)的每行元素都减去该行的最小元素; (2) 再从所得新系数矩阵的每列元素中减去该列的最小元素。 第二步:进行试指派,以寻求最优解。 在(bij)中找尽可能多的独立0元素,若能找出n个独立0元素,就以 这n个独立0元素对应解矩阵(xij)中的元素为1,其余为0,这就得到最优 解。找独立0元素,常用的步骤为:
相关文档
最新文档