当前位置: 首页 > 知识库问答 >
问题:

如何利用背包找到切割库存问题的最佳组合

甄永年
2023-03-14

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

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

我正在努力最大限度地减少铝推拉窗制造商的铝挤压切割浪费,我不能找出我应该使用哪种算法/数据结构来解决这个问题。

我做了基础研究,发现问题属于下料问题(又称一维下料问题)、线性规划问题、贪婪算法。但我无法决定应该选择哪一个,以及如何开始。

问题简介:

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

12 | 15 | 16 (IN FT)

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

宽度x高度(单位:英尺)

1) 6 x 8-10扇窗户

2) 9 x 3-20扇窗户

计算结果为(2 x宽度)(2 x高度)。因此,从上述尺寸的窗口,他们需要挤出如下。

1) 6英寸(英尺)大小的零件-

2)8'(FT)尺寸件-

3) 9英寸(英尺)大小的零件-

4)3'(FT)尺寸件-

使用背包,我们可以找出组合,但它有限制的尺寸只有1,而在我的情况下,我有3种不同的尺寸可供选择,我想为切割库存问题生成最佳组合。

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

共有3个答案

梅欣然
2023-03-14

你考虑过单纯形算法吗?你有一个极小化问题,可以转化为极小化问题,然后用算法求解,或者用对偶单纯形算法求解。你可以在谷歌上找到实现。

赫连明诚
2023-03-14

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

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

意译:

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

另一个建议是:确保清楚地识别你正在构建到算法中的所有假设。我的假设是,更长的库存每单位更便宜,而且总是更受欢迎,但有人要求我进行变化,以优化最少的切割次数(捆绑切割),或者跟踪并更喜欢首先使用以前运行中的切割。

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

南宫海超
2023-03-14

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

您应该看看启发式搜索算法,如模拟退火、MCTS等。找到启发式搜索引擎的现有实现应该不成问题,这些实现允许您为它们提供

  • 输入集(材料上的随机分布),

为你计算一个近乎最优的解。

 类似资料:
  • 问题内容: 我一直在学习PHP的语法并进行实践。我来自.NET背景,因此对于页眉和页脚,母版页始终使我很轻松。 到目前为止,我有一个mainHeader.php和mainFooter.php,其中包含我的头菜单和我的页脚html。我创建了一个mainBody.php,在顶部放了 对于页脚,我把 这样做非常好,让我微笑,因为我的页面都很好地融合在一起。mainHeader有我的,而mainFoote

  • 接手一个软件工程并把它分为可以由个人实现的任务是很有趣的。这事应该及早进行。有时候经理可能会认为不考虑个人的项目能够起作用。这是不可能的,因为每个人的生产力是如此广泛地不同。对某个组件有特殊知识的人也经常改变,并且可以对工作效果有一个数量级的影响。 正如一个作曲家认为乐器的音色会其重要作用,或者运动队教练对每个运动员的体能的考虑那样,有经验的团队领导,通常不能够把工程依据团队成员需要承担的角色那样

  • 主要内容:动态规划解决01背包问题,01背包问题的具体实现商店的货架上摆放着不同重量和价值的商品,一个小偷在商店行窃,他携带的背包只能装固定重量的商品。装哪些商品才能获得最大的收益呢?在限定条件内找到最佳的物品组合,这样的问题统称为背包问题。 根据限定的条件不同,背包问题还可以细分: 部分背包问题:所有物品是可再分的,即允许将某件物品的一部分(例如 1/3)放入背包; 0-1 背包问题:所有物品不可再分,要么整个装入背包,要么放弃,不允许出现“仅选择物品

  • 本文向大家介绍小背包问题,包括了小背包问题的使用技巧和注意事项,需要的朋友参考一下 列出了物品列表,每件物品都有自己的值和重量。物品可以放在最大重量限制为W的背包中。问题是要找到小于或等于W的重量,并且值要最大化。 背包问题有两种。 0 – 1背包 小背包 对于0 – 1背包,不能将物品分成小块,对于小背包,可以将物品分成小块。 在这里,我们将讨论分数背包问题。 该算法的时间复杂度为O(n Log

  • 问题 你面前摆放着 n 个珠宝(共 n 种,每种 1 个),这些珠宝被分成 m 个组(显然 n geq m )。已知珠宝 s_i 的价值是 v_i ,重量是 w_i 。给你一个背包,你可以挑选珠宝装到背包中,但背包可以装载的最大重量为 t ,并且同一个组的珠宝至多只能选择 1 个。求背包能够装载珠宝的最大价值 v 。 该问题与01背包的区别就是,对珠宝进行了分组,并且一个组内的珠宝互斥。 解法 设

  • 主要内容:贪心算法解决部分背包问题在限定条件下,如何从众多物品中选出收益最高的几件物品,这样的问题就称为背包问题。   图 1 背包问题 举个简单的例子,商店的货架上摆放着不同重量和价值的商品,一个小偷在商店行窃,他携带的背包只能装固定重量的商品,选择哪些商品才能获得最大的收益呢?这个问题就属于背包问题,限定条件是背包的承重,最终目标是令背包中存放的物品的总收益最高。 根据不同的限定条件,背包问题还可以有更细致的划分: 0-1 背