2012-04-15 53 views
2

我正在开发一个购物车项目,该项目需要基于该用户在购物车中的物品的“邮资计算器”。用于包裹包装的PHP/C++空间计算

很明显,我将存储项目的尺寸incl。体重和填充在数据库中,并且还将存储项目将进入的包裹(包裹)尺寸和重量,盒子填充。

确定包裹的重量很容易,但我想知道如何去弄清楚如何通过PHP打包盒子,也就是说,我希望代码能够与物品一起玩“俄罗斯方块”,以确保它们获得最佳的适合度,并提供准确的邮资费用。

有没有人有任何想法如何最好地实现这一点,或有人知道一个PHP类或功能可以做到这一点?

编辑:当我说'最好可能适合'也许我很乐观!让脚本尝试在包内分发包的每种可能的组合将超过顶部,但是我可以通过在C++中编写算法并在用户'检出'时使用PHP运行程序来提高速度,返回值是阵列与包裹大小和重量(这些都是需要计算邮资费用)

+3

我相信这是一个[NP难题](http://en.wikipedia.org/wiki/Bin_packing_problem),所以不要指望得到一个“好”的解决方案。 – kba 2012-04-15 22:42:49

+0

@Kristian - 您的链接证实了我的怀疑:最好先争取“最大的第一”,然后编写一个算法,以便在三个不同的位置处理每个项目,在第一个适合的位置停下来,然后增加到下一个尺寸的包装如果它不适合。我的主要担心是过度收费邮资......或收费不足,这不会太好! – 2012-04-15 23:04:34

回答

4

我不相信任何人已经找到完美的算法来做到这一点。所有现有的算法(通常不公开)都试图获得接近完美的方法,但在合理的时间内计算每种可能性需要太多的计算。

这些卡车需要在特定的时间点离开。 :)

此外,计算理想拟合还意味着您必须知道每个包裹的准确测量值,并且装载卡车的人需要使用复杂的“地图”以完全按照您计算的方式放置这些包裹。

不,实际上,最简单的方法是计算总体积,使用某个因子(如0.95,您可以随时进行微调),并将其用作猜测卡车将装载多少包裹。只要它的人加载你的卡车,这也是最好的方法。其他任何事情都需要机器人根据您的具体计算指令加载卡车。

+0

他并没有要求将包裹放入卡车,而是将货物/物品放入包裹中。尽管如此,最后一段对他的问题也是一个有效的答案。 – 2012-04-15 22:49:03

+1

+1我认为所有段落都适用于此。 – Josh 2012-04-15 22:51:19

+0

我明白你的观点,主要问题是邮费!我不想过度充电,我不想充电不足,我认为要走的路是“区域”算法(请参阅OP的第一条评论),但是您对总面积系数提出了一个非常有效的观点。 – 2012-04-15 23:10:18