版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
現(xiàn)代庫(kù)存管理:模型、算法與Python實(shí)現(xiàn)第10章某零食企業(yè)W庫(kù)存策略優(yōu)化實(shí)戰(zhàn)10.1背景介紹企業(yè)W是一家以零食為主要產(chǎn)品的企業(yè):來(lái)自線上需求激增,需求結(jié)構(gòu)日趨復(fù)雜非必要庫(kù)存高,熱銷商品缺貨暴露了傳統(tǒng)庫(kù)存管理模式的低效滯后企業(yè)的發(fā)展趨勢(shì)和轉(zhuǎn)型需求:由人工預(yù)測(cè)、手工計(jì)劃的模式的數(shù)字化轉(zhuǎn)型將海量數(shù)據(jù)的價(jià)值充分利用起來(lái)建立一個(gè)智能化的補(bǔ)貨系統(tǒng)10.1背景介紹試點(diǎn)規(guī)模:該系統(tǒng)的功能需求:提供多種基于歷史銷量數(shù)據(jù)擬合產(chǎn)品需求分布的擬合工具給定庫(kù)存策略下,策略參數(shù)與安全庫(kù)存量的自動(dòng)化計(jì)算提供一套庫(kù)存策略模擬仿真工具進(jìn)行成本評(píng)估200+SKU1天/3天/7天的盤(pán)貨周期2至7天不等的提前期10.2數(shù)據(jù)集概況數(shù)據(jù)規(guī)模:表一數(shù)據(jù):‘sku_id’:產(chǎn)品id‘date’:銷售日期‘sale’:銷量2020年8月1日開(kāi)始,到2021年1月31日為止6個(gè)月的銷量數(shù)據(jù)前四個(gè)月的數(shù)據(jù)作為訓(xùn)練集(train_df)后兩個(gè)月為測(cè)試集(test_df)datesku_idsale02020-08-01SKU0016.012020-08-01SKU002722.022020-08-01SKU00310.032020-08-01SKU0049.042020-08-01SKU0057.010.3需求預(yù)測(cè)參數(shù)化方法:調(diào)用Python的scipy.stats統(tǒng)計(jì)工具包進(jìn)行分布擬合:正態(tài)分布擬合伽馬分布擬合泊松分布擬合對(duì)數(shù)正態(tài)分布擬合defget_para_policy(sales_qty,rep_time,dist_type,target_csl,
sample_size=1000):
"""
Args:
sales_qty:銷量數(shù)據(jù)
rep_time:補(bǔ)貨周期
dist_type:指定擬合分布類型
target_csl:期望的周期服務(wù)水平
sample_size:樣本量
Return:
dist_paras:擬合出的需求分布參數(shù)
oul:目標(biāo)庫(kù)存水平
ss:安全庫(kù)存量
"""
ifdist_type==
'normal':
dist_paras=stats.norm.fit(sales_qty)
dist=stats.norm(*dist_paras)10.3需求預(yù)測(cè)代碼續(xù):elifdist_type==
'gamma':
dist_paras=stats.gamma.fit(sales_qty)
dist=stats.gamma(*dist_paras)
elifdist_type==
'poisson':
dist_paras=np.mean(sales_qty)
dist=stats.poisson(dist_paras)
elifdist_type==
'lognormal':
dist_paras=stats.lognorm.fit(sales_qty)
dist=stats.lognorm(*dist_paras)
else:
raise
Exception
#根據(jù)分布,構(gòu)造補(bǔ)貨周期內(nèi)需求樣本
rep_time_sample=[sum(dist.rvs(rep_time))for_inrange(sample_size)]
oul=np.quantile(rep_time_sample,target_csl)
ss=oul-np.mean(rep_time_sample)
returndist_paras,oul,ss10.3需求預(yù)測(cè)參數(shù)化方法:假設(shè)每天的需求獨(dú)立,構(gòu)造補(bǔ)貨周期內(nèi)需求樣本#根據(jù)分布,構(gòu)造補(bǔ)貨周期內(nèi)需求樣本
rep_time_sample=[sum(dist.rvs(rep_time))for_inrange(sample_size)]
oul=np.quantile(rep_time_sample,target_csl)
ss=oul-np.mean(rep_time_sample)
returndist_paras,oul,ss對(duì)于’SKU001’,使用正態(tài)分布進(jìn)行需求擬合:
sku=
'SKU001'
sku_sales_qty=train_df[train_df['sku_id']==sku]['sale'].values.tolist()
normal_dist_paras,normal_oul,normal_ss=get_para_policy(sku_sales_qty,rep_time_dict[sku],
'normal',0.9)print('使用正態(tài)方法進(jìn)行擬合,估計(jì)得到的均值為:%.2f,標(biāo)準(zhǔn)差為:%.2f'
%(normal_dist_paras[0],normal_dist_paras[1]))
print('目標(biāo)庫(kù)存水平為:%.2f'
%normal_oul)
print('安全庫(kù)存量為:%.2f'
%normal_ss)估計(jì)得到的均值為:26.16,標(biāo)準(zhǔn)差為:61.42
目標(biāo)庫(kù)存水平為:406.92
安全庫(kù)存量為:210.4410.3需求預(yù)測(cè)經(jīng)驗(yàn)分布估計(jì):使用經(jīng)驗(yàn)分布估計(jì)相應(yīng)的需求分位數(shù),計(jì)算對(duì)應(yīng)庫(kù)存指標(biāo):
defget_empirical_policy(sales_qty,rep_time,target_csl,sample_size=1000):
"""
Args:
sales_qty:銷量數(shù)據(jù)
rep_time:補(bǔ)貨周期
target_csl:期望的周期服務(wù)水平
sample_size:樣本量
Return:
oul:目標(biāo)庫(kù)存水平
ss:安全庫(kù)存量
"""
#使用重采樣技術(shù),構(gòu)造提前期內(nèi)需求樣本
rep_time_sample=[sum(np.random.choice(sales_qty,rep_time,
replace=True))
for_inrange(sample_size)]
oul=np.quantile(rep_time_sample,target_csl)
ss=oul-np.mean(rep_time_sample)
returnoul,ss10.3需求預(yù)測(cè)經(jīng)驗(yàn)分布估計(jì):對(duì)‘SKU001’使用經(jīng)驗(yàn)分布方法,使用重采樣技術(shù),構(gòu)造提前期內(nèi)需求樣本,并計(jì)算樣本分位數(shù):
empirical_oul,empirical_ss=get_empirical_policy(sku_sales_qty,
rep_time_dict[sku],
0.9)
print('使用經(jīng)驗(yàn)分布的方法計(jì)算得到的目標(biāo)庫(kù)存水平為:%.2f'
%empirical_oul)
print('使用經(jīng)驗(yàn)分布的方法計(jì)算得到的安全庫(kù)存量為:%.2f'
%empirical_ss)使用經(jīng)驗(yàn)分布的方法計(jì)算得到的目標(biāo)庫(kù)存水平為:493.10
使用經(jīng)驗(yàn)分布的方法計(jì)算得到的安全庫(kù)存量為:288.8810.3需求預(yù)測(cè)基于核密度函數(shù)的非參數(shù)估計(jì):定義函數(shù)get_kde_policy對(duì)銷量數(shù)據(jù)進(jìn)行擬合,使用留一交叉驗(yàn)證方法,選擇合適的帶寬,并計(jì)算相應(yīng)的庫(kù)存策略
#調(diào)用kde計(jì)算包
fromsklearn.neighborsimportKernelDensity
#調(diào)用交叉估計(jì)驗(yàn)證計(jì)算包
fromsklearn.model_selectionimportGridSearchCV,LeaveOneOutdefget_kde_policy(sales_qty,rep_time,target_csl,sample_size=1000):
"""
Args:
sales_qty:銷量數(shù)據(jù)
rep_time:補(bǔ)貨周期
target_csl:期望的周期服務(wù)水平
sample_size:樣本量
Return:
best_bandwidth:最優(yōu)帶寬
oul:目標(biāo)庫(kù)存水平
ss:安全庫(kù)存量
"""10.3需求預(yù)測(cè)代碼續(xù):
sales_qty=np.array(sales_qty).reshape(-1,1)
bandwidth_choices={'bandwidth':np.linspace(1,100,20)}
grid=GridSearchCV(KernelDensity(kernel='gaussian'),bandwidth_choices,
cv=LeaveOneOut())
grid.fit(sales_qty)
best_bandwidth=grid.best_estimator_.bandwidth
kde=grid.best_estimator_
#根據(jù)分布,構(gòu)造補(bǔ)貨周期內(nèi)需求樣本
rep_time_sample=[sum(kde.sample(rep_time))for_inrange(sample_size)]
oul=np.quantile(rep_time_sample,target_csl)
ss=oul-np.mean(rep_time_sample)
returnbest_bandwidth,oul,ssbest_bandwidth,kde_oul,kde_ss=get_kde_policy(sku_sales_qty,
rep_time_dict[sku],
0.9)
print('使用留一驗(yàn)證法得到的最優(yōu)帶寬為:%.2f'
%best_bandwidth)
print('使用核函數(shù)估計(jì)法計(jì)算得到的目標(biāo)庫(kù)存水平為:%.2f'
%kde_oul)
print('使用核函數(shù)估計(jì)法計(jì)算得到的安全庫(kù)存量為:%.2f'
%kde_ss)使用留一驗(yàn)證法得到的最優(yōu)帶寬為:16.63,使用核函數(shù)估計(jì)法計(jì)算得到的目標(biāo)庫(kù)存水平為:479.97使用核函數(shù)估計(jì)法計(jì)算得到的安全庫(kù)存量為:263.7810.3需求預(yù)測(cè)需求估計(jì)方法的應(yīng)用:對(duì)所有產(chǎn)品應(yīng)用上述三種方法,計(jì)算對(duì)應(yīng)庫(kù)存策略指標(biāo):normal_parasnormal_oulnormal_ss\
SKU001(26.15573770491803,61.416345943453486)439.248432229.770615
SKU002(93.47540983606558,224.0771315211208)741.841441489.715204
SKU003(6.459016393442623,1.40926408526803)83.9131246.390042
SKU004(6.385245901639344,1.250879830106973)62.2764064.578243
SKU005(33.15573770491803,73.1685703030577)582.850969286.346227
……lognormal_ssempirical_oulempirical_sskde_best_bandwidthkde_oul\
SKU00187.922101497.1287.12416.631579473.860751
SKU002182.165317790.4515.25868.736842827.300485
SKU0036.10781284.06.7151.085.415584
SKU0044.82723963.05.3491.063.263129
SKU005163.700998619.7323.32811.421053600.33853
kde_ss
SKU001262.680957
SKU002545.529678
SKU0037.930236
SKU0045.912068
SKU005303.8689710.3需求預(yù)測(cè)觀察不同策略下不同產(chǎn)品的安全庫(kù)存量和目標(biāo)庫(kù)存水平這要求我們對(duì)不同產(chǎn)品采取基于產(chǎn)品自身特點(diǎn)的差異化策略
基于模擬庫(kù)存水平變化,仿真計(jì)算相應(yīng)庫(kù)存成本參數(shù)與非參數(shù)方法與指標(biāo)高低沒(méi)有絕對(duì)的關(guān)系不同產(chǎn)品的最適合方法不固定這點(diǎn)將在庫(kù)存仿真流程中體現(xiàn)基于庫(kù)存策略量模擬庫(kù)存水平變化基于對(duì)需求的擬合,計(jì)算相應(yīng)目標(biāo)庫(kù)存水平下的庫(kù)存策略量10.4仿真流程輸入產(chǎn)品未來(lái)一段時(shí)間內(nèi)的需求樣本,目標(biāo)庫(kù)存水平,盤(pán)貨周期和提前期令第一期的庫(kù)存水平為目標(biāo)庫(kù)存水平,在途庫(kù)存為0對(duì)之后每一期:計(jì)算庫(kù)存成本期初更新現(xiàn)貨庫(kù)存在途庫(kù)存到貨更新庫(kù)存水平(若缺貨,則缺貨候補(bǔ)量表示為負(fù))根據(jù)是否在盤(pán)貨周期,判斷是否補(bǔ)貨至目標(biāo)庫(kù)存水平庫(kù)存成本=總持貨成本+總?cè)必洺杀?0.4仿真流程對(duì)于’SKU003’,設(shè)定目標(biāo)庫(kù)存水平為80,進(jìn)行仿真:給定策略下產(chǎn)品每日現(xiàn)貨庫(kù)存水平和需求隨時(shí)間變化曲線sku=
'SKU003'
sku_sales_qty=test_df[test_df['sku_id']==sku]['sale'].values.tolist()
sku_onhand_list=inv_simulation(sku_sales_qty,80,cycle_time_dict[sku],
lead_time_dict[sku])
plt.plot(sku_sales_qty,marker='.',label='需求')
plt.plot(sku_onhand_list,marker='.',label='庫(kù)存水平')
plt.xlabel('時(shí)間')
plt.ylabel('數(shù)量')
plt.legend()
plt.show()10.4仿真流程依據(jù)現(xiàn)貨庫(kù)存水平計(jì)算該產(chǎn)品的總庫(kù)存成本:SKU003在目標(biāo)庫(kù)存水平為80.00的情況下,庫(kù)存總成本為:1615.26defcal_inv_cost(onhand_list,hc,pc):
"""
Args:
onhand_list:歷史現(xiàn)貨庫(kù)存水平
hc:單箱持貨成本
pc:單箱缺貨成本
Return:
total_cost:庫(kù)存成本
"""
holding_cost=hc*sum([max(0,onhand)foronhandinonhand_list])
backorder_cost=pc*(-1)*sum([min(0,onhand)foronhandinonhand_list])
total_cost=holding_cost+backorder_cost
returntotal_costsku_inv_cost=cal_inv_cost(s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 賓館承包合同協(xié)議書(shū)寫(xiě)法
- 臨時(shí)工聘用合同樣本
- 2024廣告服務(wù)合同模板
- 無(wú)擔(dān)保眼鏡購(gòu)買(mǎi)分期付款合同范本
- 2024公寓租賃合同模板【公寓租賃合同】
- 城市糧食采購(gòu)合同模板
- 服裝行業(yè)銷售管理系統(tǒng)經(jīng)銷合同
- 環(huán)保工程維保合同模板
- 高校畢業(yè)就業(yè)協(xié)議書(shū)樣本
- 商標(biāo)許可協(xié)議書(shū)
- 山東德州財(cái)金投資控股集團(tuán)有限公司招聘考試真題2022
- 《工業(yè)機(jī)器人應(yīng)用與維護(hù)》專業(yè)人才培養(yǎng)方案
- 《馬克思主義發(fā)展史》第二章剩余價(jià)值學(xué)說(shuō)的創(chuàng)立和馬課件
- 高中語(yǔ)文人教版高中必修文言文定語(yǔ)后置
- 傳統(tǒng)孝道人物虞舜
- 確定積極分子會(huì)議記錄范文七篇
- 長(zhǎng)江三峽水利樞紐可行性報(bào)告
- 江蘇省某高速公路結(jié)構(gòu)物臺(tái)背回填監(jiān)理細(xì)則
- 電大護(hù)理本科臨床實(shí)習(xí)手冊(cè)內(nèi)容(原表)
- 當(dāng)代德國(guó)學(xué)校勞動(dòng)教育課程構(gòu)建的經(jīng)驗(yàn)與啟示共3篇
- “小金庫(kù)”治理與防范 習(xí)題及答案
評(píng)論
0/150
提交評(píng)論