阿裡新零售中的智能補貨(I)— 庫存模型

来源:https://www.cnblogs.com/datafuntalk/archive/2022/05/06/16230334.html
-Advertisement-
Play Games

文章作者:阿裡零售通演算法團隊 出品社區:DataFun 導讀: 零售通作為阿裡巴巴新零售的八路大軍之一,肩負著“共建智能分銷平臺”和“讓百萬小店擁抱DT時代”的重要使命。一方面,我們通過線上平臺(零售通APP)將零售品牌商的貨品展現給小店的店主,並提供交易渠道讓店主進行批發進貨;另一方面,我們通過天 ...


文章作者:阿裡零售通演算法團隊

出品社區:DataFun


導讀: 零售通作為阿裡巴巴新零售的八路大軍之一,肩負著“共建智能分銷平臺”和“讓百萬小店擁抱DT時代”的重要使命。一方面,我們通過線上平臺(零售通APP)將零售品牌商的貨品展現給小店的店主,並提供交易渠道讓店主進行批發進貨;另一方面,我們通過天貓小店和如意POS對小店進行賦能,幫助他們線上下的銷售中能迅速發現C端消費者的需求,提升小店的坪效。 在這種B2B2C的創新分銷模式中,智能化的供應鏈體系不僅要保證平臺能持續穩定的為小店進行供貨,還要控制供應鏈成本,讓數字化渠道成為最經濟的分銷方式。

我們在不斷迎接新零售模式下供應鏈各種挑戰的過程中,逐漸沉澱出一套利用大數據和智能演算法解決供應鏈補貨的方法論,在這裡與大家分享。本系列分為兩部分:第一部分主要介紹智能補貨的庫存模型;第二部分會詳細介紹補貨模型中的銷量預測演算法以及我們在預測中用的一些經驗和方法論。 本篇將對第一部分,即智能補貨的庫存模型進行介紹。

--

01 為什麼需要智能補貨

零售通作為連接商家、小店和C端消費者的數字化分銷平臺,保障貨品供應的持續性和穩定性成為供應鏈的首要目標之一。不同於天貓、淘寶等直接面向C端消費者的平臺,零售通直接觸達的用戶是小店的店主。他們在平臺上進行採購的主要目的之一是用於補貨。如果此時需要補充的貨品在平臺上已售罄,這不僅會損失平臺的成交額(GMV),也造成了店內的貨品供應不足,導致小店的收入降低。另一方面,如果為了最大化保障供應率,而將一大批貨品囤積在零售通的倉庫中進行售賣,則有可能導致某些貨品長時間賣不出去,增加了庫存周轉時間和滯銷率,降低了供應的效率。

因此,供應鏈補貨的目標是通過供應方式(供應時間,供應數量,供應周期等)的決策達到倉庫中需求和供給的平衡,使得倉庫中貨品的庫存既可以最大化滿足用戶的需求,也能將庫存周轉時間控制在一定範圍之內,保證供應的效率。(因此在很多行業中,供應鏈補貨又叫做“庫存平衡”。)

file

在某些傳統行業中,供應鏈的補貨任務大部分還是通過人工完成。一方面,傳統行業的渠道信息數字化大多構建得不完善,無法完全通過數據實現精準補貨;另一方面,傳統行業的計算能力有限,在求解某些優化問題中無法實現大規模的複雜計算。而零售通背靠阿裡巴巴集團這顆參天大樹,不僅在數據獲取渠道上突破了線下渠道數據的限制,還在計算資源上得到了充分的保證。這些優勢為零售通供應鏈在智能補貨演算法的應用和發展提供了成長的土壤,使得通過基於機器學習和運籌學構建的智能補貨演算法體系成為可能。

--

02 庫存理論(inventory theory)

無論是傳統零售還是新零售,貨品都會經歷從生產製造到分銷、再到消費整個周轉過程。分銷中的每個環節都需要維持一定貨品庫存來應對需求的不確定性。因此,分銷商或者零售通都需要解決以下三個問題並作出正確的決策:

  1. 未來某段時間的需求是多少?

  2. 需要為未來的需求準備多少貨?

  3. 每天的庫存水位是多少?

無論作出何種決策,這三個問題都可以用“進-銷-存”模型來描述。

file

該模型需要進行連續決策,即以上三個問題不是一次性決策,而需要周而複始的不斷進行下去。另外,上一次的決策結果(補貨數量)會影響下一次決策狀態(當前庫存)。用數學可以對此過程進行如下描述:

file

其中 file是 t 時刻的貨品在庫數量,file是需要進行決的 t 時刻的補貨量,file是 t 至 t+1 時刻的需求量總和。t 到 t+1 是兩次決策的時間間隔,取決於補貨的具體形式。

在“進-銷-存”過程中,會發生成本的支出。進貨時會產生訂購和運輸成本;貨品儲存在倉庫中會產生存儲成本(比如倉租和管理成本);貨品售賣後會產生配送成本。

t 時刻的總成本可以用 file 來表示,它是進貨量、在庫數量和需求量的函數圖片。供應鏈補貨所採取的決策目標就是在滿足需求的情況下,最小化過程中產生的總成本。

file

在運籌學中,該模型被形式化,並擴充為庫存理論(Inventory theory),作為該學科的一個分支。庫存理論在建立後的近80年中不斷演化發展,為各行各業的生產製造和庫存存儲提供指導,發揮著十分重要的作用。有興趣的讀者可以進一步閱讀[1][2],以獲得庫存理論更多的細節。

--

03 安全庫存模型(safety stock)

上面的庫存理論講到補貨的決策目標是在滿足需求的情況下,最小化供應成本。作為模型的一種簡化,我們先忽略成本因素,僅考慮如何決策才能滿足用戶的需求。

顯而易見,如果不考慮成本,最佳的供應方式就是“用戶買多少就進多少貨”。但現實中進貨總是發生在用戶購買之前的,即“先進貨,再售賣”。因此決定當前進多少貨就變成了對未來的需求量預測。從統計學的角度,未來某段時間的需求服從一定的統計分佈:

file

對模型作進一步的簡化,我們假設需求服從的分佈是正態分佈:

file

其中均值 file 和標準差 file 是待確定的參數。根據“進-銷-存”模型,當給定 t 時刻的庫存時,t+1 時刻 的庫存 file 也服從正態分佈:

file

如果file ,說明 t 到 t+1 時刻的需求能被充分滿足;反之則會發生缺貨,導致成交額的損失。

從正態分佈的性質我們知道,無論我們如何增大補貨量,都無法100%的保障用戶的需求,因為正態分佈分佈的最大值是∞。(當然現實中不可能發生需求∞的情況,但是有可能是一個很大的數值,比如雙11促銷時的需求。)這裡我們引入一個名詞叫做服務水平(service level - sl),它表明需求有多大的概率可以被滿足。對於單個貨品來說,服務水平 = 1- 缺貨概率;而對於多個貨品,服務水平 = 1 - 缺貨率。通常我們所說“將缺貨率控制在5%”,即相當於“將服務水平提升至95%”以上。對於服從正態分佈的 file 來說,我們可以將服務水平通過積分表達出來:

file

等式右邊的積分可以用誤差函數進一步表示:

file

如果要保證服務水平大於95%,則需要誤差函數滿足:

file

通過查表可得:

file

上面不等式的右邊部分就是在圖片時刻滿足95%服務水平的最小補貨量。

file

不難看出,為了滿足較高的服務水平,我們不僅需要補足正常需求量(這裡叫做需求量的均值),還要考慮需求波動帶來的不確定性。為保證需求波動所額外準備的庫存,就叫做安全庫存(safety stock - SS)[3]。一般來說,安全庫存可以表示為以下形式[4]:

file

其中Z值對應了 file服務水平下的顯著繫數,服務水平越高,Z值越大。安全庫存僅與服務水平和需求的標準差有關,與需求本身的數量無關。

--

04 現實中的限制

安全庫存模型僅考慮了為滿足需求而求解得到的補貨量最小值,但現實情況比該模型複雜得多。首先需要指出當補貨訂單下發後,貨品不會馬上入倉進行銷售。在這期間供應商需要及時作出響應,併進行生產備貨。在供應商發貨後,貨品還需要通過物流到達目的倉庫,在這期間也會產生時間的延遲。我們可以定義補貨訂單下發到貨品到倉的總體時間延遲為供應商交付時間(vendor leading time-VLT)。該交付時間我們我可以與供應商協商,保證交付時間小於一定的天數,也可以根據該供應商的歷史表現統計得到。在第一種情況下,我們可以認為VLT是一個定值,那麼安全庫存模型得到的最小補貨量只需要做稍微的改變:

file

其中需求的均值和標準差只需要改變為“t+1時刻再向前數VLT時間至t時刻”的需求分佈均值 file 和標準差 file 。後一種情況稍微複雜一些,因為根據歷史統計得到的VLT也是一個分佈。可以證明,在單位時間的需求分佈不變且需求和VLT分別獨立的服從正態分佈的情況下,最小補貨量可以表示為[5]:

file

其中filefile 分別是單位時間需求的均值和標準差,filefile 分別是VLT的均值和標準差。

除了VLT之外,成本也是安全庫存模型沒有考慮的因素。成本分為物流成本和庫存成本。在需求一定的情況下,如果訂貨太多,則會提升庫存周轉天數,增加庫存成本。如果訂貨太少,則在供應商配送過程中貨品裝不滿一車,導致物流成本率的增加。庫存理論中有一種“經濟訂購批量”模型(economic order quantity - EOQ)[6]來最優化訂貨量,使得總成本最低。在零售通的供應鏈模式中,我們主要通過庫存周轉天數和最小起訂量(minimum order quantity - MOQ)來近似表達成本的限制。

在零售通平臺上,庫存周轉天數是指貨品從入倉到銷售之間存儲在倉庫中的天數。某個單品的庫存周轉天數越長,說明該單品所消耗的庫存成本越高。最小起訂量是一個補貨訂單中包含貨品金額的最小值。如果訂單中的補貨量小於最小起訂量,說明供應商的物流成本過高,不會進行發貨供應。最小起訂量是對一個供應商下的多個貨品而言的,因為某一次補貨訂單可以包含多個單品的補貨量。

除了考慮成本的因素,我們還需要考慮倉庫收貨的產能。倉庫的收貨發貨需要人工作業,每天處理的訂單量是有限的。如果某次補貨的數量過大,導致倉庫無法及時收貨,則有可能導致貨品無法入倉而發生損壞。另一種限制是“整箱補貨”,因為在銷售上可以零售,但供應上只能整箱批發。補貨模型需要作出相應的調整來滿足以上種種限制。

這一系列現實中的限制條件都使得一個簡單的需求平衡問題變得複雜化。事實上,這裡僅列出了零售通平臺上需要考慮的主要限制。在不同的場景下(比如雙11大促),限制條件將會變得更多更複雜。這導致了很多現實問題無法被數學形式化和模型化,從而給不出演算法最優解。這也是新零售場景中供應鏈補貨演算法需要迎接的挑戰和解決的難題。

--

05 整數線性規劃(ILP): 一個簡單的補貨模型

基於上述限制條件,我們可以基於安全庫存模型進一步改進補貨模型。首先我們應該定義一個優化的目標,比如“最小化整體庫存周轉天數”。優化該目標需要滿足以下限制:

1)保證每個貨品的服務水平大於file

2)供應商的最小起訂量大於元Q;

3)訂單中補貨總量不超過倉庫產能件K。

其它的限制暫時不考慮,因為它們並不影響我們對該問題的闡述。但其中有一個隱含的限制需要說明,就是即使不用整箱補貨,每個單品也只能“一件一件的補”,比如不可能補1.5個貨品。

下麵我們將用數學形式化的表達優化目標和每一個限制。首先對一些變數和下標進行定義:

file

限制1: 每個貨品的服務水平大於 file (安全庫存模型):

file

限制2: 供應商的最小起訂量大於Q元:

file

限制3: 訂單中補貨總量不超過倉庫產能K件:

file

限制4: 單品的補貨數量大於0且為整數

file

優化目標:最小化整體庫存周轉天數。(因為單品庫存周轉天數是需求的函數,如果需求隨著時間變化,則無法將其表示為線性的形式。這裡為了簡單起見,假設每天的需求分佈不變。)

file

優化目標和限制條件均為關於 file 的線性表達式,加上 file 必須是整數的限制,可以很容易看出該問題是一個整數線性規劃(integer linear programming - ILP)[7],可以通過很多演算法工具包(比如cplex,gurobi等)進行求解。上面的公式寫成更加緊湊的形式為:

file

該整數規劃模型雖然是對複雜的真實環境進行了簡單的抽象,但它卻反映了供應鏈補貨的本質。我們可以形象的描述為“在鋼絲上跳舞”。首先我們的決策不是自由的,它需要在各種“條條框框”(比如MOQ、產能、整箱補貨等)中進行;其次補貨時不能“用力過猛”,補得太多會導致庫存周轉天數上升,成本增高;也不能用力過輕,補得太少會導致需求無法被充分滿足,導致成交額的損失。而整數規劃模型正是描述了這種“恰到好處”的決策。而這種恰到好處不僅需要我們深入的理解新零售業務,並對此進行模型抽象,也需要我們對未來的需求以及需求的波動性進行準確的預測。下一期我們將著重討論如何預測未來的需求分佈,以及大數據和智能演算法在其中的應用。

--

06 參考文獻

  1. Zipkin Paul H., Foundations of Inventory Management, Boston: McGraw Hill, 2000, ISBN 0-256-11379-3

  2. Porteus, Evan L. Foundations of Stochastic Inventory Theory. Stanford, CA: Stanford University Press, 2002. ISBN 0-8047-4399-1

  3. Monk, Ellen and Bret Wagner. Concepts in Enterprise Resource Planning. 3rd Edition. Boston: Course Technology Cengage Learning, 2009

  4. Steven Nahmias, Production and Operation Analysis, Irwin 1989

  5. https://en.wikipedia.org/wiki/Safety_stock

  6. Harris, Ford W. Operations Cost (Factory Management Series), Chicago: Shaw (1915)

  7. https://en.wikipedia.org/wiki/Integer_programming



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 我們知道在C#和Java明顯的一個區別就是C#可以自定義值類型,也就是今天的主角struct,我們有了更加方便的class為什麼微軟還加入了struct呢?這其實就是今天要談到的一個優化性能的Tips使用結構體替代類。 那麼使用結構體替代類有什麼好處呢?在什麼樣的場景需要使用結構體來替代類呢? ...
  • 接上篇文章講了 Ubuntu 18及以上版本的配置方法,本文再來講講 CentOS 8 及以上版本配置 IP 的方法。 Centos/Redhat(8.x) 配置 IP 方法 說明:CentOS 8 是新發佈的系統(發佈時間:2019.9),IP 配置方式和以前版本不一樣。使用 NetworkMan ...
  • Linux 系統中,最常用的歸檔(打包)命令就是 tar,該命令可以將許多文件一起保存到一個單獨的磁帶或磁碟中進行歸檔。不僅如此,該命令還可以從歸檔文件中還原所需文件,也就是打包的反過程,稱為解打包。 使用 tar 命令歸檔的包通常稱為 tar 包(tar 包文件都是以“.tar”結尾的)。 tar ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 Ubuntu 暫時不能解析功能變數名稱及解決辦法 可能的解決方案:重啟虛擬機網卡 前提:主機使用無線網,Win10;虛擬機採用NAT模式,Ubuntu20.04 最近移動過vmware的文件,導致虛擬機開機後使用sudo apt-get時會提示暫時不能解 ...
  • 在Linux環境下,使用Shell腳本自動備份資料庫,需要用到 crontab 定時任務,以下是使用 mysqldump 方式對資料庫備份 1、新建shell腳本,這裡命名為 dbbackup.sh /usr/bin/mysqldump -u用戶名 -p密碼 -h 資料庫IP -R --opt 要備 ...
  • 5、1 設定像素 設定像素一般用四個位元組,最高位省略不用。 // 5-1-PWCP_設定像素_顏色.cpp : 定義應用程式的入口點。 // #include "framework.h" #include "5-1-PWCP_設定像素_顏色.h" #define MAX_LOADSTRING 100 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 1 您需要瞭解 安裝源您可訪問 CentOS官網 / 阿裡雲鏡像站 等 進行下載 CentOS 7 系列其他版本安裝方法一致 為更好顯示文章層次結構,便於觀看,您可點擊左上角目錄按鈕進行瀏覽 2 安裝過程 2.1 啟動項 Install Cent ...
  • 本文例子參考《STM32單片機開發實例——基於Proteus虛擬模擬與HAL/LL庫》 源代碼:https://github.com/LanLinnet/STM33F103R6 項目要求 實現矩陣鍵盤掃描,當按下任意一個按鈕時,數位管立即顯示當前按下按鈕對應鍵值。 硬體設計 在第一節的基礎上,在Pr ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...