指派模型【数学建模】

合集下载

441指派问题

441指派问题

一、指派问题的标准形式及其数学模型
指派问题的标准形式(以人和事为例)
n个人做n件事,并且要求每人必须而且只做
一件事。设第i人做第j件事的费用为 Cij(i,j
=1,2……,n),使总费用最少。因此,我们可得
指派问题的系数
c c 11 12 c1n
矩阵
c
(cij)n n
c c 21 22
c
2
n
cn1cn 2
cnn
对于问题的每个可行解,可用解矩阵
X 11 X 12 X 1n
X
( Xij)n
n
X
21
X 22
X
2n
Xn1
Xn2 Xnn
来表示。
为了建立标准指派问题的数学模型,我们引入n²个 0-1变量。并且得到该问题的数学模型。
1 xij
0
若指派第i人做第j事 若不指派第i人做第j事
5
Xij 1
i1
5
Xij 1
j1
Xij
0或1
j 1,2, ,5 i 1,2, ,5 i, j 1,2, ,5
(i, j 1,2, , n)
二、匈牙利解法
匈牙利法基于下面的价值系数矩阵:
(cij)=
c11 c12 … c1n c21 c22 … c2n ……………….
cn1 cn2 … cnn
22
16
1) 对没有加圈零元素的行打√号;
2) 对所有打√号行的含Ø零元素的列打√号;
3) 再对已打√号的列中含加圈零元素的行打√ 号;
4) 重复2)和3),直到再也不能找到可以打 √号行或列为止;
5) 对没有打√号的行画一横线,对打√号的列 画一竖线,这样就得到能覆盖所有零元素 的最少直线数目的直线集合。

指派问题

指派问题
√ 运筹学
STEP 4: 调整
GO TO STEP 1
45 0 40 65 45 55 55 0 0 5 0 45 0 55 60 55 45 45 0 45
√ √
0 20 40 √ 60 √ 95 √
运筹学
45 0 40 65 45 55 55 0 0 5 0 45 0 55 60 55 45 45 0 45
M ≥ m cij ), bij = M − cij ax(
则有
∑∑b x = ∑∑(M −c )x
i=1 j =1 ij ij n i=1 j =1 n ij n n i=1 j =1 i=1 j =1
n
n
n
n
ij n n
= M∑∑xij − ∑∑cij xij = nM − ∑∑cij xij
i=1 j =1
运筹学
32a 12a 0 0 0 0 640a 0 48a 176a 96a 0 8a 56a 26a 0
运筹学
32a 12a 0 0 0 0 640a 0 48a 176a 96a 0 8a 56a 26a 0
√ √
0 20 40 √ 60 √ 95 √
运筹学
50 0 45 65 50 55 60 0 0 0 0 40 0 50 60 50 45 40 0 40
0 20 35 55 90
运筹学
0 0 (xij ) = 0 1 0
指派问题
Assignment Problems
指派问题(分配问题)
1. 指派问题及其数学模型 2. 求解指派问题的匈牙利法 3. 非标准指派问题的求解 4. 指派问题的应用举例

指派问题的匈牙利法

指派问题的匈牙利法

l =m=4 < n=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
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
1 0 3 1 3 1 ◎0 3 1 3 √
2 6 0 3 0 2 6 ◎0 3 Ø0 √
(5)若◎ 元素旳数目m 等于矩阵旳阶数n,那么这指 派问题旳最优解已得到。若m < n, 则转入下一步。
第三步:作至少旳直线覆盖全部0元素。 (1)对没有◎旳行打√号; (2)对已打√号旳行中全部含Ø元素旳列打√号; (3)再对打有√号旳列中含◎ 元素旳行打√号;
(4)反复(2),(3)直到得不出新旳打√号旳行、列为止; (5)对没有打√号旳行画横线,有打√号旳列画纵线, 这就得到覆盖全部0元素旳至少直线数 l 。l 应等于m, 若不相等,阐明试指派过程有误,回到第二步(4),另 行试指派;若 l=m < n,须再变换目前旳系数矩阵, 以找到n个独立旳0元素,为此转第四步。
0
3
8
5
圈零划零
0 8 0 5
11 0 9 4
2 3 4 0
0
38
5
得最优解
将圈起旳零改为1,其他元素改为0,即得 最优解如下
0 0 1 0
(xij
)
0 0
1 0
0 0
0 1
1 0 0 0
最小总时间为22。
再看一例
祈求解如下矩阵体现旳指派问题
12 7 9 7 9
8
9
6
6
6
7 17 12 14 9
将时间矩阵C旳每一行都减去相应行旳最小元素 和每一列都减去相应列旳最小元素,使每一行 和每一列都具有零;

任务指派模型

任务指派模型
业务 业务员
1 2 3 4
1 1100 600 400 1100
2 800 500 800 1000
3 1000 300 1000 500
4 700 800 900 700

这是一个最优指派问题,引入如下变量:
1, xij = 0,
分派第 i个人做第 j项业务 不分派第 i个人做第 j项业务
业务业务斜11008001000700600500300800400800100090011001000500700分派第7个人做第项业务o不分派第个人做第项业务设矩阵儿皿为指派矩阵其中di刀为第istaxjj1234xfj
任务指派模型
公司在各地有4项业务,选定了4位业务员 去处理。由于业务能力、经验和其他情况不同, 4位业务员去处理4项业务的费用(单位:元) 各不相同,见表。应当怎样分派任务,才能使 总的费用最小?
设矩阵 A4×4为指派矩阵,其中 a (i, j )为第 i 个业务员 做第
j 项业务的业务费,则可以建立如下模型
min Z = ∑∑ aij xij
i =1 xij = 1, j = 1,2,3,4 i =1 4 s.t. ∑ xij = 1, i = 1,2,3,4 j =1 xij = 0或1,i, j = 1,2,3,4

运筹学__指派问题

运筹学__指派问题
(i 1, ,4; j 1, ,4)
则该指派问题的数学模型为:
min z 2x11 15x12 13x13 4x14 L 11x43 9x44
4
xij
1
(i 1,L
, 4)
∑xij=1 (i=1,2,3,4) 表示第i人只能完成一项任务
j1
s.t.
4
xij
1
( j 1,L
, 4)
i1
xij=1 (j=1,2,3,4) 表示第0或1
(i,j 1,L
, 4)
满足约束条件的解称为可行解, 可写成矩阵形式,叫作解矩阵。
如本例的一个可行解矩阵(但不一定是最优解)
0 1 0 0
xij
0 1
0 0
1 0
0 0
0 0 0 1
指派问题的解矩阵应具有如下特点:
在实际中经常会遇到这样的问题,
有n 项不同的任务, 需要n 个人分别完成其中的一项,
但由于任务的性质和各人的专长不同, 因此各人去完成不同的任务的效率 (或花费的时间或费用)也就不同。 于是产生了一个问题: 应指派哪个人去完成哪项任务,
使完成 n 项任务的总效率最高(或所需时间最少),
这类问题称为指派问题或分派问题。
二 匈牙利算法
思路 算法原理 算法步骤
(一) 思路
匈牙利法基于这样一个明显的事实: 如果在m阶效率矩阵中,所有元素cij≥0, 而其中有m个位于不同行不同列的一组0元素, 则在解矩阵中,只要令对应于这些0元素位置的 xij=1,其余的xij=0,就得到最优解。 此时的最优解为0
•如效率矩阵为 •恰有4个不同行 不同列的0系数
2. 指派问题数学模型—一般形式
设[cij]表示指派问题的效率矩阵,令

指派问题

指派问题

xij
0或1
i 1,, m
j 1,, m i, j 1,m
分配模型的标准形
如果一个分配模型满足以下三个条件: 1)目标要求为min 2)系数矩阵(cij)为n阶方阵 3)系数矩阵中所有元素cij≥0,且为常数
则称它为分配模型的标准形.
分配模型的标准形的特点:
含有n×n个变量,n+n个约束方程,所有变量均为0-1变量.
0; (2)如果人多事少,增加一些虚拟“事”,虚拟“事”做事的费用系数也取 为0; 3)一个人可做几件事的指派问题 可将某个人化作同样几个“人”接受指派,这几个“人”做同一件事的费用 系数一样。 4)某事一定不能由某人做的指派问题
可将相应的费用系数取为足够大的数M。
指派问题 assignment problem
①从只有一个0元素的行(列)的0元素开始,给这 个0元素加圈,记作◎,这表示对这行所代表的人 ,只 有一种任务可分派。然后划去◎所在列(行)的其它0 元素 ,记作,这表示这列所代表的任务已分派完, 不必再考虑别人了。
②给只有一个0元素的列(行)的元素加圈,记作◎; 然后划去◎所在的行的其它0元素,即作。
工厂1 工厂2 工厂3 工厂4
产品1 58 75 65 82
产品2 69 50 70 55
产品3 180 150 170 200
产品4 260 230 250 280
指派问题 assignment problem
得到两个最优解
1
1
X (1)=
1
,X (2)=
1
1 1
1
1
有两个最优方案
第一种方案:第一个工厂加工产品1,第二工厂加工产品3, 第三个工厂加工产品4,第四个工厂加工产品2;

指派问题

指派问题

第二步:找出矩阵每列的最小元素,再分别从每列中减去, 第二步:找出矩阵每列的最小元素,再分别从每列中减去,有
0 11 122 202 0 11 22 22 25 0 100 180 25 0 0 0 ⇒ 0 5 105 185 0 5 5 5 27 0 145 225 27 0 45 45
表5-34 工作 人员 甲 乙 丙 丁 A 85 95 82 86 B 92 87 83 90 C 73 78 79 80 D 90 95 90 88
x11 x X = 21 x31 x41
x12 x22 x32 x42
x13 x23 x33 x43
x14 x24 x34 x44
指派问题 assignment problem
min 58 75 65 82 69 50 70 55 180 150 170 200 260 58 230 50 ⇒ 250 65 280 55
0 11 122 202 25 0 100 180 0 5 105 185 27 0 145 225
6 17 17 0 0 0 0 0 0 0 45 45
第五步:覆盖所有零最少需要 条直线 表明矩阵中存在4个 条直线, 第五步:覆盖所有零最少需要4条直线,表明矩阵中存在 个 不同行不同列的零元素.容易看出4个 不同行不同列的零元素.容易看出 个“0”的位置 的位置
( 0 ) 30 0 × 32 6 17 17 × ( 0) 0 0 × 0 ( 0) 0 ( 0) 45 45 ( 0 ) 30 × 0 32 6 17 17 × 0 ( 0) 0 × ( 0) 0 0 ( 0) 45 45

指派问题和匈牙利法

指派问题和匈牙利法

2015-6-16
汇报提纲
一、指派问题的数学模型 二、匈牙利法 三、实例分析
三、实例分析
实例分析
有一份中文说明书,需译成英、日、德、俄四种文字,分别记作E、 J、G、R。现有甲、乙、丙、丁四人,将中文说明书译成不同语种的说 明书,所需的时间如表所示。问应指派何人去完成何种工作,使所需时
间最少?
第四步 进一步变换,得到最优解
(1)在未划线的元素中找最小者,设为 δ ; (2)在未被直线覆盖的各元素减去 δ ; (3)对两条直线交叉点覆盖的元素加上 δ ; (4)只有一条直线覆盖的元素保持不变 ;
(0)
11 2 0
8
(0)
2
5
5
4
0 6 13 0
0
5
3
4
3 (0) 0 11 4 5
11 0
或竖直线)数恰好为m条。
(3) 如果在价值系数矩阵中,位于不同行或不同列的零元素的个 数与价值系数矩阵(Cij)n×n的阶数相同,则显然只要令对应于这些 零元素位置的Xij=1,其余的Xij=0,则此解就是问题的最优解。
8
二、匈牙利法
匈牙利法的求解步骤
第一步 第二步 第三步 第四步 变换价值系数矩阵,使各行各列中都出现0元素; 选取0元素; 以最少数目的直线覆盖矩阵中所有0元素; 进一步变换,得到最优解。
(0) 11 2 0
8 (0)
2 5
5 4
3 (0) 0 11 4 5
此例中括起的0元素只有三个,小于矩阵阶数4,故需转第 三步。
2015-6-16
三、实例分析
第三步 以最少数目的直线覆盖矩阵中所有0元素
; ; ; 行上所有的0元素对应的列打 (1)对没有括起的行打 (2)对打 (3)对打
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

指派模型 宋海洲 一:指派问题 设有n个人被分配去做n件工作,规定每
个人只做一件工作,每件工作只由一个人做。已
知第i个人做第j件工作的效率(时间或费用)为 ,并假设 。 ?问:应
如何分配才能使总效率(总时间或总费用)最高? 引进变量 设 建立模型 分
析 这是线性规划模型; 也是整数规划模型;0-1规划模型; 更是运输模型。 共
有n*n个变量,实际上只需找n个变量为1即可,因此这是高度退化的线性规划
模型。 例1 设有5个人被分配去做5件工作,规定每个人只做一件工作,每件
工作只由一个人做。已知第i个人做第j件工作的费用如下表所示。问:应
如何分配工作才能使总费用最省? 二:匈牙利法 定义:指派问题的效益矩阵:
效益矩阵的性质 定理1:从效益矩阵C的第k行(或第k列)的每一个元素中
减去一个常数a得到的矩阵C’所表示的指派问题具有相同的最优解。( C’称
缩减效益矩阵) 定义:如果这些0元素分布在效益矩阵的不同的行和不同的列
上,则称这些0元素为独立的0元素。 定理2:若方阵的一部分元素为0,一部
分元素不为0,则覆盖方阵内所有0元素的最少直线数,等于矩阵中独立的0元
素的最多个数(匈牙利:konig) 积和式 定义: 积和式的性质 按行展开性; 转
置不变性; 换行不变性; 倍法变换增倍性; 单行可加性; Laplace法则。 补
矩阵 定义: 匈牙利法解指派模型算法 第一步:将原指派问题的效益矩阵C进
行变换得矩阵CC,使得CC的各行各列均出现0元素,其方法是: (1)从效益
矩阵C的每行元素减去该行最小元素; (2)在从所得的效益矩阵的每列元素减
去该列最小元素。 第二步:计算CC的补矩阵D,计算D的积和式per(D)。 判断
per(D)是否不等于0,如果per(D)不等于0,转第五步; 如果per(D)等于0,
转第三步。 第三步: (1)在CC中找0元素最少的一排(行或列),选中其中
一个0,记为0,将该0所在的行及列划去。 (2)对上述划去一行及一列的矩
阵,重复(1)的做法。 „„. 一共得到m个0 。(m n) 记下这m个0 所在的
行号i1,i2,„,im及列号j1,j2,„,jm. (则CC所有的0或0必在i1,i2,„,im
行中或在j1,j2,„,jm中) (3)①:在 CC中找出不在i1,i2,„,im行的0,记
下他们的列号r1,r2,„;并将这些列划竖线; ②:在划去竖线的CC中找出不含
0的列的0,记下他们的行号s1,s2,„;并将这些列划横线; 重复① ②,则这
些直线构成覆盖方阵CC内所有零元素的最少直线。 第四步:调整CC ,使之增
加一些0,为此按如下方法进行: (1)在没有直线覆盖的元素中,找出最小元
素x; (2)在未划线的行减去最小元素x; (3)在划线的列加上最小元素x;
得到新的CC,返回第二步。 第五步: (1)在CC中找0元素最少的一排(行
或列),选中其中一个0,记为0,将该0所在的行及列划去。 (2)对上述划去
一行及一列的矩阵,重复(1)的做法。 „„. 一共得到n个0 。 (3)将n
个0 所在位置对应的变量赋“1”,其他变量赋“0”,得到最优解。 例2:用匈
牙利法求解例1 第一步:将原指派问题的效益矩阵C进行变换 第二步:计算
CC的补矩阵D,计算D的积和式per(D)。 第三步: (1)在CC中找0元素最
少的一排(行或列),选中其中一个0,记为0,将该0所在的行及列划去。 (2)
对上述划去一行及一列的矩阵,重复(1)的做法。 „„.。一共得到4个0 。
(4 n=5) 记下这4个0 所在的行号1,2,3,5。 (3)在 CC中找出不在1,
2,3,5行的0(不是0 )的列号2,并将第2列划竖线,在CC划去竖线后剩下
的0划横线;则这些直线构成覆盖方阵CC内所有零元素的最少直线:(下一页)
第四步:调整CC ,使之增加一些0,为此按如下方法进行: (1)在没有直线覆
盖的元素中,找出最小元素x=1; (2)在未划线的行减去最小元素x; (3)在
划线的列加上最小元素x; 得到新的CC,返回第二步。 返回第二步:计算
CC的补矩阵D,计算D的积和式per(D)=0。再进行第三步得: 返回第四步:
调整CC ,使之增加一些0,为此按如下方法进行: (1)在没有直线覆盖的元素
中,找出最小元素x=1; (2)在未划线的行减去最小元素x; (3)在划线的列
加上最小元素x; 得到新的CC, 返回第二步,此时per(D)~=0,转第五步
得: 三:极大指派问题
模型: 令Cij’=maxCij-Cij,则模型等价为: 四:不平衡指派问题 令
令 模型转化为: * * 工作 人 a b c d e 甲 乙 丙 丁 戊
7 9 8 7 4 5 12 5 3 6 9 7 4 6 7 8 11 6 9 5 11 9 8 6 11

相关文档
最新文档