摘要
本博客旨在提供學生python版本的供應鏈網絡設計的例子。案例研究來自蘇尼爾•喬普拉(Sunil Chopra)和彼得•邁德爾(Peter Meindl)合著的《供應鏈管理》(The supply chain management)一書。在這篇博客中,我將第五章的例子轉換成python代碼,向學生展示約束和無約束優化如何應用於供應鏈管理。重點:由於內容較長,這篇博文主要目的是簡介案例內容,建模與程序實踐請直接拉到最後。
簡介
網絡設計在供應鏈戰略階段起着至關重要的作用。經濟行爲的根本目的是實現利潤最大化,而在供應鏈策略階段我們需要做出四個決策,包括:
- 工廠的作用
- 工廠的位置
- 資金分配
- 市場及供應源配置
這些決策的最終目標是在滿足客戶需求的條件下儘可能降低成本,以實現利潤最大化。從數學上講,網絡設計是一一系列的帶約束條件和無約束條件的最優化問題。本博客將向您展示如何將數學和經濟學聯繫起來並應用於實際。這裏,採用了《供應鏈管理》一書中的連個例子。
案例研究 I SunOil廠商分佈
SunOil是一家石化產品的製造商,產品銷往世界各地。Shecan作爲供應鏈經理,正在考慮建立設施來滿足需求。一種可能性是在一些地區建立一個設施。Shecan對北美、南美、歐洲、非洲和亞洲五個地區進行了調查。數據收集在下表中。Shecan必須決定設備的位置並分配需求以使成本最小化。
-
每個地區的年需求量是多少?
-
哪個部分顯示了我們的生產/運輸成本?
-
哪一部分向我們展示了與產能相關的固定成本?
-
可變成本和固定成本的區別是什麼?
案例研究 II 重力定位模型
鋼鐵電器(SA)是一個高品質冰箱和爐竈的製造商。SA在丹佛附近有一家裝配廠,爲整個美國供貨。需求迅速增長,南非的首席執行官決定建立另一家工廠,以服務其東部市場。供應鏈經理被要求爲新工廠找一個合適的地點。三部分工廠分別位於布法羅,波士頓,傑克遜維爾,費城和紐約。座標位置、每個市場的需求、每個零件廠所需的供應以及每個供應源或市場的運輸成本都顯示在下表中。
在shecan的程序中,shecan提供了兩種求解思路:
-
用scipy.optimization中已經有的非線性最優化模型進行求解;
-
自己寫程序用迭代法進行求解,這個方法的具體求解步驟如下:
1) 初始化工廠位置,對於每一個供應源和市場,求解距離 .
- 通過不帶限制條件最優化的一階導數條件,更新位置 .
- 如果新的位置 和原來的位置$(x,y) $差不多,則停止迭代;
4)否則,返回第一步。
- 通過不帶限制條件最優化的一階導數條件,更新位置 .
Python程序求解以上兩個問題
由於程序比較長,可以從Shecan個人的Github鏈接獲取:
SC Network Design
https://github.com/canbulajiji/Supply-Chain-Optimization
如果各位老師/同學有需要,請fork我的repo. 在這個repo中, 我提供了三個文件:
- 用Python處理最優化的簡介;
- 市場和供應商分佈研究:案例一的建模與Python求解;
- 重力模型:案例二的建模與Python求解;
題外話
這篇博文針對的是已有Python使用經驗的同學,對於沒有學過python,而對python感興趣的同學們,Shecan推薦一個從啓蒙到昇華很好很高大上很接地氣的華東師範大學的公開課:數據思維與實踐。
Github 鏈接:
課程主頁 https://github.com/neolee/wop-ecnu-pub
數據思維與實踐教材
KFCoding鏈接:
數據思維與實踐公開課
http://kfcoding.com/editor/08f81fdd4f4b48d985412ce94884c201
B站鏈接:
B站公開課鏈接
https://www.bilibili.com/video/av95201323
參考文獻
Chopra S, Meindl P, Kalra D V. Supply chain management: strategy, planning, and operation[M]. Boston, MA: Pearson, 2013.