我们从只有第一阶段松弛变量z5 和z10 的悲伤主LP 开始。
minimize z5 + z10
subject to
z5 >= 1 (y5)
z10 >= 1 (y10)
z5, z10 >= 0
y5 是我们切割足够多长度为 5 的管道的约束,y10 是我们切割足够多长度为 10 的管道的约束。原始解是 z5=1, z10=1,最优对偶解是 @987654327 @。换个角度看,5 管和 10 管的当前价格均为 1。由于这是第一阶段,我们的库存成本为零,并且解决了库存中每个管长的背包问题(如果您使用经典的 DP,因为它会为所有较小的长度生成一个表格),最大的利润空间是将 25 根管子切成五个 5 根管子。设变量x5,5,5,5,5 为这种类型的切割数。
minimize z5 + z10
subject to
5 x5,5,5,5,5 + z5 >= 1 (y5)
z10 >= 1 (y10)
x5,5,5,5,5, z5, z10 >= 0
现在最佳原始解决方案是x5,5,5,5,5=0.2, z5=0, z10=1。 5管的价格是0,10管的价格是1。我们还不是原始可行的,所以我们的库存仍然没有成本。当前价格的最优模式是x10,10(浪费5)和x10,10,5。我们不要浪费。
minimize z5 + z10
subject to
5 x5,5,5,5,5 + x10,10,5 + z5 >= 1 (y5)
2 x10,10,5 + z10 >= 1 (y10)
x5,5,5,5,5, x10,10,5, z5, z10 >= 0
最佳原始解决方案是x5,5,5,5,5=0.1, x10,10,5=0.5, z5=0, z10=0。所有的松弛变量都是 0,所以是时候进入第二阶段了。
minimize 25^1.2 x5,5,5,5,5 + 25^1.2 x10,10,5
subject to
5 x5,5,5,5,5 + x10,10,5 >= 1 (y5)
2 x10,10,5 >= 1 (y10)
x5,5,5,5,5, x10,10,5 >= 0
这是双重程序。
maximize y5 + y10
subject to
5 y5 <= 25^1.2
y5 + 2 y10 <= 25^1.2
y5, y10 >= 0
最佳原始解决方案仍然是x5,5,5,5,5=0.1, x10,10,5=0.5。最优对偶解是y5=25^1.2 * 0.2(约9.5)和y10=25^1.2 * 0.4(约19.0)。由于我们处于第二阶段,现在 12 管的成本为 12^1.2(约 19.7),而 25 管的成本为 25^1.2(约 47.6)。如果我们切割 12 根管子并浪费 2 根,则成本为 12^1.2 - 2^1.2(约 17.4)。
目前,切割 25 根管子没有利润。然而,在切割 12 管时,我们花费大约 17.4 来获得两个 5 管或一个 10 管。无论哪种方式,当前总价约为 19.0,这意味着正利润。我将其中一列放入并再次求解,但我累了,我只想告诉你最终的最佳原始值是x5,5=0.5, x10=1(两个切口都在 12 管上)。
请注意,虽然这个解决方案是部分最优的,但如果客户确实想要一个 5 管和一个 10 管,那么我们还有更多的想法要做。事实上,当且仅当客户想要每根管道的数量为奇数时,LP 解决方案之外会有浪费,但是,无论客户的总需求如何,浪费最多是一根 5 根管道,这就是我们说的原因这个答案“几乎是最佳的”。