发明内容
有鉴于此,本发明提供一种降低库存碎片率的方法及装置,通过对真实的仓储业务和数据的分析,发掘出目前电商行业仓储过程中提高储位利用率的一些规律并加以优化,在实现上利用算法和数据结构等相关技术,优化订单定位的策略,能够将对库存碎片的处理巧妙地隐藏在订单的生产过程中,以有效地降低仓库内库存的高碎片率,减少人为干预导致的低效率,最终实现储位利用率的提高。
为实现上述目的,根据本发明的一个方面,提供了一种降低库存碎片率的方法。
一种降低库存碎片率的方法,包括:接收商品的订单,所述订单包括该商品的订货数量;从库存数据系统中获取所述商品的库存状态,所述库存状态由状态元素组成,每个状态元素是二元组<L,M>,表示在相应储位L存有M个所述商品,商品数量M大于0,L是相应储位的标识号,储位是库存的基本单位;根据所述库存状态确定所有的满足所述订单的状态元素组合,所述状态元素组合是状态元素的有序序列并且按升序排列,其中商品数量是第一排序关键字并且储位标识号是第二排序关键字,所述的满足所述订单的状态元素组合是指该状态元素组合满足下述条件:该状态元素组合中各状态元素对应的商品数量之和不小于所述订货数量,如果该状态元素组合中的状态元素多于一个,则其中任何一个状态元素对应的商品数量小于所述订货数量,并且如果去除该状态元素组合中最后一个元素,则剩余的状态元素对应的商品数量之和小于所述订货数量;以及根据预定的规则从所确定的所有状态元素组合中选择一个状态元素组合。
可选地,根据预定的规则从所确定的所有状态元素组合中选择一个状态元素组合包括:从所确定的所有状态元素组合中选择状态元素数最多的一个状态元素组合。
可选地,根据预定的规则从所确定的所有状态元素组合中选择一个状态元素组合包括:从所确定的所有状态元素组合中选择状态元素数最多的状态元素组合,然后从所选的状态元素组合中选择一个状态元素组合,该状态元素组合中各元素对应的商品数量之和为最小。
可选地,根据所述库存状态确定所有的满足所述订单的状态元素组合之后,还包括:根据所述状态元素组合中状态元素的个数,将所述状态元素组合分类显示。
可选地,还包括:以可视、可听或二者结合的方式输出所选择的状态元素组合,以指示拣货人员完成拣货。
根据本发明的另一方面,提供了一种降低库存碎片率的装置。
一种降低库存碎片率的装置,包括:订单接收模块,用于接收商品的订单,所述订单包括该商品的订货数量;库存获取模块,用于从库存数据系统中获取所述商品的库存状态,所述库存状态由状态元素组成,每个状态元素是二元组<L,M>,表示在相应储位L存有M个所述商品,商品数量M大于0,L是相应储位的标识号,储位是库存的基本单位;组合确定模块,用于根据所述库存状态确定所有的满足所述订单的状态元素组合,所述状态元素组合是状态元素的有序序列并且按升序排列,其中商品数量是第一排序关键字并且储位标识号是第二排序关键字,所述的满足所述订单的状态元素组合是指该状态元素组合满足下述条件:该状态元素组合中各状态元素对应的商品数量之和不小于所述订货数量,如果该状态元素组合中的状态元素多于一个,则其中任何一个状态元素对应的商品数量小于所述订货数量,并且如果去除该状态元素组合中最后一个元素,则剩余的状态元素对应的商品数量之和小于所述订货数量;以及结果定位模块,用于根据预定的规则从所确定的所有状态元素组合中选择一个状态元素组合。
可选地,所述结果定位模块还用于:从所确定的所有状态元素组合中选择状态元素数最多的一个状态元素组合。
可选地,所述结果定位模块还用于:从所确定的所有状态元素组合中选择状态元素数最多的状态元素组合,然后从所选的状态元素组合中选择一个状态元素组合,该状态元素组合中各元素对应的商品数量之和为最小。
可选地,所述组合确定模块还用于:根据所述状态元素组合中状态元素的个数,将所述状态元素组合分类显示。
根据本发明的技术方案,根据状态元素组合中的状态元素个数将库存系统中的库存结果进行整合分组,并定位状态元素最多的库存结果集合为最终结果来进行配货,可以实现每次配货都清空最多的储位,进而清除最多的库存碎片,从而降低了库存碎片率。通过在订单配货过程中引入定位策略来解决库存“碎片化”的问题,充分地避免了由于人力管理不足所导致的商品出库效率低的问题,将储位库存的整理、去碎片化工作融入进了库房日常最频繁的业务——订单生产中,相当于一个后台的“清洁工”,自动地完成对库存碎片的清理,整个过程不需人工干预,降低了库房的运营成本,提高了储位的利用率,加快了订单商品的出库速度,从而提高了整个仓储系统的运行效率,提升了客户体验度。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明所采用的技术方案是通过在订单配货过程中引入定位策略来解决库存“碎片化”的问题,充分地避免了由于人力管理不足所导致的商品出库效率低的问题,将储位库存的整理、去碎片化工作融入了库房日常最频繁的业务——订单生产中,相当于一个后台的“清洁工”,自动地完成对库存碎片的清理工作。
图3是根据本发明实施方式的一种降低库存碎片率的方法的主要步骤示意图。如图3所示,本发明的一种降低库存碎片率的方法主要包括如下的步骤S31至步骤S34。
步骤S31:接收商品的订单,所述订单包括该商品的订货数量;
步骤S32:从库存数据系统中获取所述商品的库存状态,所述库存状态由状态元素组成,每个状态元素是二元组<L,M>,表示在相应储位L存有M个所述商品,商品数量M大于0,L是相应储位的标识号,储位是库存的基本单位;
步骤S33:根据所述库存状态确定所有的满足所述订单的状态元素组合,所述状态元素组合是状态元素的有序序列并且按升序排列,其中商品数量是第一排序关键字并且储位标识号是第二排序关键字,所述的满足所述订单的状态元素组合是指该状态元素组合满足下述条件:该状态元素组合中各状态元素对应的商品数量之和不小于所述订货数量,如果该状态元素组合中的状态元素多于一个,则其中任何一个状态元素对应的商品数量小于所述订货数量,并且如果去除该状态元素组合中最后一个元素,则剩余的状态元素对应的商品数量之和小于所述订货数量;以及
步骤S34:根据预定的规则从所确定的所有状态元素组合中选择一个状态元素组合。
其中,步骤S34具体还可以包括:从所确定的所有状态元素组合中选择状态元素数最多的一个状态元素组合。或者还可以包括:从所确定的所有状态元素组合中选择状态元素数最多的状态元素组合,然后从所选的状态元素组合中选择一个状态元素组合,该状态元素组合中各元素对应的商品数量之和为最小。
根据本发明的实施方式,在步骤S33之后,还可以根据所述状态元素组合中状态元素的个数,将所述状态元素组合分类为不同的集合并通过数据结构进行显示。
所述数据结构可以是以键-值对的形式进行数据存储的。结合本发明的实施例,可选择的数据结构为HashMap,且在进行数据存储时,键名为状态元素组合中状态元素的个数,键值为不同元素个数的状态元素组合的集合。HashMap是Java中常用的一种数据结构。对于HashMap而言,是将键-值对(key-value)当成一个整体进行处理,总是根据Hash算法来计算key-value的存储位置,这样可以保证能快速存、取Map的key-value对。在进行数据结构选择时,可以不局限于Java语言,也不单单局限于HashMap一种数据结构,编程语言中所有可以表示键-值对(Key-Value)存储容器的数据结构都可以满足要求,比如C++的map容器,C#的Dictionary泛型等。
另外,根据本发明的实施例,还可以利用可视、可听或二者结合的方式输出所选择的状态元素组合,以指示拣货人员完成拣货。
在本发明的实施例中,为了降低库存碎片率,需要每次的订单配货时可以清除最多的库存碎片,即:每次的订单配货可以清空最多的储位,也就是每次订单配货需要最多的拣货次数。另外,根据所述库存状态确定所有的满足所述订单的状态元素组合之后,可以根据所述状态元素组合中状态元素的个数,将所述状态元素组合分类为不同的集合。并且采用数据结构进行显示以更加直观清楚。
以下结合具体的例子介绍本发明技术方案的实现过程。图4给出一个示例性的某种商品库存状态示意图。通过模拟一个库存场景,假定某商品X在仓库的库存状态如图4中的表格所示,其中,纵轴表示该货架的行数(该例子中为7),横轴表示该货架的列数(该例子中为7),行列的每个交叉点是储位,储位具有标识号。
由于实际处理中,仅涉及商品X的数量非零的储位。假设该例子中,有7个储位该商品的数量非零。为了表述方便,这里把这7个储位的标识号记为A—G,这7个储位中商品X的数量分别为2、2、4、6、8、12、12。
根据图4的例子,当前仓库的储位空闲率F=42/49=86%,储位负荷率L=1/7=14%,属于相当低的水平,库存碎片化现象比较严重,下面利用出库时订单的定位业务来解决该问题。
假设现有一个客户订单中需要商品X为11个,即:订单中包括该商品的订货数量为11。根据本发明的技术方案,配货系统对订单的处理过程如下。
第一步:从库存数据系统中获取订单商品的库存状态。商品的库存状态给出了每个储位该商品的数量,库存状态由状态元素组成,状态元素表示成二元组<L,M>的形式,用于指示在储位L有M个该商品。仅考虑M大于零的状态元素。
根据本发明的实施例,为方便后续处理,可以对读取的状态元素按升序排列,其中以商品数量(M)作为第一排序关键字,且以储位标识号(L)作为第二排序关键字。针对图4的例子,排序结果为:<A,2>、<B,2>、<C,4>、<D,6>、<E,8>、<F,12>和<G,12>。注意,这里的顺序与A-G的字母顺序恰好相同,这时由于如前述为了方便对有关的储位号给予的方便记号。实际上,储位号是预先编好的,如这里的A-G可以是具体的编号,并且可以不是与字母顺序一致的,如A实际上是0702(第7行第2列),B是0504(第5行第4列),等等。
第二步:根据所述库存状态确定所有的满足所述订单的状态元素组合。
状态元素组合是状态元素的有序序列并且按升序排列,其中商品数量是第一排序关键字并且储位标识号是第二排序关键字。满足所述订单的状态元素组合定义符合下述条件:该状态元素组合中各状态元素对应的商品数量之和不小于所述订货数量,如果该状态元素组合中的状态元素多于一个,则其中任何一个状态元素对应的商品数量小于所述订货数量,并且如果去除该状态元素组合中最后一个元素,则剩余的状态元素对应的商品数量之和小于所述订货数量。
为了表述方便,对于图4的例子,我们把状态元素<A,2>、<B,2>、<C,4>、<D,6>、<E,8>、<F,12>和<G,12>分别表示为A2、B2、C4、D6、E8、F12和G12。相应地,根据这种库存状态可确定如下的满足订单数11的订单的状态元素组合:
S1:A2B2C4D6,
S2:A2B2C4E8,
S3:A2B2D6E8,
S4:A2B2E8,
S5:A2C4D6,
S6:A2C4E8,
S7:A2D6E8,
S8:B2C4D6,
S9:B2C4E8,
S10:B2D6E8,
S11:C4D6E8,
S12:C4E8,
S13:D6E8,
S14:F12,
S15:G12。
上述每一个状态元素组合对应能够实现订单数量11的一种拣货方式。例如,对应S1,可从储位A取2个,从储位B取2个,从储位D取6个,从储位E取1个,就满足了订单的数量。拣货时,涉及一个储位就对应一次拣货。完成订单涉及的储位个数称为该订单的拣货次数。因此,订单的拣货次数就是相应的状态元素组合中的状态元素数目。
为清空更多的储位(清除更多的库存碎片),应该选择包含有最多状态元素的状态元素组合,并且对应这样选择的状态元素组合来拣货。
因此可依据状态元素数目不同将状态元素组合分为不同的集合。如对图4的例子,有下述4个集合:
对应状态元素数目4的状态元素组合集{S1,S2,S3};
对应状态元素数目3的状态元素组合集{S4,S5,S6,S7,S8,S9,S10,S11};
对应状态元素数目2的状态元素组合集{S12,S13};
对应状态元素数目1的状态元素组合集{S14,S15}。
可以如图5所示显示上述的状态元素组合分类。这样,在进行最终结果选择时将更清楚直观。
第三步:从所确定的所有状态元素组合中选择状态元素数最多的状态元素组合。为了降低库存碎片率,需要能清空最多储位,故选择包含有最多状态元素的状态元素组合的集合,即组合S1、S2和S3。此3个组合都可以清空3个储位。故选择组合S1、S2或者S3中对应的储位进行订单配货即可满足降低库存碎片率的要求。
然而,在实际操作中,还会考虑到一些其他的情况,例如:剩余库存少的储位更容易被清空,因此,还可选择拣货后储位剩余库存最少的组合,即:状态元素组合中各元素对应的商品数量之和为最小的组合,以作为添加的规则进一步进行定位。由于组合S1中的方案共可取出商品数量2+2+4+6=14,减去订单商品数量11,剩余3个商品库存还在储位上;组合S2中的方案共可取出商品数量2+2+4+8=16,减去订单商品数量11,剩余5个商品库存还在储位上;而组合S3中的方案共可取出商品数量2+2+6+8=18,减去订单商品数量11,剩余7个商品库存还在储位上。因此,可进一步地确定组合S1为最优结果,该订单被定位在A、B、C、D四个储位上,且一次清空了3个储位,储位负荷率L变为1/4=25%,储位空闲率变为45/49=92%。与之前的储位负荷率L=1/7=14%,储位空闲率F=42/49=86%相比,都有较大的提升。
根据本发明的实施例,可以利用可视、可听或二者结合的方式输出所选择的状态元素组合,以指示拣货人员完成拣货。
以上所述的实施例,仅是针对一个订单的处理结果,当库房规模逐渐庞大,订单量不断上升的时候,该方法对提高储位利用率,降低库存碎片化程度的效果更加明显。而且以上所述的技术方案可以应用在任何订单出库,不管订单商品数量的多少。
图6是根据本发明实施方式的一种降低库存碎片率的装置的主要模块示意图。如图6所示,本发明的降低库存碎片率的装置60主要包括订单接收模块61、库存获取模块62、组合确定模块63和结果定位模块64。
订单接收模块61用于接收商品的订单,所述订单包括该商品的订货数量;库存获取模块62用于从库存数据系统中获取所述商品的库存状态,所述库存状态由状态元素组成,每个状态元素是二元组<L,M>,表示在相应储位L存有M个所述商品,商品数量M大于0,L是相应储位的标识号,储位是库存的基本单位;组合确定模块63用于根据所述库存状态确定所有的满足所述订单的状态元素组合,所述状态元素组合是状态元素的有序序列并且按升序排列,其中商品数量是第一排序关键字并且储位标识号是第二排序关键字,所述的满足所述订单的状态元素组合是指该状态元素组合满足下述条件:该状态元素组合中各状态元素对应的商品数量之和不小于所述订货数量,如果该状态元素组合中的状态元素多于一个,则其中任何一个状态元素对应的商品数量小于所述订货数量,并且如果去除该状态元素组合中最后一个元素,则剩余的状态元素对应的商品数量之和小于所述订货数量;以及结果定位模块64用于根据预定的规则从所确定的所有状态元素组合中选择一个状态元素组合。
结果定位模块64还可以用于从所确定的所有状态元素组合中选择状态元素数最多的一个状态元素组合。
结果定位模块64还可以用于从所确定的所有状态元素组合中选择状态元素数最多的状态元素组合,然后从所选的状态元素组合中选择一个状态元素组合,该状态元素组合中各元素对应的商品数量之和为最小。
组合确定模块63还可以用于根据所述状态元素组合中状态元素的个数,将所述状态元素组合进行分类显示。
根据本发明实施例的技术方案,根据状态元素组合中的状态元素个数将库存系统中的库存结果进行整合分组,并定位状态元素最多的库存结果集合为最终结果来进行配货,可以实现每次配货都清空最多的储位,进而清除最多的库存碎片,从而降低了库存碎片率。通过在订单配货过程中引入定位策略来解决库存“碎片化”的问题,充分地避免了由于人力管理不足所导致的商品出库效率低的问题,将储位库存的整理、去碎片化工作融入进了库房日常最频繁的业务——订单生产中,相当于一个后台的“清洁工”,自动地完成对库存碎片的清理,整个过程不需人工干预,降低了库房的运营成本,提高了储位的利用率,加快了订单商品的出库速度,从而提高了整个仓储系统的运行效率,提升了客户体验度。
另外,本发明的技术方案还具有很高的可扩展性,还可以通过配置不同的定位策略来解决仓储系统中存在的其他问题,以达到其他的目的。例如:现场订单生产比较繁忙,为了快速出库,运营人员可以选择最少拣货次数作为定位规则,这样,本发明实施例中的第三步分单结果就变为:选择组合S14或S15。故按照组合S14或者S15中包含的库存结果进行订单配货即可满足该定位规则。又例如,如图7所示的本发明扩展的技术方案的实施例的商品库存状态示意图,假如经过定位策略之后,A、B、C三个储位皆符合策略要求,那么此时可以根据现场工作人员的需要追加定位规则:优先定位低层储位,以方便拣货人员进行拣货,提高出库效率。最终定位结果为C5。
同样地,本发明中所提到的订单定位策略还可以解决其他的技术问题,例如可具体到根据储区类型(如销量较高的物品的团购区或者商品量比较大的大宗区)筛选,而且可考虑商品在数据库中任何扩展属性,如是否常温保鲜,是否高值,入库日期等,把状态元素设计成多元组,并制定相应的拣货规则,从而确定最优的拣货方案,从而实现更加灵活的配单方式,以满足不同的需求。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。