第五节指派问题

  • 格式:ppt
  • 大小:192.50 KB
  • 文档页数:18

下载文档原格式

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

上面的系数矩阵有6行5列,为了使“人”和“事”的数目相同,引入一 件虚拟的事B6,使之成为标准指派问题的系数矩阵:
B1 B 2 B3 B 4 B5 B 6 4 4 7 7 6 6 8 8 9 9 9 9 7 7 17 17 12 12 15 12 0 A1 A1' 15 12 0 14 10 0 A2 14 10 0 A2 ' 8 7 0 A3 8 7 0 A3'
步4:继续变换系数矩阵,目的是增加独立0元素的个数。方 法是在未被直线覆盖的元素中找出一个最小元素,然后在打“” 行各元素中都减去这一元素,而在打“”列的各元素都加上这 一最小元素,以保持原来0元素不变(为了消除负元素)。得到新 的系数矩阵,返回步2。 以例说明匈牙利法的应用。
例1:求解效率矩阵为如下的指派问题的最优指派方案。
若人少事多,则添上一些虚拟的“人”。这些虚拟的人作各事的费用 系数可取0,理解为这些费用实际上不会发生。若人多事少,则添上一些虚 拟的“事”。这些虚拟的事被各人做的费用系数同样也取0。
• 一个人可做几件事的指派问题 若某个人可做几件事,则可将该人看做相同的几个人来接受指派。这 几个人作同一件事的费用系数当然都一样。 • 某事一定不能由某人作的指派问题
0 3 0 0 1 7 0 2 3 0 0 5 0 2 3

11 8 7 3 2 1 0 4 4 0
第四步:对上述矩阵进行变换,目的是增加独立0元素个数。方法是在 未被直线覆盖的元素中找出一个最小元素,然后在打“”行各元素中 都减去这一元素,而在打“”列的各元素都加上这一最小元素,以保 持原来0元素不变(消除负元素)。得到新的系数矩阵。(它的最优解 和原问题相同,为什么?因为仅在目标函数系数中进行操作)
若某事一定不能由某个人做,则可将相应的费用系数取做足够大的数
M。
例3:对于例2的指派问题,为了保证工程质量,经研究决定,舍 弃建筑公司A4和A5,而让技术力量较强的建设公司A1,A2,A3参加 招标承建,根据实际情况,可允许每家建设公司承建一项或二项工程。 求使总费用最少的指派方案。
工程 公司
B1 4 7 6
9 6
7 6
12 14 6 6 7 10 0 10
9 6 9 10 9 2 0 2 4 5
5 2 0 9 0
0 10
2 0 5 7
3 0 0 8 0 0 6 3 6
2 0 2 4 5
2 0 5 7
解:第一步:系数矩阵的变换(目的是得到某行或列均有0元素)
第二步:确定独立0元素, 即加圈
4 7 6 6 6
8 7 15 9 17 14 9 12 7 14 8 6
9 12 10 0 3 0 0 1 7 0 2 3 0 0 5 0 2 3
12 10 7 10 6
3 0 0 8 0 0 6 3 6
元素的个数m=4,而n=5,进 行第三步。
第三步:作最少的直线覆盖所有的0元素,目的是确定系数矩阵 的下一个变换。
5 2 0 9 0

0 10
2 0 5 7
3 0 0 8 0 0 6 3 6
2 0 2 4 5
匈牙利解法的关键是指派问题最优解的以下性质:若从指派 问题的系数矩阵C=(cij)的某行(或某列)各元素分别减去一个 常数k,得到一个新的矩阵C’=(c’ij),则以C和C’为系数矩阵的两 个指派问题有相同的最优解。(这种变化不影响约束方程组,而 只是使目标函数值减少了常数k,所以,最优解并不改变。) 作变换,其不变性是最优解
0
2
0 0 0
3 0 8 0
8 3 5 4 1 4
2 0 0 4 3
0 0 0 0 1
1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0
由解矩阵可得指派方案和最优值为32。
例2 某大型工程有五个工程项目,决定向社会公开招标,有五家 建筑能力相当的建筑公司分别获得中标承建。已知建筑公司Ai(I=1, 2,3,4,5)的报价cij(百万元)见表,问该部门应该怎样分配建造 任务,才能使总的建造费用最小?
然后,用匈牙利解法求解。可得费用最省为4+7+9+8+7=35(百万元)
工程 公司
B1 4 7 6 6 6
B2 8 9 9 7 9
B3 7 17 12 14 12
B4 15 14 8 6 10
B5 12 10 7 10 6
A1 A2 A3 A4 A5
min Z 4 x11 8 x12 10 x54 6 x55 5 j 1,2,,5 xij 1 i 1 5 s.t xij 1 i 1,2,,5 j 1 x 0 or 1 i, j 1,2,,5 ij
12 7 8 9 7 17 15 14 4 10
9 6
7 6
12 14 6 6 7 10
wk.baidu.com
9 6 9 10 9
解:第一步:系数矩阵的变换(目的是得到某行或列均有0元素)
第二步:确定独立0元素
12 7 8 9 7 17 15 14 4 10 5 2 0 9 0
3 0 11 8 0 6 6 2 1 2 1 0 0 5 0 4 2 3 4 0
此矩阵中已有5个独立的0元素,故可得指派问题的最优指派方案为:
0 0 1 0 0
0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1
确定独立0元素的方法:当n较小时,可用观察法、或试探法;当n 较大时,可按下列顺序进行 • 从只有一个0元素的行(列)开始,给这个0元素加圈,记作,然后 划去所在的列(行)的其它0元素,记作。 •给只有一个0元素的列(行)的0加圈,记作,然后划去所在行的0 元素,记作。
•反复进行,直到系数矩阵中的所有0元素都被圈去或划去为止。
B2 8 9 9
B3 7 17 12
B4 15 14 8
B5 12 10 7
A1 A2 A3
解:由于每家建筑公司最多可以承建两项,因此可把每家建筑公司看 成两家建筑公司,其系数矩阵为
B1 B 2 B3 B 4 B5 4 4 7 7 6 6 8 8 9 9 9 9 7 7 17 17 12 12 15 12 A1 A1' 15 12 14 10 A2 14 10 A2 ' 8 7 A3 8 7 A3'
对于指派问题,由于系数矩阵均非负,故若能在在系数矩阵 中找到n个位于不同行和不同列的零元素(独立的0元素),则对 应的指派方案总费用为零,从而一定是最优的。
匈牙利法的步骤如下: 步1:变换系数矩阵。对系数矩阵中的每行元素分别减去该行的最 小元素;再对系数矩阵中的每列元素分别减去该列中的最小元素。若 某行或某列已有0元素,就不必要在减了(不能出现负元素)。 步2:在变换后的系数矩阵中确定独立0元素(试指派)。若独立0 元素已有n个,则已得出最优解;若独立0元素的个数少于n个,转步3。
min Z
数学模型为:
cij xij
i 1 j 1
n
n
s.t
n xij 1 i 1 n xij 1 j 1 x 0 or 1, i, j 1,2,, n ij
其中矩阵C称为是效率矩阵或系数矩阵。 其解的形式可用0-1矩阵的形式来描述,即 (xij)nn。 标准的指派问题是一类特殊的整数规划问题,又是特殊的0-1 规划问题和特殊的运输问题。1955年W. W. Kuhn利用匈牙利数学家 D. Konig关于矩阵中独立零元素的定理, 提出了解指派问题的一种 算法, 习惯上称之为匈牙利解法。 2. 匈牙利解法
0 3 1 0 1 1 0 0 0 2 1 0 0 1 1
0 11 8 6 6 2 2 1 0 5 0 4 3 4 0
1 0 0 1 1
3 0 11 8 0 6 6 2 1 2 1 0 0 5 0 4 2 3 4 0
第五节 指派问题(Assignment Problem)
1. 标准指派问题的提法及模型 指派问题的标准形式是:有n个人和n件事,已知第i个人做第j件 事的费用为cij(i,j=1,2,…,n),要求确定人和事之间的一一对 应的指派方案,使完成这n件事的总费用最小。 设n2个0-1变量
1 若指派第i个人做第j件事 xij (i,j=1,2,…, n) 0 若不指派第i个人做第j件事
•如遇到行或列中0元素都不只一个(存在0元素的闭回路),可任选其 中一个0元素加圈,同时划去同行和同列中的其它0元素。被划圈的0元 素即是独立的0元素。
步3:作最少数目的直线,覆盖所有0元素(目的是确定系数矩阵的 下一个变换),可按下述方法进行
1) 对没有的行打“”号; 2) 在已打“”号的行中,对 所在列打“” 3)在已打“”号的列中,对所在的行打“”号; 4)重复2)3),直到再也找不到可以打“”号的行或列为止; 5)对没有打“”的行划一横线,对打“”的列划一纵线,这样就得 到覆盖所有0元素的最少直线数。
第四步:对上述矩阵进行变换,目的是增加独立0元素的个数。方法是 在未被直线覆盖的元素中找出一个最小元素,然后在打“”行各元素 中都减去这一元素,而在打“”列的各元素都加上这一最小元素,以 保持原来0元素不变(消除负元素)。得到新的系数矩阵。(它的最优 解和原问题相同,为什么?)
7 4 0 11 0
也就是说,最优指派方案为:让A1承建B3, A2承建B2,A3承建B1, A4承建B4,A5承建B5。这样安排建造费用为最小,即
7+9+6+6+6=34(百万元)
3. 一般的指派问题
在实际应用中,常会遇到各种非标准形式的指派问题。通常的处理方 法是先将它们转化为标准形式,然后用匈牙利解法求解。
• 最大化指派问题 设最大化指派问题系数矩阵C中最大元素为m。令矩阵B=(bij)=(m-cij), 则以B为系数矩阵的最小化指派问题和以C为系数矩阵的原最大化指派问题 有相同的最优解。 • 人数和事数不等的指派问题
0 3 0 0 1 7 0 2 3 0 0 5 0 2 3
11 8 7 3 2 1 0 4 4 0
11 8 7 3 2 1 0 4 4 0
元素的个数m=4,而n=5,进 行第三步。
第三步:作最少的直线覆盖所有的0元素,目的是确定系数矩阵 的下一个变换。