最优化论文

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

理学院

最优化理论与应用

课程设计

学号:XXXXXXX

专业:应用数学

学生姓名:XXXXXX

任课教师:XXXXXX教授

2015年10月

第一部分

在最优化理论与应用这门课中,我对求指派问题及指派问题的一个很好的解法匈牙利算法的应用比较感应趣。下面做出来讨论。 国内外的研究情况:“匈牙利算法”最早是由匈牙利数学家尼格(D.Koning )用来求矩阵中0元素个数的一种方法

]

3[,由此他证明了“矩阵中独立0元素的最

多个数等于能覆盖所有0元素的最小直线数”。1955年由库恩(W.W.Kuhn )在求解著名的指派问题时引用了这一结论

]

4[,并对具体算法做了改进,任然称为“匈

牙利算法”。解指派问题的匈牙利算法是从这样一个明显事实出发的:如果效率矩阵的所有元素

≥ij a ,而其中存在一组位于不同行不同列的零元素,而只要令

对应于这些零元素位置的1

=ij x ,其余的

=ij x ,则z=

∑∑n i

n

j

ij

ij x

a

就是问题的最

优解。

第二部分

结合我的基础知识对匈牙利算法的分析与展望 一.基础知识运用

企业员工指派问题的模型建立与求解

1.标准指派问题(当m=n 时,即为每个人都被指派一项任务)

假定某企业有甲乙丙丁戊五个员工,需要在一定的生产技术组织条件下,A ,B,C,D,E 五项任务,每个员工完成每项工作所需要耗费的工作时间如下:

求出:员工与任务之间应如何分配,才能保证完成工作任务的时间最短?最短时间为多少? 模型建立

设用C>0表示指派第i 个人去完成第j 项任务所用费时间,定义决策变量

,

{j i ,1j i ,0项任务

个人去完成第当指派第项任务个人去完成第当不指派第=ij χ则指派问题的数学模型为:

模型求解 由题意及匈牙利算法矩阵得

07

8

0022304

306404001322740

1080

3

25

3

07003104

301352

1040311180

4

3

6

3

0800200540

1363

1140441380568

3

09322

018601376

1340510

19146

111517129185442314126191311189510⨯

⨯⨯

→→

→→=和第二列划线

并将第二三行

C

由此可知当员工甲负责任务A ,员工乙负责任务D ,员工丙负责任务B ,员

工D 负责任务C ,员工E 负责任务E 时,才能保证完成工作任务的时间最短,最短时间为39个小时。 2.非标准指派问题

当m

求如何分配任务才能保证工作时间最短? 模型建立

设用C>0表示指派第i 个人去完成第j 项任务所用费时间,定义决策变量

,

{j i ,1j i ,0项任务

个人去完成第当指派第项任务个人去完成第当不指派第=ij χ则指派问题的数学模型为:

因为该模型不能直接运用匈牙利算法求解,

故我们进行如下分析:五个员工负责四项任务则必有一个员工没有任务。此时可增添一个虚任务E ,则个员工完成E 的时间均为0,上表变形为

此时模型变为如下

设用C>0表示指派第i 个人去完成第j 项任务所用费时间,定义决策变量

,

{j i ,1j i ,0项任务

个人去完成第当指派第项任务个人去完成第当不指派第=ij χ则指派问题可转化为0-1线性规划问题

模型求解如下

即当甲分派C任务,乙分派A任务,丙分派B任务,戊分派D任务时,工作时间最短,最短时间为24小时。

二.匈牙利算法的缺点

1.“匈牙利算法”在各种已发表的教材,专注和研究成果中,通常求解中小型分派问题,效能矩阵的阶数不超过20,故很难发现匈牙利算法”的缺点,匈牙利算法在处理一些特殊数据时并不有效,算法不收敛,无法找出最优解。

2.在匈牙利算法的求解步骤中,效率矩阵即可以先进行行减约也可以先进行列减约,但是,有时候先进行行减约比先进行列减约复杂,增加了许多步,有时却相反。

三.匈牙利算法的改进

现对效率矩阵进行改进,这样就能知道先行减约还是先进行列减约,改进如下:

第一步,简化效率矩阵。(1)统计效率矩阵每行的最小元素的个数总和R (sum)和每列的最小元素的个数总和C(sum)。(2)若R(sum)和C(sum)均大于n,且当R(sum)>C(sum)时,则先对效率矩阵的没咧减去该列的最小元素,在对所得效率矩阵的每行减去该行的最小元素。反之当R(sum)C(sum)时,则先对效率矩阵的每行减去该行的最小元素,在对所得效率矩阵的每列减去该列的最小元素;

相关文档
最新文档