伏格尔法解决传输运输问题

1.含义

伏格尔法又称差值法,该方法考虑到,某产地的产品如不能按最小运费就近供应,就考虑次小运费,这就有一个差额。差额越大,说明不能按最小运费调运时,运费增加越多。因而对差额最大处,就应当采用最小运费调运。同理也适用于产销量分配。

2.具体步骤

1.计算单位运价表中同行或者同列的最小运费与次小运费之差,分别列在单位运价表的最右列和最下行(行差和列差)。

2.对行差和列差进行对比,找出最大差额。以与最大差额值同行(或同列)的最小运价为准,根据所在行的产量,最大限度地满足所在列的需求;一旦需求(或库存)被彻底满足(或库存调光),则随即划去该列和该列的所有运价信息。

3.重新计算同行同列的最小运费与次小运费之差,并对其它未被确定调拨值的行列,重复第二步的处理,直至构造出调拨方案。

3.例题分析

3.1例题1

某食品公司下属的A1、A2、A3为三个生产食品厂,需要运输到B1、B2、B3和B4四个销售点。运输信息如下表,求出最佳运输方案,表中的数据位单位产品运输成本。

 B1B2B3B4产量
A13113107
A219284
A3741059
销量365620

解题步骤

1.计算每一列最小和次最小的差值。

 B1B2B3B4产量 
A13113107 
A219284 
A3741059 
销量365620 
step13-1=29-4=53-2=18-5=3  

 

2.由上表可知B3列的差值最大,优先分配。找到此列运输成本最小的为A3。B2需要6个产品,A3可以提供9个产品,所以此处A3需要提供给B3六个产品。同时,B2分配完成。将其剔除。

 B1B2B3B4产量剩余
A13113107
A219284
A374/61059-6=3
销量剩余365620
step13-1=29-4=53-2=18-5=3 

3.此时剩下B1、B3和B4三个销售点,对其三个销售点做最小和次小差值。

            4.得到B4差值最大。在B4列中,A3成本最低,所以由A3进行供应。此时,A3剩下3个产品,B4需要6个产品,将A3的3个产品全部供应给B4,并将A3划去。

 

             5.此时剩下B1(3)、B3(5)、B4(3)、A1(7)、A2(4)。并对B1、B3、B4做差值如下表。

                6.此时B1和B4的差值都为2,我们先按照B1进行分配。此时A2剩下4个产品,B1需要3个产品,所以A2供应B1三个产品。此时B1划去,A2剩下1个产品。

 

 

                      7.对B3和B4做差值。得到如下表,可知B4差值大。所以将A2的剩余1个分配给B4。

                          8.截止到现在,只剩下供应商A1对B3和B4供应。由于B3还需要5个产品,B4还需要2个产品,正好由A1供应。得下表,

 

                                 9.综上所述,需要成本为:3*5+10*2+1*3+8*1+4*6+5*3=85

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

根据引用中的介绍,格尔法是确定初始运输方案的一种方法。下面是使用Matlab实现格尔法求解运输问题的步骤: 1.首先,我们需要将运输问题转化为矩阵形式,其中矩阵的行表示供应商,列表示需求商,矩阵中的元素表示从供应商到需求商的运输量。 2.接下来,我们需要计算每行和每列的差额向量,分别表示该行和该列中最小运输成本与次小运输成本之间的差额。 3.然后,我们需要找到差额向量中的最大值,如果该最大值在某一行上,则选择该行对应的需求商作为下一个运输对象;如果该最大值在某一列上,则选择该列对应的供应商作为下一个运输对象。 4.接着,我们需要计算所选运输对象的最小运输成本,并将该成本从矩阵中减去,同时更新差额向量。 5.重复步骤3和步骤4,直到所有的需求商和供应商都被满足。 下面是使用Matlab实现格尔法求解运输问题的代码: ```matlab function B = Vogel1(A,X) [m,n] = size(A); B = zeros(m,n); while sum(sum(A)) > 0 % 计算每行和每列的差额向量 row_diff = zeros(m,1); col_diff = zeros(1,n); for i = 1:m row = A(i,:); row(row == 0) = NaN; row_diff(i) = min(row) - min(row(isfinite(row))); end for j = 1:n col = A(:,j); col(col == 0) = NaN; col_diff(j) = min(col) - min(col(isfinite(col))); end % 找到差额向量中的最大值 if max(row_diff) >= max(col_diff) [~,i] = max(row_diff); [~,j] = min(A(i,:)); else [~,j] = max(col_diff); [~,i] = min(A(:,j)); end % 计算所选运输对象的最小运输成本 if X(i) <= X(j) B(i,j) = X(i); X(j) = X(j) - X(i); X(i) = 0; A(i,j) = NaN; else B(i,j) = X(j); X(i) = X(i) - X(j); X(j) = 0; A(i,j) = NaN; end end end ``` 其中,输入参数A是运输成本矩阵,X是需求量向量。输出参数B是初始运输方案矩阵。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

surpassLiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值