以下我就从原理入手,分享我对此题的一些看法,希望能够帮到各位。
1、先进先出原理篇
1.1 先进先出概念解释
先进先出,顾名思义就是先进去的得先出来。这个思想在物流系统中比较常见。为了避免时间造成的损失,在商品出库的时候,先入库的商品先出库。其实在计算机数据结构算法中,也有先进先出的概念,如队列:所有数据排成一列,增加的数据排在队尾,取出数据时从队首取出。与先进先出相对应的一个概念是先进后出,如堆栈:堆栈好比一个瓶子,先进去的数据放在瓶底,后进去的数据靠近瓶口,取数据时只能从靠近瓶口的数据依次取。
1.2 先进先出的应用
当然,先进先出不仅适用于商品出库,其实相同思想概念的就是根据优先级分配资源。如本题中,其实是变换了一种说法,但细想之下,实质就是先进先出。在先进先出的系统中,实质上是对分批进库的商品进行重新分组。因而,牵涉按一定顺序重新分组的问题,我们都可以将其转化为先进先出问题。如本例,实质就是对商品进行重新分组。
1.3 单批次货物的先进先出分配
我们先从简单的开始,假设仓库中只有一个批次的商品,数量为60,现要求按照优先级分配给数量为20、10、15、30的订单中。可见60个商品不足以分配给所有订单,但是可以分配给多个订单,只要将订单排列好后,画如下的图就可以一目了然此次分配的结果。
635316526481660156.jpg
上图完整展示了分配的关系,可见分配的数量实质就是每个订单向库存处引线,交接处即为分割点。是否够分呢是由库存向订单引线,有交点说明不够分,交界处可体现剩余未分配的部分。上图分配的结果为:
635316526624765625.jpg
请读懂上述部分再进入以下讲解。
1.4 多批次货物的先进先出分配
我们再将问题稍微复杂一点,我们增加一个批次数量为10的库存,两个批次分别用1号库和2号库分开。我们仍然按照1.3的方法由库存和订单互相向对方引线,交界处即为分割点。其分配关系如下图所示
635316526626582031.jpg
OK,上图我们看到了什么?实质上,在1号库分配结果的基础上,2号库继续分配1号库未分配的部分。实质上,我们将1.3的过程分成了两组,分别就是两次1.3中的货物分配。
多批次货物分配的实质就是每个批次按照顺序分别分配,在前一个分配结果的基础上,下一个批次去分配前一个批次未分完的订单。
635316526628818359.jpg
说到这里,大家应该明白怎么回事了。其实分配过程很简单,如果能做图,可以立即得到结果。多批次的分配,其实原理都是一样,实质就是每个批次的商品分别对应每一段订单的分配,如下图所示:
635316526630791015.jpg
|