【问题标题】:C# Order quantity split as per warehouseC# 订单数量按仓库拆分
【发布时间】:2017-10-28 06:57:19
【问题描述】:

我正在开发一个订单管理应用程序。一个订单包含多个产品,每个产品都存在于仓库中,现在我必须找到最佳组合,以根据运输成本拆分订单数量以放入包裹中。

例如,我有两个仓库W1、W2。客户订购了数量为 9 的两个产品 P1 和数量为 1 的产品 P2。情况是产品 P2 仅存在于仓库 W1 中,而产品 P1 存在于两个仓库中。现在我想找到所有可能的组合,将这个订单分成两个包,以找到最便宜的成本。每个数量少于或等于 5 个(每个包裹限制为 5 个)的仓库都需要统一费率(5 美元),数量超过 5 的任何仓库都需要统一费率 + 额外费用。 W1 的额外费用是 1 美元,W2 是 2 美元。

Product W1 W2 P1 9 P2 1 N/A

Product W1 W2 P1 8 1 P2 1 N/A

Product W1 W2 P1 7 2 P2 1 N/A . . .

Product W1 W2 P1 1 8 P2 1 N/A

Product W1 W2 P1 9 P2 1 N/A

我可以在纸上创建这样的清单并计算成本,我发现的最佳组合是,统一费率 W1 发送一个包裹 5 美元,W2 发送另一个包裹 5 美元,所以总成本是 10 美元,没有额外费用图片是因为包装中的数量不超过 5 个。到目前为止,我已经创建了一个字典,其中仓库作为键,并根据可用性创建了每个订单的产品列表,但我无法继续进行这种组合,需要一些帮助。这是 linq 可以提供帮助的东西吗?

Product W1 W2 P1 4 5 P2 1 N/A

【问题讨论】:

    标签: c# linq permutation


    【解决方案1】:

    这很简单,你不需要传递整个排列。我也不会使用 LINQ。很简单,用如下算法编写订单计划服务:

    对于任何产品,

    • 如果订单数小于等于5,首先尝试使用W2中的所有订单。如果 W2 容量不够,请尽量使用 W2 中的数量,然后使用 W1 中的剩余数量。
    • 如果订单数大于5。首先尝试使用W2中的5个。如果 W2 容量不够,请尽可能使用 W2 中的容量,然后使用 W1 中剩余的整数。

    如果你把这个算法应用到你的例子中,你会直接得到预期的结果。

    【讨论】:

    • 感谢您的信息,将尝试实施。
    • 如果对您有帮助,请标记为已接受答案。如果您对实施有任何其他问题,也可以提出。
    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2013-07-18
    相关资源
    最近更新 更多