求解传输问题(三) Stepping-Stone算法

当使用某种初始化算法得到TP问题的一个初始解后,就可以使用迭代算法进行最优解的搜索;Stepping-Stone算法和Modified Distribution(MODI)算法是常用的两种算法,这篇文章先介绍Stepping-Stone算法,而初始化算法则默认使用Minimum-Cell-Cost算法

还是使用前面文章使用的例子来说明:
三个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算法,得到了如下表所示的初始解:
在这里插入图片描述
Stepping-Stone算法的基本思想是验证如果给一个空单元格进行分配,是否能达到一个更低的目标值。在上面的例子中,有4个单元格是空的:1A, 2A, 2B和3C,我们首先评估下给单元格1A进行分配造成的cost变化情况:如果我们给1A分配一个单位的数量,那么总cost将会提高$6;但是给1A多分配一个单位将使得第一行的总supply变成151,为了维持约束,我们必须在这一行中选择一个已经分配的单元格减去1单位;在第一行,1B是已分配状态,所以从1B上减掉1单位;从1B上减去1个单位将使得这一列的总demand变成99,所以我们又需要在这一列的3B上加1单位来维持约束;类似的,给3B加一单位,我们又需要从3A上减掉1个单位;而在3A这一列上,1A在最开始就加上了一单位,整个TP表刚好平衡了;那么1A->1B->3B->3A刚好构成了一个回路,也就是前面文章提到的Loop
在这里插入图片描述
现在我们可以计算一下按照这个Loop进行一单位数量的变化所引起的总Cost变化是多少:
1 A → 1 B → 3 B → 3 A + 6 − 8 + 5 − 4 = − 1 \begin{aligned} 1A\rightarrow1B\rightarrow3B\rightarrow3A \\ +6-8+5-4=-1 \end{aligned} 1A1B3B3A+68+54=1
可见,每次在1A上新加一单位的数量,将使得总的cost降低$1,也就意味着我们可以按照这个Loop进行数量的重分配来达到一个更优解;不过我们不急着这么做,因为还有另外3个空单元格没有评估,我们可以看看是否又能使得总cost降低更多的Loop

对于2A,其Loop和cost变化值:
在这里插入图片描述
2 A → 2 C → 1 C → 1 B → 3 B → 3 A + 7 − 11 + 10 − 8 + 5 − 4 = − 1 \begin{aligned} 2A\rightarrow 2C\rightarrow 1C \rightarrow 1B \rightarrow 3B \rightarrow 3A \\ +7-11+10-8+5-4=-1 \end{aligned} 2A2C1C1B3B3A+711+108</

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值