运筹学指派问题

合集下载

运筹学指派问题

运筹学指派问题

n
n
总成本最小
每项任务由一人完成 每人只承担一项任务
解矩阵的特征
• 全部元素仅取0或1 • 每行有且仅有一个1 • 每列有且仅有一个1
0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0
例如,n=5时, X xij
数学模型 : m in z cij xij j 1 i 1
n xij 1, j 1,2 ,...,n i 1 n s .t . xij 1, i 1,2 ,...,n j 1 x 0 ,1 i , j 1,2 ,...,n ij
在C中找出最多独立0的步骤
• 设Wi表示第i行0的数目,Lj表示第i列0的数目.
• 1.统计Wi和Lj(i,j=1,2,…n).
• 2.按W1,W2,…,Wn,L1,L2,…,Ln顺序找出 第一个最小正数,选中该行(列)首个0. • 3.删除该0所在的行与列,对应的Wi=0,Lj=0. • 4.重复步骤1~3,直到全部Wi=0为止.
0
0
这样就找到 4个独立0
如果按自上而下从左到右顺序找
0 0 0 0 0 0 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
• 这样,4条线就覆盖了全部0
0 0 0 0 0 0
0
0 0
0 0 0 0

运筹学课件ch5指派问题[全文]

运筹学课件ch5指派问题[全文]

运筹学课件ch5指派问题[全文] 指派问题assignment problem 运筹学课件一种特殊的线性规划问题,我们也经常遇到指派人员做某项工作的情况。

指派问题的许多应用都用来帮助管理人员解决如何为一项将要开展进行的工作指派人员的问题。

其他的一些应用如为一项任务指派机器、设备或者是工厂。

指派问题运筹学课件指派问题的形式表述:给定了一系列所要完成的任务(tasks)以及一系列完成任务的被指派者(assignees),所需要解决的问题就是要确定出哪一个人被指派进行哪一项任务。

指派问题模型运筹学课件指派问题的假设:被指派者的数量和任务的数量是相同的每一个被指派者只完成一项任务每一项任务只能由一个被指派者来完成每个被指派者和每项任务的组合有一个相关成本目标是要确定怎样进行指派才能使得总成本最小指派问题模型运筹学课件指派问题assignment problem 【例51></a>.14】人事部门欲安排四人到四个不同的岗位工作,每个岗位一个人(经考核四人在不同岗位的成绩(百分制)如表5-34所示,如何安排他们的工作使总成绩最好。

88809086丁90798382丙95788795乙90739285甲DCBA工作人员表5-34【解】设1 数学模型运筹学课件数学模型为:甲乙丙丁ABCD图5. 3指派问题assignment problem运筹学课件假设m个人恰好做m项工作,第i个人做第j项工作的效率为cij?0,效率矩阵为[cij](如表5-34),如何分配工作使效率最佳(min或max)的数学模型为指派问题assignment problem运筹学课件2 解指派问题的匈牙利算法匈牙利法的条件是:问题求最小值、人数与工作数相等及效率非负【定理5.1】如果从分配问题效率矩阵[cij]的每一行元素中分别减去(或加上)一个常数ui(被称为该行的位势),从每一列分别减去(或加上)一个常数vj(称为该列的位势),得到一个新的效率矩阵[bij],其中bij=cij,ui,vj,则[bij]的最优解等价于[cij]的最优解,这里cij、bij均非负(指派问题assignment problem【证】运筹学课件【定理5.2】若矩阵A的元素可分成“0”与非“0”两部分,则覆盖“0”元素的最少直线数等于位于不同行不同列的“0”元素(称为独立元素)的最大个数( 如果最少直线数等于m,则存在m个独立的“0”元素,令这些零元素对应的xij等于1,其余变量等于0,这时目标函数值等于零,得到最优解(两个目标函数相差一个常数 u+v,约束条件不变,因此最优解不变。

三类指派问题

三类指派问题

三类指派问题1. 简介三类指派问题是运筹学中的一类经典问题,它的目标是找到一种最优分配方案,将若干个任务分配给若干个执行者,使得总体成本或效益达到最小或最大。

这类问题通常可以用线性规划模型来描述和求解。

三类指派问题包括: - 任务分配问题:将若干个任务分配给若干个执行者,使得总体成本最小或效益最大。

- 作业调度问题:将若干个作业安排在若干台机器上进行处理,使得总体完成时间最短或机器利用率最高。

- 设备调度问题:将若干个任务安排在若干台设备上进行处理,使得总体完成时间最短或设备利用率最高。

2. 任务分配问题2.1 模型描述假设有n个任务和n个执行者,每个任务只能由一个执行者完成,并且每个执行者只能处理一个任务。

每个任务与每个执行者之间都有一个成本或效益值。

我们的目标是找到一种分配方案,使得总体成本最小或效益最大。

可以使用二维数组C表示各任务与各执行者之间的成本或效益值,其中C[i][j]表示第i个任务分配给第j个执行者的成本或效益值。

定义一个二进制变量X[i][j],如果第i个任务分配给第j个执行者,则X[i][j]=1,否则X[i][j]=0。

任务分配问题可以用下面的线性规划模型来描述:minimize ∑(i=1 to n)∑(j=1 to n) C[i][j] * X[i][j]subject to∑(i=1 to n) X[i][j] = 1, for j = 1,2,...,n∑(j=1 to n) X[i][j] = 1, for i = 1,2,...,nX[i][j] ∈ {0, 1}, for i,j = 1,2,...,n2.2 求解方法常用的求解任务分配问题的方法有匈牙利算法和线性规划方法。

匈牙利算法是一种经典的图论算法,它通过构建增广路径来找到最优分配方案。

该算法的时间复杂度为O(n^3),适用于小规模问题。

线性规划方法则通过将任务分配问题转化为线性规划模型,并利用线性规划求解器进行求解。

指派问题(经典运筹学)

指派问题(经典运筹学)
c 11 c 取 C 21 c n1 c 12 c 22 cn2 c1n c 2n c nn
1 1 c 11 2 c 21 … i c i1 … n c n1 2
c 12 c 22 ci2 cn2


1 2 3 4
6 20 10
21
25 14 0
5
x6
解:x i
1
2
0
不在第i个地区建站
i=1,2, …,6
Z表示全区消防站总数
2 6 1 x3 x4 1 s.t x3 x4 x5 1 x x x 1 4 5 6 x i 0 ,1 i 1, 2 , , 6
一、决策问题与0-1变量
决策变量
xi
x i 是否做第
i 件事 i 1, 2 , , n
1 0
做第i件事 不做第i件事
x1 x 2 x n k
n件事中必须做k件并只做k件事 n件事中最多做k件事 n件事中至少做k件事
x1 x 2 x n k x1 x 2 x n k
当n=4时, 有16变量,8个约束方程
例:现有4份工作,4个人应聘,由 于各人技术专长不同,他们承担 各项工作所需费用如下表所示, 且规定每人只能做一项工作,每 一项工作只能由一人承担,试求 使总费用最小的分派方案。
工作
Z表示总费用
max Z 3 x11 5 x12 4 x13 5 x14 6 x 21 7 x 22 6 x 23 8 x 24 8 x 31 9 x 32 8 x 33 10 x 34 10 x 41 10 x 42 9 x 43 11 x 44

运筹学指派问题课件

运筹学指派问题课件

c
i 1 j 1
n
n
ij
xij
n xij 1 i 1 n st . xij 1 (i , j 1, 2, ..., n) j 1 x 1or 0 ij
运筹学教程
例1:某商业公司计划开5家新商店,商业公司决定由5家建筑 公司分别承建。已知建筑公司Ai(i=1,2…5)对新商店Bj(j=1…5) 的建筑费用报价Cij.问题:商业公司对5家建筑公司如何分配任 务,才能使总的建筑费用最少? Cij Ai Bj
运筹学教程
指派问题解法:匈牙利解法 解法思想:
若从系数矩阵C的任何一行(列)各元素中分别减去 一个常数K(K可正可负)得到新矩阵C’,则以C’为系 数矩阵的指派问题与原问题有相同的解,但最优值 比原问题最优值小K。
匈牙利法条件: MIN、i=j 、Cij≥0
运筹学教程
匈牙利法的主要步骤: 步骤1:变换系数矩阵,使在各行各列都出现零元素。 (1)从矩阵C的每行元素减去该行的最小元素;
0 11 8 7 7 3 3 2 1 C ' 5 0 4 3 4 0
第二步 圈0 寻找不同行不同列的0元素,圈之。 所在行和列其它0元素划掉
0 0 0 0 0 3 0 11 8 第三步 打 无的行打,打行上0列打 , 1 7 7 3 打列上行打,打行上0列打 ' 2 3 2 1 C 0 5 0 4 0 3 0 11 8 0 1 7 7 3 2 3 4 0 C ' 0 2 3 2 1 第四步 确定方案划线 0 0 5 0 4 没有打行上画一条横线; 0 2 3 4 0 有打列上画一条竖线;
15 120 15 12 0 14 100 14 100 8 7 0 0 8 7

运筹学__指派问题

运筹学__指派问题
(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]表示指派问题的效率矩阵,令

运筹学 工作指派问题

运筹学 工作指派问题

n
n
n
n
ij
) xij
n n
= M ∑∑ xij − ∑∑ cij xij = nM − ∑∑ cij xij
i =1 j =1
14
1 甲 乙 丙 丁 10 5 5 2 2 9 8 4 3 3 7 7 6 4 4 8 7 5 5
12
例1-15 求最大效率问题
上海港务局装卸队安排五个班组进行五条作 业线的配工,以往各班组完成某项作业的实 际效率的具体数据如下表所示。
项目 班组 甲 乙 丙 丁 戊 400 435 505 495 450 315 295 370 310 320 220 240 320 250 310 120 220 200 180 190 145 160 165 135 100 13 1 2 3 4 5
9
(4)画0元素的最少覆盖线:要用最少的覆盖线将矩 阵表格中的所有0元素都覆盖住。如果覆盖线的条 数少于矩阵的阶数,说明找不到最优解,要转下 步(继续变换矩阵,使0元素增加)。如果覆盖线 的条数等于矩阵的阶数,则说明可以从矩阵表格 的0元素中找出最优解。 画最少覆盖线的具体方法: ①对没有◎的行打√; ②对打√的行中,所有有0元素的列打√; ③对打√的列中,对有◎的行打√; ④重复②、③步直到得不出新的打√的行和列; ⑤对没有打√的行画横线,对打√的列画纵线,这 些横线和纵线就是能把全部0元素都覆盖的最少覆 盖线。
第一章 线性规划的基本 理论及其应用
1
第九节
工作指派问题
工作指派问题是这样一类问题: 有n个人和n件事,已知第i个人做第j件事的 费用为 cij (i, j = 1, 2, , n),要求确定人和事之间的 一一对应的指派方案,使完成这n件事的总 费用最少。

《运筹学》胡运权清华版-5-05指派问题

《运筹学》胡运权清华版-5-05指派问题

任务 A
B
C
D
人员

9
17 16
7

12
7
14 16

8
17 14 17

7
9
11
9
解:设决策变量xij,i=1,2,3,4; j=1,2,3,4
xij 01
表示分派第i人做第j项工作 表示不分派第i人做第j项工作
任务 A
B
C
D
人员

x11
x12
x13
x14

x21
x22
x23
x24

x31
③反复进行①、 ②两步,直到所有0元素都被圈出 或划掉为止。
注:若遇到在所有的行和列中,0元素都不止一个 时,可任选其中一个0元素加O;然后作一直线覆盖该 列元素(或该行元素)。
对于本例
用一直线覆 盖所在列
第一行只有 一个0元素
2 10 5 0
c'ij

5 0
0 9
3 9 2 9
0 2 0 2

x11

x21
...
xn1

1

...

x1n x2n ... xnn 1
若C=(cij)n×n的第一行各元素分别加上一个常数k, 得到一个新矩阵C’=(c’ij) n×n
c11 k
C'
c21


cn1
c12 k c22 ... cn2
... c1n k
17 7 17
16 14 14
7 16
-7 -7
17 -8

运筹学 指派问题

运筹学 指派问题

ij
ij

cij xij i xij j xij
ij
i
j
j
i
z i j
i
j
即z和 z’只相差一个常数,故它们有相同的最优解.
• 利用这个性质,可使原效率矩阵变换为含有很
多0元素的新效率矩阵,而最优解保持不变,在
效率矩阵(bij)中,我们关心位于不同行不同列
(显然z(x*)=0)
0*
如效率矩阵为

9
23
14 20 0*
9 0* 3
3 23 8


令(
xij
)


1 0 0
0 0 1
0 1 0
0
0

则xij是最 优解
0

0
12 14 0* ,


0 0 0 1
因此需对效率矩阵作变换,使变换后效率矩阵 (bij )nn
可行解矩阵
n
xij 1, j 1, 2, , n ②
i1
表明各列之和为1 。
n
xij 1, i 1, 2, , n ③
j1
表明各行之和为1 。
满足约束条件②~④的可行解xij构成的可行解矩阵,
矩阵中有n个为1,其余都为0,而且这n个1必位于矩阵的不
同行不同列上。对应于可行解xij的目标值是这n个cij之和.


2
3
0*
0
0

条位,于不同行不同列的”0”元素
0 * 10
5
7
2
的最大个数也为4.
9 8 0 0* 4

运筹学指派问题实验报告书

运筹学指派问题实验报告书

运筹学指派问题实验报告书运筹学实践报告指派问题第⼀部分问题背景泰泽公司(Tazer)是⼀家制药公司。

它进⼊医药市场已经有12年的历史了,并且推出了6种新药。

这6种新药中5种是市场上已经存在药物的同类产品,所以销售的情况并不是很乐观。

然⽽,主治⾼⾎压的第6种药物却获得了巨⼤的成功。

由于泰泽公司拥有⽣产治疗⾼⾎压药物的专利权,所以公司并没有遇到什么竞争对⼿。

仅仅从第6种药物中所获得的利润就可以使泰泽公司正常运营下去。

在过去的12年中,泰泽公司不断地进⾏适量的研究和发展⼯作,但是却并没有发现有哪⼀种药物能够获得像⾼⾎压药物⼀样的成功。

⼀个原因是公司没有⼤量投资进⾏创新研究开发的动⼒。

公司依赖⾼⾎压药物,觉得没有必要花费⼤量的资源寻找新药物的突破。

但是现在泰泽公司不得不⾯对竞争的压⼒了。

⾼⾎压药物的专利保护期还有5年1。

泰泽公司知道只要专利期限⼀到,⼤量药品制造公司就会像秃鹰⼀样涌进市场。

历史数据表明普通药物会降低品牌药物75%的销售量。

今年泰泽公司投⼊⼤量的资⾦进⾏研究和开发⼯作以求能够取得突破,给公司带来像⾼⾎压药物⼀样的巨⼤成功。

泰泽公司相信如果现在就开始进⾏⼤量的研究和开发⼯作,在⾼⾎压药物专利到期之后能够发明⼀种成功药物的概率是很⾼的。

作为泰泽公司研究和开发的负责⼈,你将负责选择项⽬并为每⼀个项⽬指派项⽬负责⼈。

在研究了市场的需要,分析了当前药物的不⾜并且拜会了⼤量在有良好前景的医药领域进⾏研究的科学家之后,你决定你的部门进⾏五个项⽬,如下所⽰:1⼀般来说,专利权保护发明的期限为17年。

在1995年,GATT⽴法拓展专利权的保护期限到20年。

在本案例之中,泰泽公司的⾼⾎压药物的注册时间是在1995年之前,所以专利权只能够保护这种药物17年。

Up项⽬:开发⼀种更加有效的抗忧郁剂,这种新药并不会带来使⽤者情绪的急剧变化。

Stable项⽬:开发⼀种治疗躁狂抑郁病的新药。

Choice项⽬:为⼥性开发⼀种副作⽤更⼩的节育⽅法。

运筹学 指派问题课件 PPT

运筹学 指派问题课件 PPT
产品1 产品2 产品3 产品4
效率表
工厂1 工厂2
58 75
69 50
180 150
260 230
工厂3 工厂4
65 82
70 55
170 200
250 280
2
返回总目录
例1 某公司拟将四种新产品配置到四个工厂生产,四 个工厂的单位产品成本(元/件)如下表所示。求最 优生产配置方案使得单位产品成本总和为最小。
15
返回总目录
第三步:用最少的直线覆盖所有0:
0 0 11 22 22 25 25 0 0 0 0 0 5 5 5 27 27 0 45 45 6 17 17 0 30 0 0 0 0 0 0 0 0 45 45 32 6 17 17 0 0 0 0 0 0 0 45 45
回到第三步,用最少的直线覆盖所有0。 此时最少直线数=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
x14 x24 x34 x44
工厂2 x21 工厂3 x31 工厂4 x41
1 1 1 1
1
1
1
1
产品1 产品2 产品3 产品4
工厂1 工厂2 工厂3 工厂4 58 75 65 82 69 50 70 55 180 150 170 200 260 230 250
5280
返回总目录
数学模型 匈牙利算法 其他变异的指派问题

运筹学指派问题

运筹学指派问题
• 一个人可做几件事的指派问题
若某个人可做几件事,则可将该人看做相同的几个人来接受指派。这 几个人作同一件事的费用系数当然都一样。
• 某事一定不能由某人作的指派问题
若某事一定不能由某个人做,则可将相应的费用系数取做足够大的数 M。
例3:对于例2的指派问题,为了保证工程质量,经研究决定,舍 弃建筑公司A4和A5,而让技术力量较强的建设公司A1,A2,A3参加 招标承建,根据实际情况,可允许每家建设公司承建一项或二项工程。 求使总费用最少的指派方案。
步2:在变换后的系数矩阵中确定独立0元素(试指派)。若独立0元 素已有n个,则已得出最优解;若独立0元素的个数少于n个,转步3。
确定独立0元素的方法:当n较小时,可用观察法、或试探法;当n较 大时,可按下列顺序进行 • 从只有一个0元素的行(列)开始,给这个0元素加圈,记作,然后划 去所在的列(行)的其它0元素,记作。 •给只有一个0元素的列(行)的0加圈,记作,然后划去所在行的0元 素,记作。 •反复进行,直到系数矩阵中的所有0元素都被圈去或划去为止。 •如遇到行或列中0元素都不只一个(存在0元素的闭回路),可任选其中 一个0元素加圈,同时划去同行和同列中的其它0元素。被划圈的0元素即 是独立的0元素。
第二步:确定独立0元素, 即加圈 元素的个数m=4,而n=5,进 行第三步。
第三步:作最少的直线覆盖所有的0元素,目的是确定系数矩阵 的下一个变换。
第四步:对上述矩阵进行变换,目的是增加独立0元素个数。方法是在 未被直线覆盖的元素中找出一个最小元素,然后在打“”行各元素中 都减去这一元素,而在打“”列的各元素都加上这一最小元素,以保 持原来0元素不变(消除负元素)。得到新的系数矩阵。(它的最优解 和原问题相同,为什么?因为仅在目标函数系数中进行操作)

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

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

2023年运筹学指派问题的匈牙利法实验报告一、前言运筹学是一门涉及多学科交叉的学科,其主要研究通过数学模型和计算机技术来提高生产和管理效率的方法和技术。

其中,指派问题是运筹学中的重要研究方向之一。

针对指派问题,传统的解决方法是匈牙利法。

本文将基于匈牙利法,通过实验的方法来探讨2023年指派问题的发展。

二、指派问题1.定义指派问题是指在一个矩阵中指定每一行和每一列只选一个数,使得多个行和列没有相同的数,而且总和最小。

2.传统算法匈牙利算法是一种经典的用于解决指派问题的算法。

该算法基于图论的思想,用于寻找最大匹配问题中的最大流。

匈牙利算法的时间复杂度为 $O(n^3)$,但是,该算法仍然被广泛应用于实际问题求解。

三、实验设计1.实验目的本实验旨在探究匈牙利算法在指派问题中的应用以及其发展趋势,同时,通过对比算法运行速度来评估其效率和实用性。

2.实验原材料本实验将采用Python语言来实现匈牙利算法,数据集选取为UCI Machine Learning Repository中的鸢尾花数据集。

3.实验步骤步骤1:导入数据集,并进行数据预处理。

步骤2:计算每个样本在所有类别中的得分,并选取得分最高的类别作为预测结果。

步骤3:使用匈牙利算法对预测结果进行优化,以求得更优的分类方案。

步骤4:对比优化前后的分类结果,评估算法的实用性和效率。

四、实验结果本实验的最终结果表明,匈牙利算法在指派问题中的应用具有很好的效果。

实验数据表明,经过匈牙利算法优化后,分类器的准确率有了显著提高,分类结果更加精确。

同时,通过对比算法运行时间,也发现该算法具有较高的运行速度和效率。

五、实验结论本实验通过大量数据实验表明,匈牙利算法在指派问题中的应用具有很高的效率和精度。

将算法运用到实际生产和管理中,可有效地提高生产效率和管理水平。

但是,由于算法的时间复杂度比较高,因此在实际运用过程中需要合理选择算法,并对算法进行优化,以确保其效率达到最大化。

运筹学_指派问题

运筹学_指派问题

(xij)是n×n矩阵,对应于效率矩阵(cij).
工作
x11 人 x i1 xn1
x1n xij xin xnj xnn x1 j
可行解矩阵
x
i 1
n
ij
1,
j 1, 2, , n ②
指派问题的最优解有这样性质,若从效率矩 阵(cij)的一行(列)各元素中分别减去该行(列)的 最小元素,得到新矩阵(bij),那么以(bij)为效率 矩阵求得的最优解和用原效率矩阵求得的最优解 相同 。即 定理2 设给定了以C = (cij)为效率矩阵指派问题G, 现将C的元素cij 改变为 bij cij i j , i 与 j 为常数 则以B= ( bij )为效率矩阵指派问题G’与G有相同的最 优解。
第四节 指 派 问 题
assignment problem
在生活中经常遇到这样的问题,某 单位需完成n项任务,恰好有n个人可承 担这些任务。由于每人的专长不同,各 人完成任务不同(或所费时间),效率也 不同。于是产生应指派哪个人去完成哪 项任务,使完成n项任务的总效率最高 (或所需总时间最小)。这类问题称为指 派问题或分派问题。
行列都有 零元素
7 6 3 0*
0 * 9 (b ) ij 2 0
0 0 最优解为 ( xij ) 1 0
0 1 0 0
0 0 0 1
1 0 0 0
定理3 若矩阵C可分成”0”与非”0”两部分,则覆 盖”0”元素的最少直线等于位于不同行不同列的”0” 元素的最大个数.

5 0* 2 0 2 2 3 0* 0 0 0* 10 5 7 2 -2 9 8 0 0* 4 0 6 3 6 5 -2 5 0* 2 0 2 2 3 0* 0 0 2 8 3 5 0 9 8 0 0* 4 2 4 1 4 3

运筹学整数规划指派问题

运筹学整数规划指派问题

4 8 7 15 12 -4 7 9 17 14 7 -7
0 4 3 11 8 0 2 10 7 3
C
6
9 12
6
10
-6
0
3
6
2
1
6 7 14 8 10 -6
0 1 8 0 4
6
9
6
10
8
-6
0
3
6
4
0
-1 -3

0 0
3 1
0 7
11 7
8 3

C1
0
2
3
2
1

0 0 5 0 4
这样安排能使总的建造费用最少,总的建造费用为 7+9+6+6+6=34(万元)。
三 非标准形式的指派问题
处理方法:化成标准形式,再按匈牙利方法求解。 ⒈ 目标函数最大化指派问题
例 有4名工人A1,A2,A3,A4分别操作4台机床B1,B2,B3,B4。每 人操作每台机床的单位产量见下表。求产值最大的指派方案。
在遇到所有行和列中,零元素都不止一个时,可任选其中 一个加圈,然后划去同行、同列其他未被标记的零元素。

5 0 2 0
C
2 0 0
3 0 8
0 6 0
0
7 0
步骤3: 若矩阵所有零元素都被标记的,但圈零的个数m < n , 作最少直线覆盖当前零元素。
已知5家建筑公司承建5家商店系数矩阵
⒈变换系数矩阵
0 0 0 0 1
X
*
0
0
0
1
0
0 1 0 0 0
0
0
1
0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2 3 0 0 0 10 5 7 2 8 0 0 4 6 3 6 5 0 2 0
5 2 0 9 0
2 3 0 0 0 10 5 7 2 8 0 0 4 6 3 6 5 0 2 0
元素的个数m=4,而n=5,进 行第三步。
• 最大化指派问题 设最大化指派问题系数矩阵C中最大元素为m。令矩阵B=(bij)=(m-cij), 则以B为系数矩阵的最小化指派问题和以C为系数矩阵的原最大化指派问题 有相同的最优解。 • 人数和事数不等的指派问题
若人少事多,则添上一些虚拟的“人”。这些虚拟的人作各事的费用 系数可取0,理解为这些费用实际上不会发生。若人多事少,则添上一些虚 拟的“事”。这些虚拟的事被各人做的费用系数同样也取0。
min Z
(i,j=1,2,…, n)

c ij x ij
i 1 j 1
s .t
n x ij 1 i 1 n x ij 1 j 1 x or ij 0
1,
i , j 1, 2 , , n
其中矩阵C称为是效率矩阵或系数矩阵。 其解的形式可用0-1矩阵的形式来描述,即 (xij)nn。 标准的指派问题是一类特殊的整数规划问题,又是特殊的0-1 规划问题和特殊的运输问题。1955年W. W. Kuhn利用匈牙利数学家 D. Konig关于矩阵中独立零元素的定理, 提出了解指派问题的一种 算法, 习惯上称之为匈牙利解法。 2. 匈牙利解法
未被直线覆盖的元素中找出一个最小元素,然后在打“”行各元素中 都减去这一元素,而在打“”列的各元素都加上这一最小元素,以保 持原来0元素不变(为了消除负元素)。得到新的系数矩阵,返回步2。 以例说明匈牙利法的应用。
例1:求解效率矩阵为如下的指派问题的最优指派方案。
7 9 7 9 12 8 9 6 6 6 7 17 12 14 9 15 14 6 6 10 4 10 7 10 9
1) 对没有的行打“”号;
2) 在已打“”号的行中,对 所在列打“” 3)在已打“”号的列中,对所在的行打“”号;
4)重复2)3),直到再也找不到可以打“”号的行或列为止;
5)对没有打“”的行划一横线,对打“”的列划一纵线,这样就得 到覆盖所有0元素的最少直线数。
步4:继续变换系数矩阵,目的是增加独立0元素的个数。方法是在
解:第一步:系数矩阵的变换(目的是得到某行或列均有0元素)
7 9 7 9 12 8 9 6 6 6 7 17 12 14 9 15 14 6 6 10 4 10 7 10 9
第二步:确定独立0元素
5 2 0 9 0
3 0 1 0 2
0 6 2 5 3
11
8 6 2 1 0 0 4 4 0
8 6 2 1 0 0 4 4 0
此矩阵中已有5个独立的0元素,故可得指派问题的最优指派方案为:
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
第五节 指派问题(Assignment Problem)
1. 标准指派问题的提法及模型 指派问题的标准形式是:有n个人和n件事,已知第i个人做第j件 事的费用为cij(i,j=1,2,…,n),要求确定人和事之间的一一对 应的指派方案,使完成这n件事的总费用最小。 设n2个0-1变量 1 若指派第i个人做第j件事 x ij 0 若不指派第i个人做第j件事 n n 数学模型为:
s .t
解:第一步:系数矩阵的变换(目的是得到某行或列均有0元素)
4 7 6 6 6
8 9 9 7 9 0 0 0 0 0
7 17 12 14 12 3 1 2 0 2
15
12 14 10 8 7 6 10 10 6 11 7 2 0 4 8 3 1 4 0
Hale Waihona Puke 第三步:作最少的直线覆盖所有的0元素,目的是确定系数矩阵 的下一个变换。
5 2 0 9 0
2 3 0 0 0 10 5 7 2 8 0 0 4 6 3 6 5 0 2 0


第四步:对上述矩阵进行变换,目的是增加独立0元素的个数。方法是 在未被直线覆盖的元素中找出一个最小元素,然后在打“”行各元素 中都减去这一元素,而在打“”列的各元素都加上这一最小元素,以 保持原来0元素不变(消除负元素)。得到新的系数矩阵。(它的最优 解和原问题相同,为什么?)
B4 15
B5 A1 A1
'
12 15 12 14 10 14 10 8 7 8 7
A2 A2 A3 A3
' '
上面的系数矩阵有6行5列,为了使“人”和“事”的数目相同,引入一 件虚拟的事B6,使之成为标准指派问题的系数矩阵:
B1 4 4 7 7 6 6
B4 15 14 8 6 10
B5 12 10 7 10 6
A1 A2 A3 A4 A5
min Z 4 x 11 8 x 12 10 x 54 6 x 55 5 x ij 1 i 1 5 x ij 1 j 1 x 0 or ij j 1, 2 , , 5 i 1, 2 , , 5 1 i , j 1, 2 , , 5
工程 公司
B1 4 7 6
B2 8 9 9
B3 7 17 12
B4 15 14 8
B5 12 10 7
A1 A2 A3
解:由于每家建筑公司最多可以承建两项,因此可把每家建筑公司看 成两家建筑公司,其系数矩阵为
B1 4 4 7 7 6 6
B2 8 8 9 9 9 9
B3 7 7 17 17 12 12
步2:在变换后的系数矩阵中确定独立0元素(试指派)。若独立0元
素已有n个,则已得出最优解;若独立0元素的个数少于n个,转步3。
确定独立0元素的方法:当n较小时,可用观察法、或试探法;当n较
大时,可按下列顺序进行
• 从只有一个0元素的行(列)开始,给这个0元素加圈,记作,然后划 去所在的列(行)的其它0元素,记作。
0 0 0 0 0
3 1 2 0 2
0 7 3 5 3
11 7 2 0 4
8 3 1 4 0
第二步:确定独立0元素, 即加圈
0 7 3 5 3
元素的个数m=4,而n=5,进 行第三步。
第三步:作最少的直线覆盖所有的0元素,目的是确定系数矩阵 的下一个变换。
•给只有一个0元素的列(行)的0加圈,记作,然后划去所在行的0元
素,记作。 •反复进行,直到系数矩阵中的所有0元素都被圈去或划去为止。
•如遇到行或列中0元素都不只一个(存在0元素的闭回路),可任选其中
一个0元素加圈,同时划去同行和同列中的其它0元素。被划圈的0元素即 是独立的0元素。
•步3:作最少数目的直线,覆盖所有0元素(目的是确定系数矩阵的下 一个变换),可按下述方法进行
匈牙利解法的关键是指派问题最优解的以下性质:若从指派 问题的系数矩阵C=(cij)的某行(或某列)各元素分别减去一个 常数k,得到一个新的矩阵C’=(c’ij),则以C和C’为系数矩阵的两 个指派问题有相同的最优解。(这种变化不影响约束方程组,而 只是使目标函数值减少了常数k,所以,最优解并不改变。) 作变换,其不变性是最优解
0 0 0 1 0
0 0 0 0 1
也就是说,最优指派方案为:让A1承建B3, A2承建B2,A3承建B1, A4承建B4,A5承建B5。这样安排建造费用为最小,即
7+9+6+6+6=34(百万元)
3. 一般的指派问题
在实际应用中,常会遇到各种非标准形式的指派问题。通常的处理方 法是先将它们转化为标准形式,然后用匈牙利解法求解。
B2 8 8 9 9 9 9
B3 7 7 17 17 12 12
B4 15 15 14 14 8 8
B5 12
B6 A1 A1
'
0 12 0 10 0 10 0 7 0 7 0
A2 A2 A3 A3
' '
然后,用匈牙利解法求解。可得费用最省为4+7+9+8+7=35(百万元)
0 3 0 11 1 0 6 6 1 1 2 1 0 0 5 0 0 2 3 4 1 0 0 1 1 3 0 1 0 2 0 6 2 5 3 11
8 2 0 4 0
1 0 0 1 1
0 0 0 0 0
3 1 2 0 2
0 7 3 5 3
11 7 2 0 4
8 3 1 4 0

第四步:对上述矩阵进行变换,目的是增加独立0元素个数。方法是在 未被直线覆盖的元素中找出一个最小元素,然后在打“”行各元素中 都减去这一元素,而在打“”列的各元素都加上这一最小元素,以保 持原来0元素不变(消除负元素)。得到新的系数矩阵。(它的最优解 和原问题相同,为什么?因为仅在目标函数系数中进行操作)
对于指派问题,由于系数矩阵均非负,故若能在在系数矩阵 中找到n个位于不同行和不同列的零元素(独立的0元素),则对 应的指派方案总费用为零,从而一定是最优的。
匈牙利法的步骤如下: 步1:变换系数矩阵。对系数矩阵中的每行元素分别减去该行的最 小元素;再对系数矩阵中的每列元素分别减去该列中的最小元素。若 某行或某列已有0元素,就不必再减了(不能出现负元素)。
• 一个人可做几件事的指派问题 若某个人可做几件事,则可将该人看做相同的几个人来接受指派。这 几个人作同一件事的费用系数当然都一样。 • 某事一定不能由某人作的指派问题
相关文档
最新文档