【问题标题】:Example of delayed column generation延迟列生成示例
【发布时间】:2013-03-28 15:21:29
【问题描述】:

谁能指出一个小例子,说明delayed column generation 如何为cutting stock problem 工作。我找到了几个抽象地描述它的来源,但我仍然不明白它的作用或如何在程序中实现它。一个带有少量数字的分步示例会很有帮助。

例如,假设我有不同长度的管件库存:

12、25

客户要求以下长度的管道:

5、10

现在说长度为 x 的管道的值为 x1.2。我想在为客户进行削减后最大化库存中剩余的价值。究竟如何使用列生成来找到接近最佳的答案?

【问题讨论】:

  • 谷歌搜索cutting stock problem delayed column-generation 似乎已经出现了很多实现。你已经彻底搜索了吗?
  • (例如delphiforfun.org/programs/Cutting%20Stock.htm有源代码和很好的解释)
  • 我看过那个页面,这是我了解的大部分内容,但它仍然是对正在发生的事情的相当笼统的描述。我想看一个逐步的过程示例。

标签: algorithm math linear-programming


【解决方案1】:

我们从只有第一阶段松弛变量z5z10 的悲伤主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 根管道,这就是我们说的原因这个答案“几乎是最佳的”。

【讨论】:

    猜你喜欢
    • 2013-05-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 2021-11-25
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多