所以我被赋予了为网上商店系统创建运输模块的任务。这可能有点矫枉过正,但我真的想创建一个可以找出如何以最优化的方式包装包裹的方法。通过简单地学习编程,这是一个我不知道的领域 - 然而!无论如何,我只能简短地描述实际问题。
因此,当用户在网上商店购物时,他们的购物车中会有x个产品,尺寸和重量可能各不相同。因此,我想将该产品列表提供给该功能,并让它弄清楚如何将这些产品包装在包裹中。
每件产品都有重量,长度,宽度和高度。
由于包裹和产品基本上是盒子,我猜这会相当复杂,因为有不同的方式将产品放入包裹内。我的目标不是制作完美的包装功能,但我想做的不仅仅是将产品放入包裹内,直到达到极限。
现在,我不希望你们为我做这件事,但我想问的是三件事。
就像我说的那样,我并不打算做到这一点是完美的并且100%优化,但我想最终得到一些接近的东西。如果用户觉得发送费用比实际费用高很多,我会很讨厌。
答案 0 :(得分:6)
那是典型的knapsack problem。可以在Rosetta Code找到许多不同语言的解决方案。
答案 1 :(得分:5)
你有高度,长度和宽度的事实使它比简单的背包问题更难。以下是3D knapsack problem的有趣讨论。
这是同一个人的paper on the topic。
答案 2 :(得分:2)
这似乎是应用the simplex algorithm或某种genetic algorithm的好问题。如果您从未听说过后者,我强烈建议您阅读它们。正如我从你的问题中看到的那样,你正在做这个改进,因为你喜欢让事情做得最好,而不是因为你被告知这样做。想象一下,当你告诉他们你应用人工智能技术来解决他们的问题时!
有许多直接的算法可以解决您的问题,但这可能是学习一些进化计算的好机会。 关于遗传算法的一些有趣的链接[每个人,随时编辑和添加]:
答案 3 :(得分:1)
这是一个古老的问题,但万一有人偶然发现这个......有一个名为pyshipping的python库可以解决这个问题: