库存水平算法

时间:2014-07-03 06:38:16

标签: algorithm

我需要一种算法来暂停没有库存的订单。

每个订单可以有多个产品,每个产品都有自己的数量。

根据库存水平,我想知道如何确定哪些订单被搁置。可能是订单数量最少的。

为了简单起见,这是一个例子:

Order #1
A 5, B 3, C 10

Order #3
A 1, B 2, C 3

Order #4
A 5, B 5, C 5

Order #5
A 1, B 1, C 1

**Stock Level** 
A = 5, B = 5, C = 5

显然,订单#1需要暂停,因为我们没有10个产品C.现在我可以完成订单#5和#3或只订购#4。更复杂的是,我需要这个功能或另一个功能,一旦我们有股票就会暂停订单。

这是为每天处理大约3000个订单的规模实施的。

我的方法是获得所有订单中没有足够库存的产品。然后找到要保留的最小订单组合。可能会考虑其他可能在这些订单中缺货的产品。

希望你发现它和我一样有趣

1 个答案:

答案 0 :(得分:0)

这是scheduling algorithm的一个实例。实际上,您希望减少任何订单的最大延迟。想想看:如果你有一个无限的股票,订单会随着他们的到来而变得每个人都会高兴。

您可以调整Multilevel feedback queue

的原则
  • 每个订单都有优先级
  • 刚刚进入的订单具有最低优先级
  • 使用优先级函数foo(order)
  • 增加没有库存的订单的优先级
  • 每次您可以选择j1j2并选择j1,您可以使用其他优先级函数j2来提高bar(j2)的优先级
  • 作业之间也存在自然顺序less(j1,j2)。这是在不考虑库存水平的情况下在一组工作之间做出的决定。

现在您可以根据具体情况进行调整。自然顺序可能是FIFOsmaller firstbigger first。您可以设计优先级,以便在库存允许的情况下立即处理包含缺货商品的订单。