49

有谁知道现有的软件或算法来计算运送多件物品的包裹大小?

我在我们的库存数据库中有一堆项目,定义了长度、宽度和高度尺寸。鉴于这些尺寸,我需要计算有多少购买的物品适合预定义的盒子尺寸。

4

8 回答 8

64

这是一个装箱问题,它是 NP 难的。对于少量的对象和包,您也许可以简单地使用蛮力方法来尝试每一种可能性。除此之外,您还需要使用某种启发式方法。Wikipedia 文章有一些详细信息,以及对您可能想要查看的论文的引用。

当然,另一种选择是从一个非常简单的算法开始(例如简单地“堆叠”物品)并使用它计算一个合理的运输上限,然后如果您的人工包装员可以做得更好,您可以获得微薄的利润。或者假设您的包装不理想,稍微打折您的计算价格。

于 2008-09-26T16:07:35.270 回答
19

关于“3D Bin 包装”的文献非常广泛。您可以通过跟踪David Pisinger 教授的出版物来获得一个很好的概览。他还发布了为数不多的带有源代码的 bin 打包的高质量实现之一:3dbpp.c

我自己的物流工具包pyShipping带有用于仓储应用程序的 3D Bin Packing 实现。它基本上实现了 4D 装箱(3D 尺寸和重量),并在第二个运行时间内获得了典型订单尺寸(几十个包装)的可接受解决方案。它现在在生产(即仓库)中使用了几个月,以确定要使用的运输板条箱的上限。仓库工人通常能够更有效率地打包,但这对我来说没问题。

于 2010-09-10T21:18:34.277 回答
10

Pisinger 是为数不多的发布工作代码的学者之一。在他的一篇论文中,他提到了“最小深度”问题。

这是一种实用且高效的 3D 矩形盒包装算法,可调整封闭盒的高度。

这是php中的一个实现。

于 2014-07-22T20:06:17.247 回答
6

您是想查看有多少单一类型适合特定大小的包装,还是尝试混合类型?

听起来您正在尝试解决背包问题。您也许可以找到一些适合您特定要求的算法。只需了解很难找到有效的算法,因为问题是 NP 完全的(尽管根据您的具体要求,您可能能够找到有效的近似值,或者您的输入可能足够小以至于没关系) .

于 2008-09-26T16:10:09.197 回答
4

如果要手工包装盒子,那么您可能会考虑编写一个算法,该算法将做一个合理的人会做的事情。我建议这样做的原因是,除非您想为每个订单打印出包装说明,否则无论谁在为您打包,都将不得不考虑如何将订购的物品放入已分配给该订单的多个盒子中。命令。

然后,这可能会导致您的人工包装员来到 SO 询问如何以编程方式锻炼如何将 n 个项目打包到 m 个盒子中。:-P(他们也可能会要求这样做,请您提供指示等)。

只要你的算法能做一个理性的人会做的事情,我个人会接受它的运费估计。

于 2008-09-29T16:37:21.850 回答
3

当存在许多包和/或许多约束时,元启发式方法可以很好地处理现实世界的装箱问题。一种开源 Java 实现是Drools Planner

于 2010-12-27T16:58:18.140 回答
2

也许这听起来很明显,但记住问题可能是值得的,然后手工完成其中一些。为 NP-hard 中的任意输入和框找到最有效的解决方案,但通过限制问题空间并接受一些低效率,NP 大小可能是合理的,通过记忆,您可能能够带来“常见情况“时间大大减少。

从分层包装的角度考虑问题也可能会有所帮助。

于 2008-09-27T14:04:02.877 回答
0

经过大量搜索,我找到了一个可能对某人有帮助的GitHub存储库。函数PackingService.Pack()将要打包的 (s) 列表Container和列表Item作为参数并返回包含大量信息的结果,包括

“按百分比包装的容器以及已包装和未包装物品的清单”

于 2017-09-12T09:40:13.500 回答