一个实用的端到端的深度学习库存模型

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 引言  

在库存管理当中,货物的需求模式不同,就需要采用不同的补货策略。比如文章考虑一个多周期库存管理问题,该问题的货物需求不确定、企业向供应商发出采购订单到实际货物到达的时间间隔VLT不确定。需要依据订单下达与到货状况、需求出现情形及库存水平实时变动来更新库存,并产生持有或缺货成本,其目标库存的总成本最小。于是,开发一个能自动识别最优补货策略的框架很重要。

作者提出的端到端的方法是指用深度学习的方法,输入每个补货周期、库存水平、历史需求等特征,预测该周期下最优的补货量。但该方法存在一个问题,如何获取最优的补货量。于是作者提出利用动态规划的方法求解该优化问题,将优化问题的解作为标签,输入到神经网络模型进行学习。

文章的贡献在于:

1、针对多周期补货问题提出端到端框架。基于我们标签的方法,此框架可直接由输入特征生成补货决策。

2、所提端到端学习框架能自动确定契合不同需求模式的补货策略。该方法在离线模拟(采用真实数据)和实地实验中,皆优于多个基线模型,涵盖某领先在线零售商的现行实践。实地实验有力验证了我们算法在电商行业现实库存管理中的适用性。

3、通过为需求和 VLT 不确定性分别设计模块,创新了深度神经网络结构。此举大幅削减计算复杂度与权重数量,同时确保良好性能。

4 模型

(1)多周期补货问题的问题描述

文章考虑离散的时间范围1...T。在这T个周期内存在一系列的随机需求,记为0aafdbe9cc1e048b81dd2f71300e48ad.png40fe0fdd105e4152a9e3076a8a2ba88b.png。令2e69ad95a357e2063302a826346f1c1f.png表示周期t起始时的库存水平,若手头有过剩库存,则库存水平为正;若出现库存短缺(即产生缺货订单),则为负。因此,在每个周期末尾,对于每单位过剩库存,我们需承担持有成本h,对于每单位缺货订单,则需承受缺货成本 b。

我们采用周期性审查策略,并假定审查周期由一系列日期构成,即从周期 1 至 T 总共存在 M 个订单,这些订单在d170f413a35bed7e5d5464b1ad6ab878.png时刻下达,其中148357fc33f13dfeab3156f7440dc10c.png,通常订单下达遵循固定时间表(例如,仅在周二和周五下单)。在本问题中,我们考虑随机的 VLT,即第 m 个订单在周期 t 下达,将在周期t+L到达,其中L是正整数的变量。由此,订单到达的时间记为57135c2443c7b6c8c47677f0c8a1b187.png,其中0dbc8321db56ee2462bef15068b26cef.png,也为变量。此后,d0cd6e37c3bce2a1d0b24fef797eba4f.png4542fe1180994910e31af1ec4700567c.png为随机变量,11a27a1dbca5df1f736083b4a567b6ad.png67aff164494a9c899b5925fb69ac4b82.png分别代表周期 t 需求的实现值以及第 m 个订单 VLT 的实现值。在每个周期,系统首先通过核查是否有订单抵达来更新库存水平,随后需求发生。令7c06914578551cae741af355f9fce419.png表示第 m 个订单的订单量。在周期末尾,将产生持有成本或缺货成本。库存水平更新遵循以下等式:

dd9a1e610311b68db3516b69137f06c2.png

该式含义为:第t+1周期的库存量 = 第t周期开始时的库存水平 - t周期的需求量(消耗量) + 订单送到对库存的补充。9983e55ae77e951d6ea2b7599bc0777d.png为0-1变量。表示第m个订单能够在周期t内送达则为1.否则为0。对应周期产生的成本可表示为:

b93006432e5bbc918b6f6b5b267007cf.png

其中f71a675f233fe13b8ec2a018f0ba0ada.png表示6124300024288b88e149e235acec6fd4.png。该式由两部分组成,前面部分表示存放成本。若有库存,则乘以h,没有库存则持有成本为0。后面部分表示缺货成本。

目标是在给定周期内,选择订单的数量,最小化该时域内的成本。即

953faa910153cf0bc875d5233b032f58.png 

<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;">(2)端到端模型1>

补货问题的关键在于找到每个检查点的最佳订单数量f54c8738bb67d49805dd7386dbd28423.png,为找到映射函数61fbad5d1e7e0183e28c789fb8640ae8.png,首先用历史数据训练模型。对于每个具有观测特征向量350d52d6359bb3824c635dd7ee859d8d.png,的历史补货时间点,我们需要计算cac2d34c9c802f965cbb935ec9689726.png,即相应的最优订单数量。这一步骤在监督学习算法中被称为 “标签”,当完成每个观测值的相关标记后,我们可通过以下训练目标建立映射:

6ea4d25b84a65ba384ea7ff0089810b1.png

其中是训练数据的总数,L是基于模型预测440ed83d7e2c034beafd177bcd56e3fb.png与最优订单数量b19b842589d4f3ee6f48231381da5288.png之间差异定义的损失函数。特别地,我们考虑用神经网络模型表示函数f。

A.标记最优订单数量

标注过程:使用历史真实数据,利用动态规划方法求最优解。最优解作为模型的标签。在给定需求的情况下,我们可将递归式表述为:

321439c13e82c79a0e1d7ccdbe3892b2.png

其中,e0c16e3b155f1e7c394184156f93db84.png是区间6b0d89a327bc0822e7358eb5e20410a6.png上的最优成本,6cc686ccf59dbe670395876073bbc2bc.png。在此作者推导出一个定理,其作用是上式的解析解,即为040090de99eacc67522a16ecb40d364b.png,其中aa032c65fd0486d8dd6a801c18c86f26.png

B.神经网络模型结构

<1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">当获得训练数据的相关标签后,我们通过求解式3中的优化问题来训练神经网络模型f,神经网络模型的一般结构如图所示。1>

5273862ff1553ec63b11eb279204a17b.png

E2E 模型的输入包括五个部分:Input_DF 和 Input_VLT 分别代表与需求和 VLT 相关的特征;Input_basic 是一般商品层面特征的集合,如产品类别、仓库位置和品牌名称。其余两个特征,即审查周期和初始库存水平,直接输入到其中一个隐藏层,因为它们不会与其他特征产生交叉项。E2E 模型有三个输出,主要输出out1代表最终补货决策。此外,还有两个辅助输出:out2作为需求预测,out3作为VLT预测。除DF_submodule 外,所有隐藏层均为RELU和全连接层。以防止过拟合。DF_submodule 设计为多分位数循环神经网络(MQRNN),它接收多个时间序列(如需求时间序列、促销时间序列)作为输入,并输出一组分位数上的日需求预测。训练的损失函数为:

0d7b64755d90ea26adcf786172de9095.png

其中23b035bf3bc0486378c455758bff18a2.png表示神经网络的参数,N是训练数据总数,be5c6d9612b7e9641e18ed017f7459ea.png是两个小的正惩罚常数,用于惩罚需求和 VLT 预测误差。该损失函数由3部分组成,分别为:补货策略与真实最优补货策略的决策差异,预测的需求和真实的需求的差异,预测的VLT和真实的VLT的差异。

<1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">1>

5 实验

<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:Normal假设日需求属于正态分布。则基础的库存水平计算如下:1>

7a1c1d56e7b49281e3fcf6926a2af5c5.png

其中是审查周期,834283d3abf5b44316231525e5d42c2f.png为均值,0bfedd6786aefdf7a0ed5cff13f3ff3f.png为标准差,使用包含过去 180 天需求和供应商提前期(VLT)的历史数据进行估计。

方法2:Gamma假设日需求服从伽马分布。基本库存水平计算为:

0d2589107289e148beec0edb188f771c.png

其中,8005e0cd48c763702d286e9a0166eb3d.png天的需求总和(记为a93b9952e3eb615b50a9ff594fc72e2b.png),147269c52a586b5ee04608a99d6cf2b5.png90710a6c727dc47b9756683b4f3a4ada.png的分位数函数

方法3:BM1该方法属于PTO,需求dt是已知的,需要预测时间。根据时间的长短确定总需求。

方法4:BM2该方法属于PTO,两相邻订单到货时间是已经确定的,需要预测相邻到货时间内的需求。

方法5:E2E_GBM为一种决策树的算法,由于基于树的模型不能处理时间序列特征(例如,历史需求序列),使用需求的统计摘要作为特征,包括平均值、标准差和时间差异。

方法6:OPT为真实标签值。

方法7:E2E_RNN为本文所提方法。

对于实验,输入的是包含每日销售额,历史VLT和一些其他特征的132维的向量。共有60天的数据,用24天的数据作为训练集,6天的数据作为验证。最后再用30天的数据作为测试,缺货成本为9,持有成本为1。其结果如下,可以看出E2E_RNN方法最接近真实标签值。

ef596df8f9f89edb8b998b44bf8eb1f4.png

6 结论

<1 style="color: rgb(0, 0, 0);font-family: 微软雅黑;font-size: 15.04px;letter-spacing: 1px;text-wrap: wrap;">文章创新地提出端到端(E2E)深度学习框架,经动态规划求解并标注样本以训练模型,其含需求和 VLT 预测模块及特定网络结构。通过京东数据开展数值与实地实验,与多种 PTO 方法比,E2E 模型在成本、周转率等指标表现优,于京东实践可降多项成本超 25%,验证其在电商库存管理的有效性及缩短决策流程、自动管理等优势,还为供应链管理 E2E 模型拓展提供方向,如向多层级库存设置推广、构建联合决策方案等。1>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/33784.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

STL-需求分析

本小节主要是对要实现的各个功能梳理&#xff0c;理解各个设计之间的关联。&#xff08;未完结&#xff09; 1 list数据结构 可以毫不夸张的说&#xff0c;我们整个项目都是围绕list展开的。因此&#xff0c;我们首先得清楚要使用哪种list。 有请灵魂画手登场&#xff1a; …

STM32进阶 定时器3 通用定时器 案例1:LED呼吸灯——PWM脉冲

功能 它有基本定时器所有功能&#xff0c;还增加以下功能 TIM2、TIM3、TIM4、TIM5 多种时钟源&#xff1a; 外部时钟源模式1&#xff1a; 每个定时器有四个输入通道 只有通道1和通道2的信号可以作为时钟信号源 通道1 和通道2 的信号经过输入滤液和边缘检测器 外部时钟源…

Chrome控制台 网站性能优化指标一览

打开chrome-》f12/右键查看元素-》NetWrok/网络 ctrlF5 刷新网页&#xff0c;可以看到从输入url到页面资源请求并加载网页&#xff0c;用于查看资源加载&#xff0c;接口请求&#xff0c;评估网页、网站性能等&#xff0c;如下图&#xff1a; request、stransferred、resour…

buu ciscn_2019_ne_5

下载附件然后checksec一下如图 32位的程序&#xff0c;nx保护开的&#xff0c;存在栈溢出&#xff0c;拖进ida32中看看 梳理思路&#xff1a; 简单分析并写个注释&#xff0c;这边梳理一下大致流程&#xff0c;先是输入一字符串&#xff0c;然后比对&#xff0c;然后再选择相…

如何降低DApp开发中的Gas费消耗?

Gas费是链上运行DApp时的一项关键成本&#xff0c;直接影响用户体验和应用的吸引力。过高的Gas费可能导致用户流失&#xff0c;尤其在交易密集型应用中。因此&#xff0c;优化Gas费已成为DApp开发者的重要任务。那么&#xff0c;怎样才能有效降低Gas费消耗呢&#xff1f; 1. 优…

CC工具箱使用指南:【湖北省村规结构调整表(D)】

一、简介 群友定制工具。 工具根据输入的现状用地和规划用地图层&#xff0c;生成村域和村庄建设边界内的结构调整表。 二、工具参数介绍 点击【定制2】组里的【湖北省村规结构调整表(D)】工具&#xff1a; 即可打开下面的工具框界面&#xff1a; 1、现状用地图层 2、现状…

逗号分隔、多级位置及局部更新的Sql实现

一、逗号分隔的字符串多值查询 1&#xff0c;背景 假设有一个表location_type_relation&#xff0c;其中有1个字段location_ids&#xff0c;用逗号分隔了多个标签&#xff0c;还有1个字段type_ids&#xff0c;也是用逗号分隔了多个标签 2&#xff0c;需求 现在要判断locat…

flink-connector-mysql-cdc:01 mysql-cdc础配置代码演示

flink-connector-mysql-cdc&#xff1a; 01 mysql-cdc基础配置代码演示02 mysql-cdc高级扩展03 mysql-cdc常见问题汇总04 mysql-cdc-kafka生产级代码分享05 flink-kafka-doris生产级代码分享06 flink-kafka-hudi生产级代码分享 flink-cdc版本&#xff1a;3.2.0 flink版本&…

工业-实时数据采集

1.编写新的 Flume 配置文件&#xff0c;将数据备份到 HDFS 目录 /user/test/flumebackup 下&#xff0c;要求所有主题 的数据使用同一个 Flume配置文件完成。 1. 配置概览 Flume 的主要任务是从多个来源&#xff08;如日志文件&#xff09;读取数据&#xff0c;经过处理后通过…

mmdet 加载预训练模型多卡训练过程中,存在显卡占用显存不均匀

1. 问题描述 基于mmdet https://github.com/open-mmlab/mmdetection代码仓库&#xff0c;修改了自己的检测代码&#xff0c;加载了预训练模型&#xff0c;进行分布式训练。 在训练过程中&#xff0c;出现了显卡的占用显存不均匀的问题。 如图所示&#xff0c;可以看到显卡2 占…

使用ALB将HTTP访问重定向至HTTPS

HTTPS是加密数据传输协议&#xff0c;安全性高。当企业进行HTTPS安全改造后&#xff0c;为了方便用户访问&#xff0c;可以使用ALB在用户无感知的情况下将HTTP访问重定向至HTTPS。 前提条件 您已创建ALB实例&#xff0c;并为该实例添加了HTTP监听和监听端口为443的HTTPS监听。…

力扣92.反转链表Ⅱ

题目描述 题目链接92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left …

Java版-速通ETL工具中简单的DAG执行实现

DAG作用 在ETL工具中&#xff0c;一般使用DAG图来进行任务的配置&#xff0c;将任务配置在有向无环图中&#xff0c;执行时候从首层节点&#xff0c;依次往下&#xff0c;下层节点的执行依赖于父节点是否执行完毕的状态&#xff0c;当最后一层的节点执行完成之后&#xff0c;整…

Web安全深度剖析

1.Web安全简介 ​ 攻击者想要对计算机进行渗透&#xff0c;有一个条件是必须的&#xff0c;就是攻击者的计算机与服务器必须能够正常通信&#xff0c;服务器与客户端进行通信依靠的就是端口。 ​ 如今的web应该称之为web应用程序&#xff0c;功能强大&#xff0c;离不开四个要…

策略模式的理解和实践

在软件开发中&#xff0c;我们经常遇到需要在不同算法之间进行选择的情况。这些算法可能实现相同的功能&#xff0c;但使用不同的方法或逻辑。为了增强代码的可维护性和可扩展性&#xff0c;我们可以使用设计模式来优化这些算法的实现和管理。策略模式&#xff08;Strategy Pat…

在 Linux 环境下搭建 OpenLab Web 网站并实现 HTTPS 和访问控制

实验要求 综合练习&#xff1a;请给openlab搭建web网站 ​ 网站需求&#xff1a; ​ 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! ​ 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c…

Java开发利器:IDEA的安装与使用(下)

文章目录 8. 快捷键的使用8.1 常用快捷键8.2 查看快捷键8.3 自定义快捷键8.4 使用其它平台快捷键 9. IDEA断点调试(Debug)9.1 为什么需要Debug9.2 Debug的步骤9.3 多种Debug情况介绍9.3.1 行断点9.3.2 方法断点9.3.3 字段断点9.3.4 条件断点9.3.5 异常断点9.3.6 线程调试9.3.7 …

非对称任意进制转换器(安卓)

除了正常进制转换&#xff0c;还可以输入、输出使用不同的数字符号&#xff0c;达成对数值进行加密的效果 点我下载APK安装包 使用unity开发。新建一个c#代码文件&#xff0c;把代码覆盖进去&#xff0c;再把代码文件添加给main camera即可。 using System.Collections; usin…

神经网络入门实战:(十四)pytorch 官网内置的 CIFAR10 数据集,及其网络模型

(一) pytorch 官网内置的网络模型 图像处理&#xff1a; Models and pre-trained weights — Torchvision 0.20 documentation (二) CIFAR10数据集的分类网络模型&#xff08;仅前向传播&#xff09;&#xff1a; 下方的网络模型图片有误&#xff0c;已做修改&#xff0c;具…