【发布时间】: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