我如何以编程方式确定如何适应小箱子到一个更大的包?(How can I programmatical

2019-07-17 14:14发布

有谁知道现有的软件或算法来计算封装尺寸航运多个项目?

我有一堆在我们的库存数据库定义的长度,宽度和高度dimesions项目。 考虑到这些方面,我需要计算有多少购买的物品将适用于预定义的箱尺寸。

Answer 1:

这是一个装箱的问题,它是NP难。 对于少数对象和包的,你也许可以简单地使用的想尽一切可能性蛮力方法。 除此之外,你需要使用某种形式的启发。 维基百科的文章有一些细节,以对论文引用沿着你可能要退房。

另一种方法,当然是一个非常简单的算法来开始(如简单的“堆叠”项目),计算出合理的上限上使用,那么如果你的人加壳可以做的更好,你犯了一个轻微的获利出货。 或者在你的包装是不理想的假设略有降低您的计算价格。



Answer 2:

在“3D装箱”文学是无远弗届。 您可以通过跟踪的出版物得到了很好的概述大卫Pisinger教授 。 他还出版了源代码装箱的几个高品质的实现方式之一: 3dbpp.c

我自己的物流工具包pyShipping附带了仓库应用的3D装箱实现。 它基本上实现4D装箱(3D尺寸&weigth),并得到在下面的第二运行时对于典型订单大小可接受的解决方案(几包)。 它在生产中使用(意为仓库)了几个月,现在确定的上限运输包装箱时使用。 仓库工人往往能够在一定程度上更有效地收拾不过没关系我。



Answer 3:

Pisinger是谁职位的少数学者之一工作的代码 。 在他的一篇论文一个,他提到了“最小深度”的问题。

这是一个实用, 高效的算法为三维矩形盒包装,调整封闭框的高度。

这里是一个实现PHP 。



Answer 4:

你们是不是要看看有多少单一类型的适合特定大小的包,或者你想和混合类型?

听起来你正在试图解决的背包问题 。 你也许可以找到这里面可以适用于您的具体要求一些算法。 方才明白,这将是很难找到一个高效的算法,因为问题是NP完全性(尽管这取决于您的具体要求,你可以找到一个有效的近似,或者您输入的可能是足够小,它并不重要) 。



Answer 5:

如果箱子要手工包装,那么你可以考虑写一个算法会做一个合理的人会做。 我之所以认为这是因为,除非你想打印出每个订单的包装说明,则无论是谁做的包装将不得不以锻炼他们如何去适应它已被分配给然而,许多箱子所点项目订购。

那么这可能会导致你的未来人类加壳到SO询问如何编程锻炼怎么收拾n项为m盒子。 :-P(他们也可能要求做到这一点,问你的指令,等等)。

只要你的算法做什么一个合理的人会做,我会亲自接受其估算运费。



Answer 6:

启发式好时,有很多的包和/或许多制约因素,以应对现实世界的装箱问题。 一个开源的Java实现Drools的规划师 。



Answer 7:

也许这听起来很明显,但它可能是值得memoize的问题,然后用手做一些他们。 寻找在NP-硬任意输入框最effecient解决方案,但通过限制问题空间,并接受了一些效率低下,即NP大小可能是一个合理的,并通过memoizing,你可能能够带来的“常见情况“基本上时间缩短。

这也可能有助于想想分级包装方面的事情。



Answer 8:

很多搜索后我发现了一个GitHub的仓库,可以帮助别人。 功能PackingService.Pack()需要的名单Container和列表Item (S)被包装成包含大量的信息,包括参数和返回结果

“容器(S)装在百分比和带包装的产品清单”



文章来源: How can I programmatically determine how to fit smaller boxes into a larger package?