代码之家  ›  专栏  ›  技术社区  ›  googletorp

如何在python中创建一个优化的打包函数?

  •  16
  • googletorp  · 技术社区  · 15 年前

    所以我被赋予了为一个webshop系统创建一个传送模块的任务。这可能有点过分,但我真的想创建一个可以找出如何以最优化的方式打包包裹的方法。通过简单地学习编程,这是一个我还没有知识的领域!无论如何,我只能简单地描述一下实际问题。

    所以当用户在网上购物时,他们的购物车里会有X种不同尺寸和重量的产品。所以我想把产品列表交给这个函数,让它知道这些产品应该如何打包。

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

    每种产品都有重量、长度、宽度和高度。

    因为包裹和产品基本上都是盒子,我猜这会相当复杂,因为有不同的方法可以把产品放在包裹里。我的目标不是要使包装功能完美,但我想做的比仅仅把产品放在包裹里直到达到极限更好。

    我不希望你们帮我做这个,但我想问的是三件事。

    1. 我在哪里可以找到好的在线资源来教我所需的基础知识?
    2. 是否有一些本地的python工具可以很好地使用?
    3. 我需要注意的一些问题,陷阱等

    就像我说的,我不打算让这个完美和100%优化,但我想最终得到一些接近的东西。如果用户觉得发送费用会比实际高很多,我会很讨厌。

    4 回复  |  直到 6 年前
        1
  •  5
  •   Mathieu    15 年前

    事实上,你有高度,长度和宽度使它比一个简单的背包问题更困难。这里有一个有趣的讨论 3D knapsack problem .

    这里有一个 paper on the topic 由同一个人。

        2
  •  6
  •   Bombe    15 年前

    这是你的典型 knapsack problem . 许多不同语言的解决方案可以在 Rosetta Code .

        3
  •  2
  •   Manuel Araoz    15 年前

    这似乎是一个很好的问题 the simplex algorithm 或者某种 genetic algorithm . 如果你从来没有听说过后者,我强烈建议你读一下。正如我从你的问题中看到的,你做这个增强是因为你喜欢使事情以最佳方式工作,而不是因为你被要求这样做。想象一下,当你告诉他们你应用了人工智能技术来解决他们的问题!

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

    1. These pages introduce some fundamentals of genetic algorithms.
    2. Genetic Algorithms in Plain English

    祝你好运!
    曼努埃尔

        4
  •  1
  •   Mark Hallbauer    6 年前

    这是一个古老的问题,但为了防止有人偶然发现…有一个叫做pyshipping的python库可以解决这个问题:

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