如何在python中创建优化的打包功能?

时间:2009-07-23 08:47:06

标签: python algorithm optimization

所以我被赋予了为网上商店系统创建运输模块的任务。这可能有点矫枉过正,但我​​真的想创建一个可以找出如何以最优化的方式包装包裹的方法。通过简单地学习编程,这是一个我不知道的领域 - 然而!无论如何,我只能简短地描述实际问题。

因此,当用户在网上商店购物时,他们的购物车中会有x个产品,尺寸和重量可能各不相同。因此,我想将该产品列表提供给该功能,并让它弄清楚如何将这些产品包装在包裹中。

  • 最大包裹长度:100
  • 宗地最大宽度:50
  • 包裹的最大高度:50
  • 包裹最大重量:20

每件产品都有重量,长度,宽度和高度。

由于包裹和产品基本上是盒子,我猜这会相当复杂,因为有不同的方式将产品放入包裹内。我的目标不是制作完美的包装功能,但我想做的不仅仅是将产品放入包裹内,直到达到极限。

现在,我不希望你们为我做这件事,但我想问的是三件事。

  1. 我在哪里可以找到能够教会我所需基础知识的优秀在线资源?
  2. 是否有一些本地python工具可以使用?
  3. 我需要注意的一些指示,陷阱等
  4. 就像我说的那样,我并不打算做到这一点是完美的并且100%优化,但我想最终得到一些接近的东西。如果用户觉得发送费用比实际费用高很多,我会很讨厌。

4 个答案:

答案 0 :(得分:6)

那是典型的knapsack problem。可以在Rosetta Code找到许多不同语言的解决方案。

答案 1 :(得分:5)

你有高度,长度和宽度的事实使它比简单的背包问题更难。以下是3D knapsack problem的有趣讨论。

这是同一个人的paper on the topic

答案 2 :(得分:2)

这似乎是应用the simplex algorithm或某种genetic algorithm的好问题。如果您从未听说过后者,我强烈建议您阅读它们。正如我从你的问题中看到的那样,你正在做这个改进,因为你喜欢让事情做得最好,而不是因为你被告知这样做。想象一下,当你告诉他们你应用人工智能技术来解决他们的问题时!

有许多直接的算法可以解决您的问题,但这可能是学习一些进化计算的好机会。 关于遗传算法的一些有趣的链接[每个人,随时编辑和添加]:

  1. These pages introduce some fundamentals of genetic algorithms.
  2. Genetic Algorithms in Plain English
  3. 好运!
    曼努埃尔

答案 3 :(得分:1)

这是一个古老的问题,但万一有人偶然发现这个......有一个名为pyshipping的python库可以解决这个问题:

https://pypi.python.org/pypi/pyShipping