求解传输问题(四) Modified Distribution算法

本文介绍了Modified Distribution算法(MODI),一种解决运输问题的优化策略。MODI被视为Stepping-Stone算法的变体,通过数学表达式直接计算空单元格对总成本的影响,而非识别Loop。通过举例说明了MODI的实施步骤,包括计算ui和vj序列,确定成本变化以及空单元格的选择。虽然MODI能直接计算成本变化,但计算量并未显著减少。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Modified Distribution算法(MODI)其实可以看成是Stepping-Stone算法的变体,它和Stepping-Stone算法的主要区别在于MODI是通过数学表达式直接计算空单元格对总cost的变化情况,而不是先识别Loop

我们还是使用之前的例子:
三个Supply结点,其供应量为:

仓库 库存(Supply)
1. 堪萨斯 150
2. 奥马哈 175
3. 得梅因 275
Total 600

三个Demand结点,其需求量为:

面粉厂 需求(Demand)
A. 芝加哥 200
B. 圣路易斯 100
C. 辛辛那提 300
Total 600

路径的单位花销:

A.芝加哥 B.圣路易斯 C.辛辛那提
1. 堪萨斯 $6 $8 $10
2. 奥马哈 $7 $11 $11
3. 得梅因 $4 $5 $12

根据上面的已知量,采用Minimum-Cell-Cost算法,得到了如下表所示的初始解:
在这里插入图片描述
要进行MODI,我们需要对初始的TP表进行扩展,在表的外层添加uuu列和vvv行:
在这里插入图片描述
新增的uiu_iuivjv_jvj序列和具有分配值的单元格的单位花销构成这样的等式约束:
ui+vj=Cij \begin{aligned} u_i+v_j=C_{ij} \end{aligned} ui+vj=Cij
例如对于单元格1B,有:
u1+vB=C1B=8 \begin{aligned} u_1+v_B=C_{1B}=8 \end{aligned} u1+vB=C1B=8
剩下的等式:
u1+vC=10u2+vC=11u3+vA=4u3+vB=5 \begin{aligned} u_1+v_C=10 \\ u_2+v_C=11 \\ u_3+v_A=4 \\ u_3+v_B=5 \end{aligned} u1+vC=10u2+vC=11u3+vA=4u3+vB=5
我们需要例用这五个等式计算出六个uiu_iuivjv_jvj的值;不过因为只有5个等式,我们必须手动把其中一个置零才能计算剩下的变量,一般就直接让u1=0u_1=0u1=0,然后就可以计算出剩下的变量值:
x1B:u1+vB=80+vB=8vB=8x1C:u1+vC=100+vC=10vC=10x2C:u2+vC=11u2+10=11u2=1x3B:u3+vB=5u3+8=5u3=−3x3A:u3+vA=4−3+vA=4vA=7 \begin{aligned} x_{1B}:u_1+v_B&=8 \\ 0+v_B&=8 \\ v_B&=8\\ x_{1C}:u_1+v_C&=10\\ 0+v_C&=10\\ v_C&=10\\ x_{2C}:u_2+v_C&=11 \\ u_2+10&=11 \\ u_2&=1 \\ x_{3B}:u_3+v_B&=5\\ u_3+8&=5 \\ u_3&=-3\\ x_3A:u_3+v_A&=4\\ -3+v_A&=4\\ v_A&=7\\ \end{aligned} x1B:u1+v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值