C#订单数量按仓库分割

时间:2017-10-28 06:57:20

标签: c# linq permutation

我正在处理订单管理申请。一个订单包含多个产品,每个产品都存在于仓库中,现在我必须找到最佳组合,以根据运输成本拆分订单数量。

例如,我有两个仓库W1,W2。客户订购两个产品P1,数量为9,产品P2,数量为1.情况是产品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

1 个答案:

答案 0 :(得分:0)

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

对于任何产品,

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

如果您将此算法应用于您的示例,您将直接获得预期结果。