分配问题与匈牙利法
- 格式:ppt
- 大小:272.52 KB
- 文档页数:20
第四讲 指派模型及匈牙利方法§ 4.1 引言将不同的任务分派给若干人去完成,由于任务有难易,人员素质有高低,因此各人去完成不同的任务的效率就有差异。
我们的问题是:应分派何人去完成哪种任务使得总效率最高(或所花费的时间最少,或所需的费用最低)?这一类问题称为指派问题或分配问题。
指派问题的一般提法是:用最佳方法按照一对一的原则把“任务”指派给“人”。
具体地就是:设有n 个人A 1,A 2,…,A n ,被分派去完成n 项工作B 1,B 2,…,B n ,要求每项工作需且仅需一个人去完成,每个人需完成且仅需完成一项工作。
已知A i 完成B j 工作的效率(如工时、成本或价值等)为c ij 。
问应如何指派,才能使总的工作效率最好?指派问题本质上是0—1规划问题。
设X ij 表示A i 完成B j 工作,并令⎪⎩⎪⎨⎧=工作去完成当不指派工作去完成当指派j i j i ij B A B A X 0 1,则指派模型的标准形式为), ,2 ,1,( }1 ,0{ ) , ,2 ,1( 1 ), ,2 ,1( 1s.t.)0( min 1111n j i X n j X n i Xc X c Z ij n i ij nj ijij ni nj ij ij ΛΛΛ=∈====≥=∑∑∑∑====由c ij 组成的方阵C = (c ij )n ⨯n 称为效率矩阵。
只要效率矩阵C 给定,指派问题也就相应确定。
若0ij x 为指派模型的最优解,则n 阶方阵X = (0ij x ) 称为指派模型的最优解方阵。
事实上,方阵X 为一置换方阵,即该矩阵中的每一行、每一列只有一个“1”。
显然,指派问题是运输问题的特例。
§ 4.2 匈牙利方法除了求解0—1规划外,解决指派问题还有其特殊的方法,它是由匈牙利数学家柯尼格(D. Köngig )提出的,因此得名匈牙利方法(The Hungarian Method of Assignment )。
130基于空缺链和匈牙利算法的资源分配问题杨 子 马 硕 贾 隆 哈尔滨工业大学(威海)摘 要:对于寄居蟹,壳是它们生命的保障,寄居蟹要很慎重地思考并且评估壳资源,才会交换他们的壳,同时它们也能着眼于未来,所以它们有着最好的蟹类的平均主义思想。
而我们人类从中看出空屋链模型和匈牙利算法对于社会资源分配的启示,例如职位招聘,房屋流动等。
关键词:空屋链 匈牙利算法 资源分配一、引言为了说明让每个人都受益的交换策略的起源,有以下背景。
寄居蟹,一种在美国非常流行的宠物类型,依靠其它生物的壳作为保护。
当蟹遇到了新壳,会立即从住所出来,试穿新住所,这是典型的寄居蟹式作风。
但如果这个新壳有些偏大,它可不会失望的走掉,相反,它会站在这个新壳附近一直等待着,直到其它的蟹出现,那些新来的都会试试这个新壳。
但如果这个新壳对于新来的来说也很大的话,那么它们会一起等待,有时,一个新壳旁边的寄居蟹甚至20组之多。
但这些蟹不是随机的,相反,它们按个头从大到小排成整齐一排。
一旦有一个蟹能够适应这个新壳,队伍中的所有蟹都将会迅速交换它们的壳。
队伍前最大的的蟹将会遗弃它自己的壳,然后那第二大的寄居蟹将会使用那个被最大的寄居蟹遗弃的壳。
然后一直这样传递下去。
由此,这个连续的交换资源使得队伍每一个个体都能得到好处的方式(经济学家称为“空缺链”)启示我们发现更优秀的资源分配方式。
二、模型1.基本模型。
空缺链最初出现在住宅市场,对家庭的初始迁移,包含新家庭或家庭搬走留下的住房市场。
当这个初始空屋单位是第一个房子,当全家搬到了另一个空房子,这个空缺链将继续。
户主的家庭没有搬或当以家庭为单位的房屋拆迁,空置链停止。
我们以职位为社会资源为例,探讨社会资源的更有利分配。
1.1定义和符号。
V i:在i区的空位数 N:区域同质化数 r ij :从i到j地区空置转让转换率 V i r i :1.从i到的空缺j的地区总流面积2.家庭总迁移从i流动到j区面积 F i :i区空置损失率 G i :i区空置生成率 q ij :从i空缺转移到j区概率 Σj m:从i区住宅总面积中被选择的机会 1.2假设。
匈牙利法解决人数与任务数不等的指派问题于凯重庆科技学院经济管理学院物流专业重庆沙坪坝区摘要:本文将讨论运筹学中的指派问题,而且属于非标准指派问题,即人数与任务数不相等的指派问题,应当视为一个多目标决策问题,首先要求指派给个人任务数目两两之间相差不能超过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匈牙利法的具体步骤第一步:使指派问题的系数矩阵经过变换在各行各列中都出现○元素。
指派问题与匈⽛利解法指派问题概述:实际中,会遇到这样的问题,有n项不同的任务,需要n个⼈分别完成其中的1项,每个⼈完成任务的时间不⼀样。
于是就有⼀个问题,如何分配任务使得花费时间最少。
通俗来讲,就是n*n矩阵中,选取n个元素,每⾏每列各有1个元素,使得和最⼩。
如下图:指派问题性质:指派问题的最优解有这样⼀个性质,若从矩阵的⼀⾏(列)各元素中分别减去该⾏(列)的最⼩元素,得到归约矩阵,其最优解和原矩阵的最优解相同.匈⽛利法:12797989666717121491514661041071091.⾏归约:每⾏元素减去该⾏的最⼩元素502022300001057298004063652.列归约:每列元素减去该列的最⼩元素502022300001057298004063653.试指派:(1)找到未被画线的含0元素最少的⾏列,即,遍历所有未被画线的0元素,看下该0元素所在的⾏列⼀共有多少个0,最终选取最少个数的那个0元素。
(2)找到该⾏列中未被画线的0元素,这就是⼀个独⽴0元素。
对该0元素所在⾏和列画线。
50202230000105729800406365502022300001057298004063655020223000010572980040636550202230000105729800406365(3)暂时不看被线覆盖的元素,重复(1)(2)直到没有线可以画。
(4)根据(2)找到的0元素个数判断,找到n个独⽴0元素则Success,⼩于n个则Fail.(本例⼦中,n=5,可以看到,第⼀次试指派之后,独⽴0元素有4个,不符合)4.画盖0线:⽬标:做最少的直线数覆盖所有0元素,直线数就是独⽴0元素的个数。
注意:这跟3的线不同;不能⽤贪⼼法去画线,⽐如1 0 01 1 01 0 1若先画横的,则得画3条线,实际只需2条;若先画竖的,将矩阵转置后同理。
步骤3得出的独⽴0元素的位置50202230000105729800406365(1)对没有独⽴0元素的⾏打勾、(2)对打勾的⾏所含0元素的列打勾(3)对所有打勾的列中所含独⽴0元素的⾏打勾(4)重复(2)(3)直到没有不能再打勾(5)对打勾的列和没有打勾的⾏画画线,这就是最⼩盖0线。
匈牙利法解决人数与任务数不等的指派问题于凯重庆科技学院经济管理学院物流专业重庆沙坪坝区摘要:本文将讨论运筹学中的指派问题,而且属于非标准指派问题,即人数与任务数不相等的指派问题,应当视为一个多目标决策问题,首先要求指派给个人任务数目两两之间相差不能超过1,其次要求所需总时间最少,并且给出了该类问题的求解方法。
关键词:运筹学指派问题匈牙利算法系数矩阵解矩阵引言:在日常的生产生活中常遇到这样的问题:有n项任务,有n个人员可以去承担这n 项任务,但由于每位人员的特点与专长不同,各对象完成各项任务所用的时间费用或效益不同;有因任务性质要求和管理上需要等原因,每项任务只能由一个人员承担来完成,这就涉及到应该指派哪个人员去完成哪项任务,才能使完成n项任务花费总时间最短,总费用最少,产生的总效益最佳。
我们把这类最优匹配问题称为指派问题或分配问题。
1.指派问题的解法——匈牙利法早在1955年库恩(w.w.ku.hn)就提出了指派问题的解法,该方法是以匈牙利数学家康尼格(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,其次要求所需总时间最少,并且给出了该类问题的求解方法。
关键词:运筹学指派问题匈牙利算法系数矩阵解矩阵引言:在日常的生产生活中常遇到这样的问题:有n项任务,有n个人员可以去承担这n 项任务,但由于每位人员的特点与专长不同,各对象完成各项任务所用的时间费用或效益不同;有因任务性质要求和管理上需要等原因,每项任务只能由一个人员承担来完成,这就涉及到应该指派哪个人员去完成哪项任务,才能使完成n项任务花费总时间最短,总费用最少,产生的总效益最佳。
我们把这类最优匹配问题称为指派问题或分配问题。
1.指派问题的解法——匈牙利法早在1955年库恩(w.w.ku.hn)就提出了指派问题的解法,该方法是以匈牙利数学家康尼格(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)的最优解,同时与其对应的原系数矩阵的最优解。
分配问题与Hungarian算法分配问题与Hungarian算法分配问题指派问题匈⽛利算法匈⽛利⽅法是⼀种能够在多项式时间内解决分配问题(assignment problem)的组合优化算法。
它由Harold Kuhn 与1955年发展并提出,由于该算法很⼤程度上依赖于先前两位匈⽛利数学家:Denes Konig 和 Jeno Egervary,所以被命名为“匈⽛利⽅法”。
1957年James Munkres重新审视了这个⽅法,证明发现该⽅法是严格polynomial的,所以之后该⽅法也被称为Kuhn-Munkres 算法或者Munkres分配算法。
原始的匈⽛利算法的时间复杂度是,然⽽之后Edmonds和Karp,以及Tomizawa独⽴发现经过⼀定的修改,该算法能改达到的时间复杂度。
Ford和Fulkerson将该⽅法扩展到⼀般运输问题的求解上。
2006年,研究发现Carl Custav Jacobi在19实际就解决了assignment问题,并且在其逝世后的1890年求解过程被以拉丁语形式发表。
指派问题匈⽛利法解决的指派问题应该具有两个约束条件workes 和tasks的数⽬应该相同,即o2o问题。
求解的是最⼩化问题,如⼯作时间的最⼩化、费⽤的最⼩化等等指派问题⽰例:有三个workers: Jim, Steve和Alan,现在有3个⼯作:clean the bathroom, sweep the floors和wash the windows需要交给这三个⼈,每个⼈只能完成⼀个任务,对应的cost matrix如下---Clean bathroom Sweep floors Wash windowsJim$2$3$3Steve$3$2$3Alan$3$3$2那么如何分配任务是开销最⼩就是⼀个指派问题匈⽛利法步骤问题: 假定某单位有甲、⼄、丙、丁、戊五个员⼯,现需要完成A、B、C、D、E五项任务,每个员⼯完成某项任务的时间如下图所⽰,应该如何分配任务,才能保证完成任务所需要的时间开销最⼩?1476015762594.jpg解:1. 写出系数矩阵2. 更新系数矩阵,使系数矩阵的每⼀⾏每⼀列都减去该⾏该列的最⼩值,保证每⼀⾏每⼀列都有0元素出现,参见定理2.3. 选择只有⼀个0元素的⾏或列将该0元素标注为独⽴0元素,并将该0元素所在的列或⾏中0元素划掉,直⾄找不到满⾜条件的⾏或列,需要注意的是在循环时,划掉的0元素不再视为0元素。