供應鏈單級多週期庫存補貨模型
1. 經典EOQ模型及其基本假設
1.1. 什麼是EOQ
EOQ
,即 經濟訂購批量模型,是庫存模型的理論基礎,也是庫存理論的基礎模型,其核心是:在訂貨成本與庫存成本之間尋找一個平衡,使得訂貨能夠滿足市場預估需求,而且成本最小化。可以用下面的一幅圖來表示,訂貨成本逐漸下降,是因爲隨着訂貨量的增加,可以拿到數量價格折扣,同時單位運輸成本也會下降,這是符合人們的直覺的,但是隻要訂貨就會產生庫存費用,而且庫存費用是遞增的。因此,一定有一個平衡點,使得訂貨成本和庫存持有成本最小化的。
基於EOQ模型,學界和工業界根據具體的市場情況發展並豐富了EOQ模型,包括多級庫存理論,需求變化和庫存成本變化的EOQ,時變運輸週期的EOQ,能力受限的EOQ 等,因此,我們要知道,EOQ雖然重要,但是也包含着極大的缺陷,很難直接應用在現實的供應鏈採購和倉儲管理之中,當然現實中還是有很多產品是符合EOQ的基本假設要求的,比如方便麪,牙膏,大米等不受季節因素或其他市場因素明顯影響且銷量穩定的產品,當然,真正頭疼的並不是這類型的產品。
1.2. EOQ基本假設
不管學習什麼數學模型,總是要先看其基本假設和適用範圍,EOQ也不例外。
EOQ的基本假設如下:
- 不允許缺貨,即缺貨費用Cs無窮大。
- 當庫存將至零,可以立即得到補充(生成時間很短,可以近似看做零)。
- 需求是連續的,均勻的,需求速率是R
- 每次訂貨量Q不變,訂購費C0不變(每次生產量不變,裝配費不變)。
- 單位存儲成本不變。
其補貨和庫存變化如下圖:
1.3. EOQ的數學推導
一個週期t內的總存儲量爲:
一個週期t內的總費用 F(t)
=訂購費+存儲費+貨物成本費
=訂購費率 x 訂購次數+總存儲量 x 存儲費率+貨物單價P x 貨物總需求量
=
單位時間內的總費用(庫存系統總費用率)爲:
其中: ,前者是單位時間的訂購費,後者是單位時間的存儲費,PR是常數,在考慮存儲系統總費用時,PR可以忽略不計。
最優存儲策略:
在求極值的數學問題中,另導數爲零,可以得到最優的訂購策略。
另 ,得
- 1 最佳訂購批量(或最大庫存量)
這就是著名的經濟訂購批量檢查EOQ公式.
- 2 最優存儲週期(訂貨週期)
- 3 最優總存儲費用
2. 需求變化的EOQ模型
需求變化的EOQ描述
從經典的EOQ模型假設出發,我們看到,EOQ假設需求穩定且恆定,每個週期的訂貨量都是一定的,而且週期長度都一樣,在現實中有很多產品不是這樣的,特別是有明顯季節性的服裝產品,有明顯生命週期的電子產品,在每個週期內的銷量明顯不一樣,上市前期進行試推廣預售,然後銷量快速上升,過了銷售旺季或者生命週期頂峯後,進入衰退期,銷量趨勢如下圖:
動態規劃求解需求變化問題
對於多週期訂購問題,可以通過動態規劃的方法求解。
其實從人腦的簡單思維來說,遇到這種組問題,首先想到的不是什麼算法,而是暴力搜索,一個個數湊總是能湊出來的。而動態規劃,就是暴力搜索的一種改進,可以以你想不到的效率找到最優解,而不是一個個組合參數去嘗試。
多說一個,其實很多智能優化算法,其本質也是這種暴力搜索的改進,本質很是暴力搜索。說來也有趣,智能優化算法是沒有嚴格的數學推導的,但是結果還不錯,比如粒子羣算法,遺傳算法,禁忌搜索算法等。
這裏講一下使用動態規劃求解的方法,使用運籌學中的一個例子說明問題,把生產換成採購,就是最開始說的EOQ問題了。
問題描述如下:
未來3個月的銷量預測已知,爲3w,4w,3w,如果啓動生成,則啓動費用爲3萬每次,而且每個產品的成本是1元,每件產品的每月的存儲費用爲0.7元。
第一個月和第四個月的庫存爲0,求最優生產計劃。
–>1月
–>2月
–>3月
–>4月
變量如下:
k
: 表示不同的階段,這裏有4個月,則k=1,2,3,4
Sk
:表示月初庫存,因爲第1,4個月的月初庫存爲0,則S1=0, S4=0
xk
:表示決策變量,即當月要生產的量,1月肯定是要生產的,因爲此時庫存爲0,而且1月生產的可以留着以後買,如果1月生產未來全部月份的需求,則1月最大生產爲10w,同理,2月生產的只能是2月和3月賣,因此2月最大生產7w,3月最大生產3w。
x1={3,4,5,6,7,8,9,10}, x2={0,1,2,3,4,5,6,7}, x3={0,1,2,3}
狀態轉移方程:
是每月的需求量, 是月初庫存
階段指標函數(成本=生產費用+存儲費用)
遞推方程:
3. 考慮訂購提前期的EOQ模型
在前面的EOQ假設中,有一個假設就是補貨能力無窮大,能夠做到瞬時補貨。什麼意思呢,就是我在1號下單,貨物馬上就能送到倉庫。這是不符合現實情況啊,就算是京東物流起碼也要半天啊,國內快遞一般2-3天,因此這也是EOQ不合理的地方。
但是不影響我們使用啊,因爲我們可以通過業務流程優化來到達瞬時補貨的功能。
比如,EOQ模型中,4月1號需要補貨,實際的訂購提前期是5天,那麼我們只要在3月25日下達訂單,那麼4月1日就會有一批貨物到達倉庫入庫,和EOQ模型保持一致了。如下圖:
4.動態規劃求解多週期庫存python代碼
待補充.