当前位置:文档之家› 用改进的匈牙利算法求解运输问题

用改进的匈牙利算法求解运输问题

用改进的匈牙利算法求解运输问题李雪娇,于洪珍中国矿业大学信电学院,江苏徐州 (221008)Email :liaohuchushan@摘 要:本文提出用改进的匈牙利算法求解运输问题。

此算法不但可以直接求取最优解,而且在运量受限制的运输问题中有很好的应用。

关键词:改进,匈牙利算法,运输问题,最优解0. 引言在现实生活中,我们常常会遇到许多运输问题。

运输问题的求解多采用表上作业法。

在此方法中,我们需要先利用最小元素法或西北角法求出一组基本可行解,再对此解检验其最优性。

若此解非最优解,则又要进行解的改进。

这一过程比较麻烦,尤其对一些结构不太大的模型,编程时往往过于繁琐。

同时,经典运输问题在实际应用中有很大的局限性, 对一些运输量受限制或运输能力受限制的运输问题,我们无法用表上作业法直接求取。

在此,我们采用改进的匈牙利算法处理这类运输问题。

为了便于描述,设物资供应量12[...]m A a a a =,物资需求量12[...]n B b b b =,从到i A j B 的单物的物资运价,最小运输量 (假设m )。

i j C i j L n >1. 匈牙利算法[1][4]匈牙利算法的基本思想是修改效益矩阵的行和列,使得每行和每列中至少有一个零元素。

经过一定的变换,得到不同行、不同列只有一个零元素。

从而得到一个与这些零元素相匹配的完全分配方案。

这种方法总是在有限步内收敛于一个最优解。

该方法的理论基础是:在效益矩阵的任何行或列中,加上或减去一个常数后不会改变最优解的分配。

求解步骤如下:第一步:使指派问题的系数矩阵经变换后,在各行各列中都出现零元素,即从系数矩阵的每行(或列)元素中减去该行(或列)的最小元素。

第二步:寻求找n 个独立的零元素,以得到最优解:(1)从只有一个0元素的行(或列)开始,对这个0元素加圈,记为θ。

然后划去此元素所在列(或行)的其他0元素,记作∅。

反复进行,直到所有的0元素被划完。

(2)若仍有没有划圈的0元素,则从剩有0元素最少的行开始,比较这行0元素所在各列中0元素的数目,选择0元素少的那列的0元素加圈θ,然后划掉同行同列的其他0元素,反复进行直到所有的0元素被划掉或圈出。

(3)若元素的数目m 等于矩阵的阶数,那么指派问题的最优解已得到。

若m ,则转入下一步。

n n <第三步:作最少的直线覆盖所有0元素,以确定该系数矩阵中能找到最多的独立元素数:若l ,必须再变换当前的系数矩阵,才能找到个独立的0元素,为此转第四步;若l ,而,应回到第二步(2),另行试探。

n <n n =m n <第四步:在没有被直线覆盖的部分中找到最小元素。

然后在打√行各元素都减去这个最小元素,而在打列的各元素都加上这个最小元素,这样得到一个新的矩阵。

重复第二步到第三步。

√2. 改进的匈牙利算法2.1 算法思想以最小运输量为分配目标,每次分配都为当前已分配的最优解,因此,当完成所有运输任务后,得到的是一个全局最优解。

同时,由于匈牙利算法解决的指派问题具有0-1整形和运输问题的双重特点。

因此,改进的匈牙利算法可以解决有运量限制或存在相互排斥条件的运输问题。

由于在匈牙利算法中,效益矩阵的任何行或列加上或减去一个常数后不会改变最优解的分配,所以运用匈牙利算法可以使得初始可行解对应的目标函数值显著减小,使之更为逼近最优解,从而减少迭代次数、减少计算量。

2.2 具体实现步骤1. 将不平衡指派转化为平衡指派问题设置一些虚拟的行或列向量,以0元素填充,使得矩阵变为一个C m m ×的方阵。

2. 找出Α,向量中的最小值,记录下该最小值所在的向量及坐标。

将此最小值和L 中的最小非零值比较,得出三者中的最小。

若L 中的非零值较小且L 较大时,只需记录此非零值及其对应的行和列。

Βi j L 3. 若最小值在或A B 向量中,直接对矩阵C 运用匈牙利算法求得最优指派矩阵()M i 。

若在中,则将最小值在中对应的行和列删除,再用匈牙利算法求得一最优分配矩阵L i j L C ()M i ,在()M i 矩阵中添加第i 行和第j 列,使得ij M 处为1,其余添加元素为0。

将向量、A B 中已分配部分减去该最小值,除去含零向量中的零元素,得到一组新的向量、A B 。

将的最小非零值置零。

L 4. 将缩减的矩阵中恢复成m 矩阵。

对已缩减掉的元素用0填充。

若最小值在中,则将第行、n ×L i j 列的元素置1,其它元素不变。

5. 重置矩阵C 。

假设该最小值为行(或列)的第个元素,则删除C 中第k 行(或第列),得到一个新的效益矩阵C 。

k k 6. 重复1~5,直到、A B 中的元素全为0。

7. 将矩阵()M i 经加权后得矩阵。

则矩阵即为最优分配方案。

()d i S S 3. 算例分析3.1 问题某公司经销甲产品。

它下设三个加工厂。

每日的产量分别为:A 1为7吨, 为4吨,为9吨。

该公司把这些产品分别运往四个销售点。

各销售点每日销售为:A 2A 3B 1为3吨,B 2为6吨,B 3为5吨,B 4为6吨。

要求A 1厂的产品至少分配2吨给B 3。

已知从各工厂到销售点的单位产品的运价如表1下:问该公司如何调运产品,在满足各销点的需要量的前提下,使总运费为最少。

表13.2 求解过程 第一步:添加(假设)个虚拟的加工厂,并赋予加工厂到销售点完成这些虚拟运输的费用为0。

此时,问题转化为产地和销售点数目相等的指派问题。

m n −m n >3113101928741050000C ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦第二步:列出描述生产量和销售量的向量及约束矩阵,比较得出最小值。

13L [749]A = [3656]B =(1)min(,)d A B = 132L =第三步;用匈牙利算法求解,得出运输量都为的分配方案,矩阵中的表示第个生产商运输货物到第13L (1)M 1ij m =i j 个销售点。

完成第一次分配以后,重新计算各生产点的货物量和销售点的需求量,得到新的向量、A B 。

10010(1)10000100C M 6θ4⎡⎤⎡⎤⎢⎥θ5∅3⎢⎥⎢⎥=⇒=⎢⎥⎢⎥6θ8∅⎢⎥⎢⎥⎣⎦∅∅∅θ⎣⎦[527]A = [1436]B =3113101928741050000C ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦第四步:从上面的分配可以看出,B 1销售点的需求量得到满足。

将B 1(最小值所在的位置)从B 删除。

重新组合、A B 得到新的矩阵。

C 10010(2)10000100C M 6θ4⎡⎤⎡⎤⎢⎥θ5∅3⎢⎥⎢⎥=⇒=⎢⎥⎢⎥6θ8∅⎢⎥⎢⎥⎣⎦∅∅∅θ⎣⎦[416]A =[0326]B =[326]B =第五步:重复步骤1~4,实现剩余量的再分配:1).循环三:113103*********(3)00014105110100C C M θθθ⎡⎤⎡⎤⎡⎢⎥⎢⎥⎢=⇒=∅⇒=⎢⎥⎢⎥⎢⎢⎥⎢⎥⎢∅⎣⎦⎣⎦⎣⎤⎥⎥⎥⎦[35]A =[215]B =113104105C ⎡⎤=⎢⎥⎣⎦在此分配过程中,我们得到第二次分配方案。

此时,A (3)M 2产品全部销售完,还有、A A 13、B 2、B 3、B 4尚待分配,重新组合后得到上面的矩阵C 。

2).循环四:对矩阵设置虚拟的行,然后用匈牙利算法直接求取。

C (3)1d = 113575001041057(4)00000000100C C M θθθ⎡⎤⎡⎤⎡⎢⎥⎢⎥⎢=⇒=∅⇒=⎢⎥⎢⎥⎢⎢⎥⎢⎥⎢∅∅⎣⎦⎣⎦⎣⎤⎥⎥⎥⎦[24]A =[15]B = 在此过程中,B 3的需求量得到满足,B 3不再参与分配。

3).循环五、六、七的结果如下:(4)1d = 000111101(5)00004510100C C M θθ⎡⎤⎡⎤⎡⎤⎢⎥=⇒=⇒=⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎣⎦[13]A =[4]B =00001005(6)0000500001C C M θθ⎡⎤⎡⎤⎡⎤⎢⎥=⇒=⇒=⎢⎥⎢⎥⎢⎥∅⎣⎦⎣⎦⎢⎥⎣⎦0001(7)00000000M ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦执行完以上三次循环后,、A B 矩阵全都为空。

此时,分配完成。

第六步:利用系数加权,我们求得分配结果为S ,S 得到最优运输方案。

01000100010000131000100011000010000010001000100010000000001005230000100003001000100000603S ⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=×+×+×+×⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎣⎦⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥+×+×=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦随着产品的不断分配,生产点和销售点的生产和需求不断被满足,反映在矩阵C不断变小,从而在若干步长内收敛完全,完成整个运输过程。

4 结论本文主要研究了运输量受约束的运输问题,并提出了改进的匈牙利算法求得最优解,给出了算法实例,说明了改进的匈牙利算法应用于运输问题的求解时可以实现对运输量限制的最优分配,具有较强的可行性。

在结构不大的运输问题中或产量和销量中有许多相等量的大结构中,可以实现算法的快速收敛。

参考文献[1]《运筹学》教材编写组. 《运筹学》(第三版),北京清华大学出版社 2005[2] 朱德通编. 《运筹学》, 上海人民出版社 2000[3] 胡运全主编郭耀煌副主编.《运筹学教程》(第二版) , 北京清华大学出版社 2003[4]焦吉成《对匈牙利算法的改进及其应用实例》山东冶金第22卷第二期 2000.4Use the Improved Hungry Algorithm to SolveTransportation ProblemLi Xuejiao,Yu HongzhenThe School of Information and Electrical Engineering of China University of Mining andTechnology, Xuzhou (221008)AbstractDeveloped Hungry algorithm was given to solve the transportation problem in this paper. Using this algorithm you can get the optimal solution directly,and while ,it can make good use in transport problems with quantity limits .Keywords:Improved Hungry Algorithm Transportation problem Optimal solution作者简介:李雪娇,20岁,女,汉族,山东省临沂市郯城县。

相关主题