Product Batch Pick Strategy

how can we pick products in different machines with batch strategy?

问题描述

如何实现基于多机型,不同出货模式的批次管理策略?
当前有机型S、机型G,机型S可以遵循单次单货道的多数量领料,即机型S单货道出货区间为: 1-库存。机型G只遵循单次单货道单数量领料,即机型G单货道出货: =库存。在机型S和G的组合情况下(S和G都可能存在多货道同种物料的情况)如何实现对于批次的管理,即物料的先进先出管理。

数学模型

通过如上的问题拆解,可以将问题归纳于: 按先进先出原则领取S、G机型上多货道的同种物料
即假设有一种商品按如下的货道分配,批次按FIFO原则求领料顺序,并尽量满足客户的领取数量

机型 货道 库存 批次
S 1 5 2
S 2 3 4
S 3 2 6
G 7 5 1
G 8 5 3
G 9 8 5

求解过程

批次排序

机型 货道 库存 批次
G 7 5 1
S 1 5 2
G 8 5 3
S 2 3 4
G 9 8 5
S 3 2 6

1.按批次排序使用从上到下的递减库存求货道领料数,即 f(x) = sortMinus(stockOrder) 优先批次保证数量
2.如果不满足,则使用G货道轮流置顶 => stockOrder = [G、…] 求解,保证批次的情况下求满足数量
3.如果不满足,则使用G全置顶倒序 => stockOrder = [G、G、G、S、S、S] 求解,优先满足数量

总结

刚拿到这个需求的时候,既要求要满足批次管理,又要求要满足客户领料数优先,同时要计算出用户可输入的领料数集合。
当把所有条件放一起之后发现很难下手,从满足客户领用优先的角度组合出可领用数来计算,再从中挑选出最优批次看起来最符合需求,然而领用数组合在G机型上,随着货道的增加,会出现型如C42、C43的问题,组合操作成指数级增长,很显然这种方式不可取。所以变换一下思路通过批次找最优解,再遍历1-库存和,就可以得到最优结果,时间复杂度O(n)