版权所有, 如需转载请保留链接 http://wangbt5191-hotmail-com.iteye.com/blog/1734160
业务需求:
在仓库管理系统WMS中, 在订单发货前, 有一个发货拣单作业, 对订单进行分拣, 根据订单中的品类数量从货区获取商品, 在大量订单作业的过程中, 需要对产品品类相似的订单进行聚合, 也就是根据订单间货物的信息进行预先分组以方便分拣人员分拣。
问题分析
假如我们有数据:
Order1 : [Sku1: 2件 , Sku2: 1件]
Order2 : [Sku2: 2件 , Sku3: 1件, Sku4: 1件]
Order3 : [Sku2: 1件 , Sku4: 2件, Sku5: 1件]
我们假设现场有两个分拣线, 那么要分成两组, 那么我们该把Order1 和Order2 合并为一个Group 呢还是Order2 和Order3 合并? 那么合并的依据是什么? 我们怎么评价这个合并的方式比其他方式较优?
我们假设从采购车上来货的时候, 单品相商品在分捡过程中的数目对分拣复杂度不产生影响, 那么其实我们把每个Order 看成一个Set
Order1 ==> Set: [Sku1, Sku2]
Order2 ==> Set: [Sku2, Sku3, Sku4]
Order3 ==> Set: [Sku2, Sku4, Sku5]
那么问题就转变成, 如何为对已知的有一个个的Set 进行分组聚合。
对这个分组聚合我们又分为两个子问题:
1. 如何衡量两个Set 之间的相似度。
我们假设以函数Similarity(x, y)表示两个集合的相似度。
比如有以下4组集合
X={1, 2, 3} ; Y