如何以编程方式确定如何将较小的盒子装入较大的包装中?

时间:2020-03-06 14:47:34  来源:igfitidea点击:

有谁知道现有的软件或者算法来计算包装多个物品的包装尺寸?

我的库存数据库中有一堆物品,其中定义了长度,宽度和高度尺寸。给定这些尺寸,我需要计算多少购买的物品将适合预定义的包装盒尺寸。

解决方案

这是一个装箱问题,这是NP难题。对于少量的对象和程序包,我们可以简单地使用蛮力方法尝试各种可能性。除此之外,我们还需要使用某种启发式方法。 Wikipedia文章包含一些详细信息,以及对我们可能想签出的论文的引用。

当然,另一种选择是从一个非常简单的算法(例如简单地"堆放"物品)开始,并使用该算法计算出合理的运输上限,然后,如果包装工可以做得更好,我们会获利不多。或者在我们认为包装不理想的情况下稍微折算计算价格。

我们是要查看一个特定大小的包装中适合单个类型的数量,还是要混合使用类型?

听起来我们正在尝试解决背包问题。我们也许可以找到一些适合我们特定要求的算法。只需了解,由于问题是NP完备的,因此很难找到有效的算法(尽管根据特定要求,我们可能能够找到有效的近似值,或者输入的数据可能足够小而无所谓)。 。

也许这听起来很明显,但是可能值得记住这个问题,然后手动进行一些处理。在NP-hard中找到任意输入和框的最有效解决方案,但是通过限制问题空间并接受某些低效率,NP大小可能是合理的,并且通过记住,我们也许可以提出"常见情况"时间大大减少了。

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

如果要用手工包装盒子,那么我们可以考虑编写一种算法,该算法可以完成合理的工作。我建议这样做的原因是,除非我们要为每个订单打印包装说明,否则无论我们进行包装的是谁,都必须锻炼他们如何将已订购的物品放入容纳许多物品的包装箱中。命令。

然后,这可能会导致包装人员来询问如何编程锻炼如何将n个物品包装到m个盒子中。 :-P(他们也可能会要求我们这样做,请我们提供说明等)。

只要算法能够做到合理的人所能做的,我个人都会接受其运送估算。

也许我最近几个小时砍掉的东西可能会有所帮助:
http://github.com/yetzt/boxing

关于" 3D箱包装"的文献非常广泛。我们可以通过跟踪David Pisinger教授的出版物来获得良好的概览。他还发布了为数不多的bin打包的高质量实现之一,其源代码为:3dbpp.c。

我自己的物流工具包pyShipping带有一个用于仓库应用程序的3D装箱实现。它基本上是在实施4D装箱(3D尺寸和重量)并在第二次运行时获得典型订单尺寸(几十个包装)的可接受解决方案。现在已经在生产(意味着仓库)中使用了几个月,以确定要使用的运输包装箱的上限。仓库工人通常能够更有效率地打包,但我也可以。

当有很多程序包和/或者很多约束时,元启发法可以很好地处理现实世界中的装箱问题。一种开源的Java实现是Drools Planner。