G1 文章信息
文章题为“A Practical End-to-End Inventory Management Model withDeep Learning”,该文于2022年发表至“MANAGEMENT SCIENCE”。文章的核心是提出了端到端的框架用于多周期库存补货问题。
2 摘要
文章研究了一个数据驱动的多周期库存补货问题,需求与供应商交货期(VLT)具有不确定性,但可获取大量历史数据。不同于传统的 “先预测后优化(PTO)” 两步式解决方案框架,我们提出了一个端到端(E2E)框架,该框架运用深度学习模型直接依据输入特征输出建议补货量,无需任何中间步骤。E2E 模型经训练可在历史观测数据下捕捉最优动态规划解的行为模式,且无需对需求和 VLT 的分布作任何先验假设。通过使用一家领先电子商务公司的真实数据开展一系列全面的数值实验,我们证实了所提 E2E 模型相较传统 PTO 框架的优势。我们还在京东进行了实地实验,结果显示,与京东现行做法相比,新算法大幅降低了持有成本、缺货成本、总库存成本及周转率。对于供应链管理行业而言,我们的 E2E 模型缩短了决策流程,并提供了一种具有可推广性与可扩展性的自动化库存管理方案。这种直接将输入信息用于最终目标的 E2E 理念,在其他供应链管理场景中亦具实际应用价值。
3 引言
4 模型
(1)多周期补货问题的问题描述
文章考虑离散的时间范围1...T。在这T个周期内存在一系列的随机需求,记为,。令表示周期t起始时的库存水平,若手头有过剩库存,则库存水平为正;若出现库存短缺(即产生缺货订单),则为负。因此,在每个周期末尾,对于每单位过剩库存,我们需承担持有成本h,对于每单位缺货订单,则需承受缺货成本 b。
我们采用周期性审查策略,并假定审查周期由一系列日期构成,即从周期 1 至 T 总共存在 M 个订单,这些订单在时刻下达,其中,通常订单下达遵循固定时间表(例如,仅在周二和周五下单)。在本问题中,我们考虑随机的 VLT,即第 m 个订单在周期 t 下达,将在周期t+L到达,其中L是正整数的变量。由此,订单到达的时间记为,其中,也为变量。此后,和为随机变量,和分别代表周期 t 需求的实现值以及第 m 个订单 VLT 的实现值。在每个周期,系统首先通过核查是否有订单抵达来更新库存水平,随后需求发生。令表示第 m 个订单的订单量。在周期末尾,将产生持有成本或缺货成本。库存水平更新遵循以下等式:
该式含义为:第t+1周期的库存量 = 第t周期开始时的库存水平 - t周期的需求量(消耗量) + 订单送到对库存的补充。为0-1变量。表示第m个订单能够在周期t内送达则为1.否则为0。对应周期产生的成本可表示为:
其中表示。该式由两部分组成,前面部分表示存放成本。若有库存,则乘以h,没有库存则持有成本为0。后面部分表示缺货成本。
目标是在给定周期内,选择订单的数量,最小化该时域内的成本。即
<1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">1><1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">1><1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">1>
<1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">1>
<1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">1>
<1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">1>
<1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">1>
<1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">
1>