【发布时间】:2012-10-14 06:17:18
【问题描述】:
不是 100% 确定标题,请随意编辑以使其更通用且对所有用户都有帮助
我有一个订单捕获“门户”,可以捕获订单。部分订单是数量或订单。
我现在需要处理订单,以便可以构建一个托盘以优化使用托盘。
例如,一个包装好的托盘尺寸可以是 1.62 立方米 (1x1.2x1.35)
然后我的订单上有以下物品
产品代码、数量、总量
1, 10, 0.5 立方米
2, 3, 0.2立方米
3, 5, 1.2立方米
4、 1、 0.15立方米
5, 15, 0.6立方米
我想处理这个,我假设使用 mysql 事务,以便获得以下输出:
托盘 1:产品 1、2、5。总体积=1.3 立方米
托盘 2:产品 3,4。总体积=1.35 立方米
因此,为了澄清,脚本将采用第一个 0.5 立方体托盘,然后在列表中查找最接近 0.85 的下一个订单以实现 1.35 立方米的目标。在这种情况下,它将是 0.6。现在总共 1.1 个立方体。剩余空间现在为 0.25 个立方体。列表中最接近的项目现在是产品 2 @ 0.2 立方体。现在总共 1.3 个立方体,并且不存在 0.05 个或更少的产品,因此托盘是完整的。下一个可用产品现在是产品 3 @ 1.2 立方体。因此需要 0.15 或更小的产品。产品 4 是确切的体积,因此添加到托盘并关闭。
我希望这有助于澄清我的要求。
是否有 mysql 事务可以帮助解决这个问题还是需要用 php 处理。
对此的任何帮助将不胜感激,只是不确定如何构建此逻辑。
一如既往地感谢您的宝贵时间,
mysql表如下:
【问题讨论】:
-
盒子的形状不重要吗?说托盘具有容积容量很好,但除非容器是流动的,否则还会有“形状”容量(这是一个更严格的限制):托盘中可能保留相当大的空间,但分散在不规则的大小和形状;而您可能只有体积较小的立方体形盒子,但实际上无法放置在任何地方。或者这是一个纯粹的学术练习,你不关心形状?
-
嗨@eggyal。你是 100% 正确的。订单在层级完成,因此水平足迹将始终与托盘尺寸相同。它实际上只是结合垂直层来提高效率。我在问题中添加了一个粗略的草图以帮助澄清。谢谢
-
我确实通读了背包问题,这个逻辑可以用mysql或者php完成吗?再次感谢。
-
好的,在这种情况下,您实际上只关心将订单的总高度保持在托盘的总高度容量内。问题陈述是等价的:我只是发现一维比三维更容易思考!
-
感谢@eggyal 是有道理的。关于我如何用 PHP 完成这个的任何建议?谢谢。