1. 业务背景

电子商务公司或传统零售公司在生产销售中, 一般会自建或租用多个仓库来存储商品. 这些仓库一般分布在不同地区用来覆盖区域中的客户. 当客户下达订单后, 商品一般会从客户所在区域的仓库发货, 然后通过承运商送达客户手中. 由于不同客户购买的商品和数量可能不同, 因此单个仓库的商品可能会发生供需不均的情况.

例如, 某个商品在仓库A发生了缺货, 但在仓库B却可能产生积压. 这样一来, 仓库A附近的客户要么无法购买该商品, 因而公司会损失销售利润; 要么客户成功下单, 但是商品会从比较远的仓库B发货, 从而造成更高的物流费用和更长的运输时间.

为了增加销售利润, 降低供应链的配送成本并提升配送时效, 我们希望仓库出现缺货或商品积压之前, 对多个仓库之间的商品执行库存平衡计划. 尤其在电商业务中, 商品的种类多达上万种, 因此供需不均的情况常有发生. 为了减少损失, 我们需要定期对所有仓库和商品制定库存平衡计划, 然后对其合理性进行验证, 最终实施计划. 在实施过程中,我们不仅要考虑车辆调度成本还要考虑仓库的处理能力等业务因素.

在这样的背景下,我们需要一套系统能实现如下功能:

  1. 计算库存平衡计划. 算法需要支持10万+商品数量和1000+仓库数量的计算.
  2. 计算调度方案. 包括商品的数量, 箱数, 商品的流向(从哪来到哪去), 车辆安排等.
  3. 考虑复杂的业务约束. 在实际的执行中, 由于仓库人力有限, 车辆数量和容量有限等多种因素制约, 算法提供的调度计划必须满足实际的业务约束.
  4. 优化业务目标. 算法的结果尽量使得业务目标最优, 例如降低成本, 提高效率.
  5. 支持灵活的调拨策略. 不同商品, 不同时期可能有不同的业务目标, 因而需要不同的调拨策略. 这样一来, 系统要求调度算法可插拔, 可配置.

2. 算法架构

完整的算法架构(图1)主要从四个层面来考虑:

首先是数据层, 它包含了基础数据(例如商品销量和库存), 业务数据(例如运费, 仓库的地理位置, 仓库的处理能力等数据), 算法配置(参数配置, 模型配置)和计算结果(中间结果, 最终结果).

第二是算法层. 这是算法设计和实现的核心部分, 它包含了四个计算步骤: 需求计算, 需求平衡, 流向计算和车辆调度. 详细的模块介绍参考下文(第三节).

第三是分析层. 主要做两块工作: 一是分析数据输入和算法输出, 包括异常数据和统计结果(例如调度sku数量/车辆数/库存状态等); 二是对算法模型自身以及业务目标的评估.

最后是接口层. 把所有功能封装成统一的接口, 方便前端业务系统进行调用.

3. 算法模块介绍

算法流程如下图所示.

下面我们分别介绍各模块的功能.

3.1 需求计算

输入: 商品在各仓库的历史销量, 商品在各仓库的当前库存和在途库存.
输出: 各仓库中商品的多余量和不足量.

仓库中商品的多余量和不足量称为仓库的需求. 一般来说, 仓库的需求取决于商品的历史销量和业务目标. 商品的销售速度越快, 需要准备的库存量也越大; 商品的重要性越高, 仓库需要准备的安全库存也会越大. 此外, 大促期间(例如双11)和平销期间需求计算的方式也会有所区别.

综上所述, 需求计算我们应该注意以下几点:

  1. 需求计算一般依赖销量预测, 但销量是无法准确预测的. 销量预测不是最终目的, 它的输出形式取决于需求计算的模型. 在实际中, 我们应该在算法模型中充分考虑销量的不确定性.
  2. 不同商品/不同时期的需求计算方式可能不相同.

3.2 需求平衡

输入: 仓库的需求(不足量/多余量).
输出: 仓库的需求使之满足平衡性.

我们用一个例子来说明平衡性约束: 考虑一个商品和4个仓库A,B,C,D. 其中仓库A的多余量是200. 仓库B, C, D的不足量分别是100, 200, 300. 此时"总多余量"与"总不足量"是不相等的, 因此需求是不平衡的. 需求平衡模块的作用是用算法分配需求, 使得总多余量等于总不足量.

注意: 需求平衡的策略不应该是唯一的, 实际执行的平衡策略应取决于业务目标.

3.3 流向计算

输入: 仓库的需求(满足平衡性).
输出: 商品流向, 即三元组 – (调出仓库, 调入仓库, 商品的调拨数量)

我们用一个简化的例子来说明流向计算问题(图3):

问题 如何计算商品流向使得运输成本最低?

注意两点:

  1. 一般来说, 流向计算的业务目标是降低运输成本. 输入还应该包含与业务目标和约束相关的数据(例如单位运费).
  2. 实际业务中的限制条件可能更多, 应该根据具体业务进行建模.

3.4 车辆调度

输入: 商品流向.
输出: 各仓库的车辆调度安排, 包含运输车辆和对应的商品数量.

该模块需要考虑较多的业务限制, 例如:

  1. 仓库的处理能力(例如调拨商品总数量, 总体积数)
  2. 商品的体积和包装箱的容量
  3. 货车的容量
  4. 货车的成本

4. 分析模块介绍

  • 异常数据: 监控底层数据(例如历史销量, 库存)是否出现异常. 如发现异常, 应该处理异常或报警, 避免导致库存平衡和调度方案出错.
  • 统计报告: 输出算法模块的中间结果和最终结果, 包含算法模型, 参数相关的信息, 从而辅助业务方决策.
  • 模型评估: 建立科学的计算指标, 用来评估算法模型的好坏.
  • 收益分析: 根据业务指标(例如成本的降低, 时效的提升), 评估算法产生的收益极其上界.

库存平衡与调拨系统的算法架构相关推荐

  1. 进销存ERP系统、销售单、采购单、退货单、库存管理、库存盘点、调拨、借入、借出、出库、入库、归还单、收款单、付款单、资金流水、销售报表、采购报表、库存报表、财务报表、商品库、电商erp、连锁erp

    进销存ERP系统.销售单.采购单.退货单.库存管理.库存盘点.调拨.借入.借出.出库.入库.归还单.收款单.付款单.资金流水.销售报表.采购报表.库存报表.财务报表.商品库.电商erp.连锁erp A ...

  2. 进销存ERP系统、销售单、采购单、退货单、库存管理、库存盘点、调拨、借入、借出、出库、入库、归还单、收款单、付款单、资金流水、销售报表、采购报表、库存报表、财务报表、商品库、电商erp、连锁erp 1

    进销存ERP系统.销售单.采购单.退货单.库存管理.库存盘点.调拨.借入.借出.出库.入库.归还单.收款单.付款单.资金流水.销售报表.采购报表.库存报表.财务报表.商品库.电商erp.连锁erp A ...

  3. 自然语言处理技术(NLP)在推荐系统中的应用 原2017.06.29人工智能头条 作者: 张相於,58集团算法架构师,转转搜索推荐部负责人,负责搜索、推荐以及算法相关工作。多年来主要从事推荐系统以及机

    自然语言处理技术(NLP)在推荐系统中的应用 原2017.06.29人工智能头条 作者: 张相於,58集团算法架构师,转转搜索推荐部负责人,负责搜索.推荐以及算法相关工作.多年来主要从事推荐系统以及机 ...

  4. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

  5. 客服系统微服务架构的演化

    客服系统微服务架构的演化 微服务要求 服务协作 服务治理 服务治理 1 怀疑第三方 坚持一条信念:"所有第三方服务都不可靠",不管第三方什么天花乱坠的承诺.基于这样的信念,我们需要 ...

  6. 【学习笔记】《基于φ-OTDR的分布式扰动传感系统定位算法研究-北交-通信与信息系统-吴》重点笔记

    目录 一.绪论 1.1 引言 1.2 分布式光纤传感技术 1.2.1 基于瑞利散射的分布式光纤传感技术 1.2.2 基于拉曼散射的分布式光纤传感技术 1.2.3 基于布里渊散射的分布式光纤传感技术 1 ...

  7. 设计一个高性能三维渲染服务器,第一人称视角三维实景漫游系统渲染流水线架构研究.pdf...

    文档介绍: 同济大学 硕士学位论文 第一人称视角三维实景漫游系统渲染流水线架构研究 姓名:张岩 申请学位级别:硕士 专业:结构工程 指导教师:谢步瀛 20040301 关键词摘要计算机辅助三维实景漫游 ...

  8. java计算机毕业设计库存管理系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计库存管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计库存管理系统源码+系统+数据库+lw文档+mybatis+运行部署 本源码技术栈: 项目 ...

  9. 腾讯技术开放日 | 腾讯会议如何构建实时视频传输算法架构,来实现用户体验质量最优?

    在实时视频通讯中,要达到终端用户的体验质量(QoE)最优,需要实现实时视频传输的信号质量和交互性最优,而时延和带宽是有限的,如何衡量取舍对有限资源进行分配,成为构建腾讯会议实时视频传输算法架构的核心问 ...

最新文章

  1. SpringBoot 拦截器和过滤器
  2. python 余弦_Python快速余弦距离
  3. 从输入 URL 到页面加载完成的过程中都发生了什么
  4. mysql 控制台操作命令
  5. Java 技术篇 - 前端浏览器发送一次url请求后端ServerSocket接收到两次请求原因及解决方法,GET /favicon.ico HTTP/1.1问题处理
  6. 设计模式- 策略模式
  7. Luogu P2577 [ZJOI2005]午餐
  8. Running Hero.
  9. Github 星标 8K+ 这款国人开源的 Redis 可视化管理工具,真香...
  10. Milvus以图搜图环境搭建
  11. 抖音直播带货怎么开通?最新政策及直播带货话术技巧!
  12. [蓝桥杯]三升序列(Python实现)
  13. MacM1-Miniconda相关合集
  14. Linux-新建用户/群组以及修改文件权限
  15. 20,000 字帮你搞定策略模式!
  16. SpringBoot上传文件并储存到本地(记录)
  17. Unity Joystick手势操作
  18. Arduino蜂鸣器与按键的结合
  19. 亚马逊AWS云架构支柱与数字化转型
  20. 微信小程序开发—小程序开发入门

热门文章

  1. c语言数组初始化未赋值则默认是任意还是0?
  2. 终于解决了悬疑好多年的低版本CAD VBA不能在高版本CAD使用的问题
  3. python实现模拟器的重启
  4. 图像特征— —SURF特征
  5. map的insert和emplace比较
  6. 【NLP】第 4 章 :Hugging Face
  7. Unity导表工具开发(一)
  8. 普通人如何成为大师——《刻意练习》读书笔记
  9. Ryzen Master只能在Windows操作系统中禁用基于虚拟化的安全性(VBS) 解决方案
  10. 探究影像辨識裡的臉部偵測技術(五)