【问题标题】:How to find optimum combination for Cutting Stock Problem using Knapsack如何使用背包找到切割库存问题的最佳组合
【发布时间】:2019-07-12 05:39:59
【问题描述】:

编辑 (31-12-2019) - https://jonathan.overholt.org/projects/cutlist

上面是我正在寻找的免费项目的链接。我只是在寻找适当的指导,这样我才能让它发挥作用。

我正在努力减少铝滑动窗制造商的铝挤压切割的浪费,但我无法弄清楚我应该使用哪种算法/数据结构来解决这个问题。

我做了基础研究,发现问题属于Cutting Stock Problem(也叫一维切割问题),Linear Programming Problem,Greedy Algorithm。但是我无法决定我应该选择哪一个以及如何开始。

问题简介:

基本上,窗户制造商有 3 种尺寸可供购买的材料选择。

12 | 15 | 16 (IN FT)

现在输入将是窗口的大小。

宽 x 高(英尺)

1) 6 x 8 - 10 个窗口

2) 9 x 3 - 20 个窗口

计算为 (2 x 宽度) + (2 x 高度)。所以从上面的窗口尺寸来看,它们需要如下挤压。

1) 6' (FT) 尺寸的块 -> 2 x 10 = 20

2) 8' (FT) 尺寸的块 -> 2 x 10 = 20

3) 9' (FT) 尺寸块 -> 2 x 20 = 40

4) 3' (FT) 尺寸块 -> 2 x 20 = 40

使用背包,我们可以找到组合,但它的大小只能为 1,而在我的例子中,我有 3 种不同的尺寸可用,我想从中生成最佳的最佳组合来解决切割库存问题.

我需要关于如何处理上述关于 Java 或任何其他语言的数据结构和算法的问题的帮助。我的数学知识达不到标准,这就是为什么我在项目中实现逻辑时遇到问题并希望从社区获得一些帮助。

【问题讨论】:

  • 您能解释一下这些数字之间的关系吗?我看不出这些数字之间有任何联系。
  • @NicoSchertler 我已经根据我的进一步研究编辑了这个问题,我知道我必须使用背包或其他方法生成组合/模式,一旦我有了组合,我就可以找出“数量挤压”订购,以便最大限度地减少切割浪费。
  • 它看起来像一个二维切割库存问题。在 1d 切割库存问题中,您有宽度为 W 的母材,长度为标准尺寸。然后,您需要从这些 b_i 中构建每个具有宽度 a_i 和标准尺寸长度的较小项目。显然,b_i
  • 是的,我读过那个维基百科页面,但正如我所提到的,我不擅长数学和数据结构的实现,所以无法弄清楚我应该如何开始。

标签: java algorithm math linear-programming


【解决方案1】:

除了强力检查所有可能的组合之外,没有任何算法可以保证您获得最佳解决方案。这显然不是一个好的算法,至少在你有大型数据集的情况下不会。

您应该看看启发式搜索算法,例如Simulated AnnealingMCTS 等。找到允许您提供启发式搜索引擎的现有实现应该没有问题

  • 输入集(材料上的随机分布),
  • 一个过渡函数(在材质之间移动碎片),
  • 和一个评估函数(废物量)

并为您计算一个接近最优的解决方案。

【讨论】:

  • 除了强力检查所有可能的组合之外,没有任何算法可以保证您获得最佳解决方案。 这是错误的。有一些算法可以为这个问题提供经过验证的最佳解决方案,而无需尝试所有可能的组合。一个简单的例子:这个问题可以说是一个混合整数规划问题,也可以直接用分支定界算法来解决。
【解决方案2】:

我会回应其他答案的观点:虽然这个问题可能有一个“最正确”的解决方案,但您真正要寻找的是一个“足够正确”的解决方案。

也就是说,我写了这个小附录来帮助理解您引用的项目中的代码:cutlist generator design notes

释义:

每次迭代都从创建最长库存的新实例开始,并在其中放置尽可能多的碎片。然后将库存减少到所有选定部件仍然适合的最小库存。这一切都在重复,直到没有碎片为止。

另外一个建议:确保清楚地识别您在算法中构建的所有假设。我的假设更长的库存每单位更便宜并且它总是首选,但我被要求进行变化以优化最少的切割数量(捆绑切割)或跟踪并更喜欢首先使用以前运行的边角料。

一如既往:在设定假设之前非常清楚地了解客户的流程。

【讨论】:

  • 在您的情况下,您的假设是拥有 Logner 库存机,因为它更便宜,在我的情况下,我需要最少的浪费/废料,以便他们可以克服过度浪费的问题。由于材料以 KG 为单位,他们可以选择从 12/15/16 英尺尺寸购买。你能建议我如何在这种情况下实现最小的浪费吗?
【解决方案3】:

你考虑过单纯形算法吗? 您有一个最小化问题,可以将其转换为最大化问题,然后由算法解决,也可以由对偶单纯形算法解决。 您可以在 Google 上找到实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多