《現(xiàn)代庫存管理:模型、算法與Python實(shí)現(xiàn)》 課件 楊超林 第10-17章 某零食企業(yè)W庫存策略優(yōu)化實(shí)戰(zhàn)-某家電企業(yè)H的制造網(wǎng)絡(luò)庫存優(yōu)化實(shí)戰(zhàn)_第1頁
《現(xiàn)代庫存管理:模型、算法與Python實(shí)現(xiàn)》 課件 楊超林 第10-17章 某零食企業(yè)W庫存策略優(yōu)化實(shí)戰(zhàn)-某家電企業(yè)H的制造網(wǎng)絡(luò)庫存優(yōu)化實(shí)戰(zhàn)_第2頁
《現(xiàn)代庫存管理:模型、算法與Python實(shí)現(xiàn)》 課件 楊超林 第10-17章 某零食企業(yè)W庫存策略優(yōu)化實(shí)戰(zhàn)-某家電企業(yè)H的制造網(wǎng)絡(luò)庫存優(yōu)化實(shí)戰(zhàn)_第3頁
《現(xiàn)代庫存管理:模型、算法與Python實(shí)現(xiàn)》 課件 楊超林 第10-17章 某零食企業(yè)W庫存策略優(yōu)化實(shí)戰(zhàn)-某家電企業(yè)H的制造網(wǎng)絡(luò)庫存優(yōu)化實(shí)戰(zhàn)_第4頁
《現(xiàn)代庫存管理:模型、算法與Python實(shí)現(xiàn)》 課件 楊超林 第10-17章 某零食企業(yè)W庫存策略優(yōu)化實(shí)戰(zhàn)-某家電企業(yè)H的制造網(wǎng)絡(luò)庫存優(yōu)化實(shí)戰(zhàn)_第5頁
已閱讀5頁,還剩199頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

現(xiàn)代庫存管理:模型、算法與Python實(shí)現(xiàn)第10章某零食企業(yè)W庫存策略優(yōu)化實(shí)戰(zhàn)10.1背景介紹企業(yè)W是一家以零食為主要產(chǎn)品的企業(yè):來自線上需求激增,需求結(jié)構(gòu)日趨復(fù)雜非必要庫存高,熱銷商品缺貨暴露了傳統(tǒng)庫存管理模式的低效滯后企業(yè)的發(fā)展趨勢和轉(zhuǎn)型需求:由人工預(yù)測、手工計(jì)劃的模式的數(shù)字化轉(zhuǎn)型將海量數(shù)據(jù)的價值充分利用起來建立一個智能化的補(bǔ)貨系統(tǒng)10.1背景介紹試點(diǎn)規(guī)模:該系統(tǒng)的功能需求:提供多種基于歷史銷量數(shù)據(jù)擬合產(chǎn)品需求分布的擬合工具給定庫存策略下,策略參數(shù)與安全庫存量的自動化計(jì)算提供一套庫存策略模擬仿真工具進(jìn)行成本評估200+SKU1天/3天/7天的盤貨周期2至7天不等的提前期10.2數(shù)據(jù)集概況數(shù)據(jù)規(guī)模:表一數(shù)據(jù):‘sku_id’:產(chǎn)品id‘date’:銷售日期‘sale’:銷量2020年8月1日開始,到2021年1月31日為止6個月的銷量數(shù)據(jù)前四個月的數(shù)據(jù)作為訓(xùn)練集(train_df)后兩個月為測試集(test_df)datesku_idsale02020-08-01SKU0016.012020-08-01SKU002722.022020-08-01SKU00310.032020-08-01SKU0049.042020-08-01SKU0057.010.3需求預(yù)測參數(shù)化方法:調(diào)用Python的scipy.stats統(tǒng)計(jì)工具包進(jìn)行分布擬合:正態(tài)分布擬合伽馬分布擬合泊松分布擬合對數(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)庫存水平

ss:安全庫存量

"""

ifdist_type==

'normal':

dist_paras=stats.norm.fit(sales_qty)

dist=stats.norm(*dist_paras)10.3需求預(yù)測代碼續(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ù)測參數(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對于’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)庫存水平為:%.2f'

%normal_oul)

print('安全庫存量為:%.2f'

%normal_ss)估計(jì)得到的均值為:26.16,標(biāo)準(zhǔn)差為:61.42

目標(biāo)庫存水平為:406.92

安全庫存量為:210.4410.3需求預(yù)測經(jīng)驗(yàn)分布估計(jì):使用經(jīng)驗(yàn)分布估計(jì)相應(yīng)的需求分位數(shù),計(jì)算對應(yīng)庫存指標(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)庫存水平

ss:安全庫存量

"""

#使用重采樣技術(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ù)測經(jīng)驗(yàn)分布估計(jì):對‘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)庫存水平為:%.2f'

%empirical_oul)

print('使用經(jīng)驗(yàn)分布的方法計(jì)算得到的安全庫存量為:%.2f'

%empirical_ss)使用經(jīng)驗(yàn)分布的方法計(jì)算得到的目標(biāo)庫存水平為:493.10

使用經(jīng)驗(yàn)分布的方法計(jì)算得到的安全庫存量為:288.8810.3需求預(yù)測基于核密度函數(shù)的非參數(shù)估計(jì):定義函數(shù)get_kde_policy對銷量數(shù)據(jù)進(jìn)行擬合,使用留一交叉驗(yàn)證方法,選擇合適的帶寬,并計(jì)算相應(yīng)的庫存策略

#調(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)庫存水平

ss:安全庫存量

"""10.3需求預(yù)測代碼續(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)庫存水平為:%.2f'

%kde_oul)

print('使用核函數(shù)估計(jì)法計(jì)算得到的安全庫存量為:%.2f'

%kde_ss)使用留一驗(yàn)證法得到的最優(yōu)帶寬為:16.63,使用核函數(shù)估計(jì)法計(jì)算得到的目標(biāo)庫存水平為:479.97使用核函數(shù)估計(jì)法計(jì)算得到的安全庫存量為:263.7810.3需求預(yù)測需求估計(jì)方法的應(yīng)用:對所有產(chǎn)品應(yīng)用上述三種方法,計(jì)算對應(yīng)庫存策略指標(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ù)測觀察不同策略下不同產(chǎn)品的安全庫存量和目標(biāo)庫存水平這要求我們對不同產(chǎn)品采取基于產(chǎn)品自身特點(diǎn)的差異化策略

基于模擬庫存水平變化,仿真計(jì)算相應(yīng)庫存成本參數(shù)與非參數(shù)方法與指標(biāo)高低沒有絕對的關(guān)系不同產(chǎn)品的最適合方法不固定這點(diǎn)將在庫存仿真流程中體現(xiàn)基于庫存策略量模擬庫存水平變化基于對需求的擬合,計(jì)算相應(yīng)目標(biāo)庫存水平下的庫存策略量10.4仿真流程輸入產(chǎn)品未來一段時間內(nèi)的需求樣本,目標(biāo)庫存水平,盤貨周期和提前期令第一期的庫存水平為目標(biāo)庫存水平,在途庫存為0對之后每一期:計(jì)算庫存成本期初更新現(xiàn)貨庫存在途庫存到貨更新庫存水平(若缺貨,則缺貨候補(bǔ)量表示為負(fù))根據(jù)是否在盤貨周期,判斷是否補(bǔ)貨至目標(biāo)庫存水平庫存成本=總持貨成本+總?cè)必洺杀?0.4仿真流程對于’SKU003’,設(shè)定目標(biāo)庫存水平為80,進(jìn)行仿真:給定策略下產(chǎn)品每日現(xiàn)貨庫存水平和需求隨時間變化曲線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='庫存水平')

plt.xlabel('時間')

plt.ylabel('數(shù)量')

plt.legend()

plt.show()10.4仿真流程依據(jù)現(xiàn)貨庫存水平計(jì)算該產(chǎn)品的總庫存成本:SKU003在目標(biāo)庫存水平為80.00的情況下,庫存總成本為:1615.26defcal_inv_cost(onhand_list,hc,pc):

"""

Args:

onhand_list:歷史現(xiàn)貨庫存水平

hc:單箱持貨成本

pc:單箱缺貨成本

Return:

total_cost:庫存成本

"""

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(sku_onhand_list,hc_dict[sku],pc_dict[sku])

print('%s在目標(biāo)庫存水平為%.2f的情況下,庫存總成本為:%.2f'

%(sku,80,sku_inv_cost))10.5比較多種方法下的庫存成本接下來我們要找到最優(yōu)的擬合方法:

尋找最優(yōu)擬合方式的流程:method_list=['normal','gamma','poisson','lognormal','empirical','kde']以總庫存成本為評價指標(biāo)

10.5比較多種方法下的庫存成本采用上述流程得到的全部SKU最優(yōu)擬合方法:通過統(tǒng)計(jì)可以發(fā)現(xiàn):best_method_count=cost_df['best_method'].value_counts().to_dict()

formethodinmethod_list:

print('采用%s方法獲得最小庫存成本的產(chǎn)品占比%.2f'

%(method,best_method_count[method]/len(all_sku_list)))

采用normal方法獲得最小庫存成本的產(chǎn)品占比0.14

采用gamma方法獲得最小庫存成本的產(chǎn)品占比0.18

采用poisson方法獲得最小庫存成本的產(chǎn)品占比0.23

采用lognormal方法獲得最小庫存成本的產(chǎn)品占比0.18

采用empirical方法獲得最小庫存成本的產(chǎn)品占比0.20

采用kde方法獲得最小庫存成本的產(chǎn)品占比0.0710.6拓展拓展思考:在本案例中,我們分析的是周期盤點(diǎn)的目標(biāo)補(bǔ)貨策略,如何分析連續(xù)盤點(diǎn)的批量補(bǔ)貨策略?在本案例中計(jì)算庫存策略基于的是期望的周期服務(wù)水平,如果采用需求滿足率指標(biāo)該如何計(jì)算?如果同時考慮兩種指標(biāo)呢?現(xiàn)代庫存管理:模型、算法與Python實(shí)現(xiàn)第11章周期服務(wù)水平優(yōu)化11.1報童模型一家滑雪場正在向生產(chǎn)廠家訂購滑雪板:滑雪場需要在超儲與缺貨之間進(jìn)行權(quán)衡,來找到最優(yōu)的服務(wù)水平訂購提前期為3個月每套滑雪板的訂購成本是2000元每套售價是2800元未能賣出的,以每套1800元變賣處理需求量大致服從正態(tài)分布,且均值為1000個,標(biāo)準(zhǔn)差為300個11.1報童模型超儲和缺貨所帶來的損失:這類短期、單次補(bǔ)貨模型就是庫存管理中經(jīng)典的報童問題

超儲成本:??=2000?1800=200元缺貨成本:每套的利潤為2800?2000=800元。這即為由于庫存不足而丟失的每個訂單造成的缺貨成本,記為??針對生命周期很短,庫存只能持有一期的商品,就可以用報童模型來分析其補(bǔ)貨問題,例如報紙的訂貨問題以及機(jī)票超售的問題報童模型也適用于補(bǔ)貨提前期較長的季節(jié)性商品的補(bǔ)貨問題,例如中秋節(jié)期間月餅的備貨問題11.1報童模型

??≤??,表示需求量小于等于訂貨量,超儲量為?????,因此將產(chǎn)生??(?????)的超儲成本??>??,表示需求量大于訂貨量,缺貨量為?????,因此將產(chǎn)生 ??(?????)的缺貨成本11.1報童模型

11.1報童模型邊際分析:若增加1個單位的訂貨量:以??????的概率,原先的訂貨量??將無法售罄,因此增加1個單位的訂貨量將增加1個單位的超儲量,因此超儲成本增加??以1???????的概率,原先的訂貨量??將無法滿足所有需求,增加1個單位的訂貨量后,缺貨數(shù)量可以減少1個單位,因此缺貨成本降低??因此,增加1個單位的訂貨量帶來的期望成本的邊際影響為:

11.1報童模型可以看到:若??????<??/(??+??),????(??)<0,增加訂貨量會使期望成本減小若??????>??/(??+??),????(??)>0,增加訂貨量會使期望成本增加

11.1報童模型

11.2

(??OP,??)策略的最優(yōu)服務(wù)水平

長期平均總成本:11.2

(??OP,??)策略的最優(yōu)服務(wù)水平僅對缺貨候補(bǔ)的系統(tǒng)成立對缺貨流失的系統(tǒng)[??,??+??]期間的實(shí)際需求會受到??時刻系統(tǒng)的凈庫存以及在途庫存的影響,因此狀態(tài)獨(dú)立的庫存策略將不再是最優(yōu)的

長期平均總成本:11.2

(??OP,??)策略的最優(yōu)服務(wù)水平

缺貨候補(bǔ)系統(tǒng):11.2

(??OP,??)策略的最優(yōu)服務(wù)水平

情形一:單位時間單位數(shù)量的缺貨成本

11.2

(??OP,??)策略的最優(yōu)服務(wù)水平

情形一:單位時間單位數(shù)量的缺貨成本

11.2

(??OP,??)策略的最優(yōu)服務(wù)水平

情形二:單位數(shù)量的缺貨成本

11.2

(??OP,??)策略的最優(yōu)服務(wù)水平缺貨流失的情形:在實(shí)際中,缺貨候補(bǔ)和缺貨流失都有可能發(fā)生。對于直接面向消費(fèi)者的零售企業(yè)來說,缺貨流失甚至比缺貨候補(bǔ)發(fā)生的可能性更大由于缺貨流失系統(tǒng)的復(fù)雜性,我們直接給出缺貨流失系統(tǒng)下最優(yōu)服務(wù)水平的近似計(jì)算公式:

11.2

(??OP,??)策略的最優(yōu)服務(wù)水平例:某快消品公司上海區(qū)域倉的一款洗發(fā)水的日需求服從均值為200(瓶),標(biāo)準(zhǔn)差為50的正態(tài)分布采銷人員的補(bǔ)貨策略是當(dāng)該洗發(fā)水的庫存水平降至1200瓶的時候向工廠補(bǔ)貨1000瓶,補(bǔ)貨的提前期為5天該洗發(fā)水的采購成本為40元每瓶,售價為60元每瓶洗發(fā)水每天在倉庫的結(jié)余庫存會產(chǎn)生一定的持貨成本。公司估計(jì)其持貨成本大約為采購成本的40%每年當(dāng)需求超過倉庫的可用庫存時,將發(fā)生缺貨。假設(shè)缺貨可以候補(bǔ),即需求可以通過后續(xù)到達(dá)的庫存來滿足,但公司需要為顧客支付2元每件每天的延遲交貨補(bǔ)貼11.2

(??OP,??)策略的最優(yōu)服務(wù)水平例:在當(dāng)前的補(bǔ)貨策略下,洗發(fā)水的周期服務(wù)水平是多少?最優(yōu)的周期服務(wù)水平和相應(yīng)的再補(bǔ)貨點(diǎn)是多少?如果公司只需要一次性像顧客支付每件3元的延遲交貨補(bǔ)貼,最優(yōu)的周期服務(wù)水平和相應(yīng)的再補(bǔ)貨點(diǎn)是多少?如果需求超過倉庫的可用庫存,發(fā)生缺貨時,需求直接流失,考慮到缺貨除了造成當(dāng)前商品利潤的損失外,可能還會對顧客未來的購買意

愿造成不良影響,公司認(rèn)為單位缺貨成本為30元。此時,最優(yōu)的周期服務(wù)水平和相應(yīng)的再補(bǔ)貨點(diǎn)是多少?11.2

(??OP,??)策略的最優(yōu)服務(wù)水平例:

11.2

(??OP,??)策略的最優(yōu)服務(wù)水平例:

最優(yōu)的周期服務(wù)水平和相應(yīng)的再補(bǔ)貨點(diǎn)是多少?11.2

(??OP,??)策略的最優(yōu)服務(wù)水平例:

如果公司只需要一次性像顧客支付每件3元的延遲交貨補(bǔ)貼,最優(yōu)的周期服務(wù)水平和相應(yīng)的再補(bǔ)貨點(diǎn)是多少?可以看到,如果缺貨成本是一次性支付3元,則最優(yōu)的服務(wù)水平相比于 按缺貨周期支付的情形更低

11.2

(??OP,??)策略的最優(yōu)服務(wù)水平例:

如果需求超過倉庫的可用庫存,發(fā)生缺貨時,需求直接流失,考慮到缺貨除了造成當(dāng)前商品利潤的損失外,可能還會對顧客未來的購買意愿造成不良影響,公司認(rèn)為單位缺貨成本為30元。此時,最優(yōu)的周期服務(wù)水平和相應(yīng)的再補(bǔ)貨點(diǎn)是多少?可以看到,如果缺貨直接流失,則需要保證更高的服務(wù)水平

11.3

(OUL,T)策略的最優(yōu)服務(wù)水平

最小化系統(tǒng)的長期平均成本等價于最小化系統(tǒng)在一個周期的平均成本(??????,??)系統(tǒng)將一直重復(fù)這樣的長度為??的周期11.3

(OUL,T)策略的最優(yōu)服務(wù)水平

情形一:單位時間單位數(shù)量的缺貨成本11.3

(OUL,T)策略的最優(yōu)服務(wù)水平

情形二:單位數(shù)量的缺貨成本11.3

(OUL,T)策略的最優(yōu)服務(wù)水平

缺貨流失的情形:11.3

(OUL,T)策略的最優(yōu)服務(wù)水平某家電賣場一款電飯煲的日需求服從均值為10臺,標(biāo)準(zhǔn)差為5臺的正態(tài)分布采銷人員每周二進(jìn)行補(bǔ)貨,每次補(bǔ)貨都將庫存水平補(bǔ)至150臺,補(bǔ)貨提前期為1周該電飯煲的采購成本為280元每臺,售價為380元賣場估計(jì)其持貨成本大約為采購成本的50%假設(shè)缺貨可以候補(bǔ),但每延遲一天賣場需要給顧客提供1%的折扣作為補(bǔ)貼。目前的目標(biāo)庫存水平是否可以最小化庫存系統(tǒng)長期平均成本?例:11.3

(OUL,T)策略的最優(yōu)服務(wù)水平

例:

11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化

在實(shí)際中,需求的分布往往需要不斷地更新,需求還可能具有一定的周期性和趨勢性,并且?guī)齑娴挠?jì)劃期可考慮有限的展望期一種管理方法是將(ROP,Q)策略或者(OUL,T)策略的參數(shù)計(jì)算和優(yōu)化進(jìn)行動態(tài)更新如滾動時間窗法,每期基于未來一段時間的需求(分布)預(yù)測,動態(tài)地計(jì)算相應(yīng)的安全庫存量與策略參數(shù),從而決定相應(yīng)的補(bǔ)貨量在這種情況下:11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化以最小化一定展望期內(nèi)的總庫存成本為目標(biāo)一般計(jì)算成本較高于上述方法優(yōu)勢在于可以往后展望更多的周期,適用于需求分布非平穩(wěn)的情形,同時也可以考慮周期服務(wù)水平與需求滿足率約束下的策略優(yōu)化樣本均值近似(sampleaverageapproximation,SAA)相較于較難評估的真實(shí)期望成本,SAA根據(jù)由樣本得到的成本的經(jīng)驗(yàn) 分布進(jìn)行優(yōu)化SAA是解決隨機(jī)離散優(yōu)化問題常用的非參數(shù)方法之一11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化

基礎(chǔ)模型:11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化

基礎(chǔ)模型:11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化

基礎(chǔ)模型:11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化

基礎(chǔ)模型:11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化

基礎(chǔ)模型:11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化通過使用樣本均值近似目標(biāo)函數(shù),我們可以將原問題轉(zhuǎn)化為下述SAA問題:基礎(chǔ)模型:

11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化

例:importnumpyasnp

fromcoptpyimport*#提前期

L=

2

#盤貨周期(T=1表示每天都能訂貨)

T=

3

#展望期

J=

50

#樣本數(shù)

N=

100

#成本

c=

10

h=c*

0.01

p=c*

0.01

#用于生成變量的index

time_index=[tfortinrange(J)]

cycle_index=np.arange(1,J,T)

non_cycle_index=[tfortintime_indexiftnot

incycle_index]

sample_path_index=[iforiinrange(N)]#生成需求樣本

dist=stats.norm(50,10)

demand_sample={(t,i):max(dist.rvs(),0)fortintime_index

foriinsample_path_index}11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化例:使用COPT進(jìn)行建模:第二步,我們向模型中添加變量#生成COPT的環(huán)境

env=Envr()

#建立空的模型

m=env.createModel('basestock')CardinalOptimizerv5.0.1.BuilddateJun202022

CopyrightCardinalOperations2022.AllRightsReserved#目標(biāo)庫存水平

OUL=m.addVar(vtype=COPT.CONTINUOUS,name='OUL')

#現(xiàn)貨庫存

O=m.addVars(time_index,sample_path_index,vtype=COPT.CONTINUOUS,lb=0)

#延期交貨庫存

B=m.addVars(time_index,sample_path_index,vtype=COPT.CONTINUOUS,lb=0)

#訂貨量

Q=m.addVars(cycle_index,sample_path_index,vtype=COPT.CONTINUOUS,lb=0)11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化例:

#目標(biāo)函數(shù)

holding_cost=quicksum(O[t,i]fortintime_indexforiinsample_path_index)*h

penalty_cost=quicksum(B[t,i]fortintime_indexforiinsample_path_index)*p

m.setObjective((1

/(N*J))*(holding_cost+penalty_cost),COPT.MINIMIZE)11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化例:m.addConstrs((O[t,i]-B[t,i]==O[t-

1,i]-B[t-

1,i]

+(Q[t-L,i]ift-Lincycle_indexelse

0)

-demand_sample[t,i]

fortintime_index[1:]foriinsample_path_index))<coptcore.tupledictat0x1441cac40>#訂貨

m.addConstrs((Q[t,i]==sum([demand_sample[j,i]

forjinrange(max(1,t-T+

1),t+

1)])

fortincycle_indexforiinsample_path_index))<coptcore.tupledictat0x1442941c0>m.addConstrs((O[0,i]-B[0,i]==OULforiinsample_path_index))<coptcore.tupledictat0x1442b6910>11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化例:第五步,我們設(shè)定求解參數(shù)并求解模型,并將求解結(jié)果讀取出來最優(yōu)目標(biāo)庫存水平:144.1811.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化例:

11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化雙服務(wù)水平約束下的目標(biāo)庫存水平:

11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化雙服務(wù)水平約束下的目標(biāo)庫存水平:

11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化示例續(xù):接下來,我們向原模型中添加約束,求解最差周期服務(wù)水平和滿足率均為0.95情況下的目標(biāo)庫存水平:M=

10000

worst_csl=

0.95

worst_fr=

0.95

Z=m.addVars(time_index,sample_path_index,vtype=COPT.BINARY)11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化示例續(xù):增加周期服務(wù)水平約束:

m.addConstrs((O[t,i]-B[t,i]>=

-M*Z[t,i]

fortintime_indexforiinsample_path_index))

m.addConstr((quicksum(Z[t,i]fortintime_indexforiinsample_path_index)

<=(1

-worst_csl)*N*J))11.4基于SAA的有限周期庫存系統(tǒng)優(yōu)化示例續(xù):

m.addConstr((1

-(quicksum(

B[t,i]fortintime_indexforiinsample_path_index)/sum(

demand_sample.values()))>=worst_fr))m.setParam(COPT.Param.TimeLimit,1200)

m.setParam(COPT.Param.HeurLevel,3)

m.setParam(COPT.Param.RelGap,0.001)

m.solve()求解帶雙服務(wù)水平約束的模型:最優(yōu)目標(biāo)庫存水平:219.84

樣本周期服務(wù)水平:0.95

樣本滿足率:0.99現(xiàn)代庫存管理:模型、算法與Python實(shí)現(xiàn)第12章庫存共享12.1庫存共享效應(yīng)

12.1庫存共享效應(yīng)

12.2

分散節(jié)點(diǎn)間需求獨(dú)立情況下集中化安全庫存計(jì)算

12.2

分散節(jié)點(diǎn)間需求獨(dú)立情況下集中化安全庫存計(jì)算

名稱共享節(jié)點(diǎn)的提前期需求分布正態(tài)分布泊松分布伽馬分布12.2

分散節(jié)點(diǎn)間需求獨(dú)立情況下集中化安全庫存計(jì)算

12.2

分散節(jié)點(diǎn)間需求獨(dú)立情況下集中化安全庫存計(jì)算首先生成出兩個分散節(jié)點(diǎn)的需求樣本,并計(jì)算共享節(jié)點(diǎn)的提前期需求樣本:#期望的周期服務(wù)水平

tau=

0.95

#提前期

lead_time=

7

#樣本量

sample_size=

20000

#定義兩個節(jié)點(diǎn)的需求分布

halfnorm_dist=stats.halfnorm(loc=5,scale=3)

gamma_dist=stats.gamma(a=2)

#生成指定樣本量的兩個節(jié)點(diǎn)的提前期需求樣本

halfnorm_leadtime_samples=[sum(halfnorm_dist.rvs(size=lead_time))

for_inrange(sample_size)]

gamma_leadtime_samples=[sum(gamma_dist.rvs(size=lead_time))

for_inrange(sample_size)]

#計(jì)算共享節(jié)點(diǎn)的提前期需求樣本

central_leadtime_samples=[

halfnorm_leadtime_samples[i]+gamma_leadtime_samples[i]

foriinrange(sample_size)]12.2

分散節(jié)點(diǎn)間需求獨(dú)立情況下集中化安全庫存計(jì)算計(jì)算分散化管理和集中化管理模式下的安全庫存量以及庫存共享效應(yīng)分散化管理模式下的安全庫存總量為:15.03;集中化管理模式下的安全庫存總量為:10.46在周期服務(wù)水平為0.95

時,庫存共享效應(yīng)為:1.44#分散化管理模式

oul_decentralized=np.quantile(halfnorm_leadtime_samples,tau)+

\

np.quantile(gamma_leadtime_samples,tau)

ss_decentralized=oul_decentralized-np.mean(halfnorm_leadtime_samples)\

-np.mean(gamma_leadtime_samples)

print('分散化管理模式下的安全庫存總量為:%.2f'

%ss_decentralized)

#集中化管理模式

oul_centralized=np.quantile(central_leadtime_samples,tau)

ss_centralized=oul_centralized-np.mean(central_leadtime_samples)

print('集中化管理模式下的安全庫存總量為:%.2f'

%ss_centralized)

#庫存共享效應(yīng)

pooling_effect=ss_decentralized/ss_centralized

print('在周期服務(wù)水平為%.2f時,庫存共享效應(yīng)為:%.2f'

%(tau,pooling_effect))12.2

分散節(jié)點(diǎn)間需求獨(dú)立情況下集中化安全庫存計(jì)算在正態(tài)分布下,庫存共享效應(yīng)與周期服務(wù)水平無關(guān)。但在一般分布下,周期服務(wù)水平不同,庫存共享效應(yīng)也會有所不同。考慮在不同周期服務(wù)水平下,上述例子中的庫存共享效應(yīng):12.2

分散節(jié)點(diǎn)間需求獨(dú)立情況下集中化安全庫存計(jì)算

12.3分散節(jié)點(diǎn)間需求相關(guān)情況下的聯(lián)合分布樣本生成

12.3分散節(jié)點(diǎn)間需求相關(guān)情況下的聯(lián)合分布樣本生成不具有顯示的聯(lián)合分布函數(shù)刻畫一個聯(lián)合分布需要擬合邊際分布和刻畫邊際分布之間的相關(guān)關(guān)系,步驟如下:擬合出每個分散節(jié)點(diǎn)需求的邊際分布選擇合適的Copula函數(shù)并估計(jì)節(jié)點(diǎn)間需求的相關(guān)關(guān)系,生成關(guān)聯(lián)性樣本利用基于樣本的方法優(yōu)化網(wǎng)絡(luò)的庫存共享策略例:兩個分散節(jié)點(diǎn)的網(wǎng)絡(luò)中,考慮邊際分布為正態(tài)分布,定義協(xié)方差矩陣,繪制聯(lián)合分布樣本點(diǎn)的分布圖#樣本量

sample_size=

1000

#相關(guān)系數(shù)

rho=

0.85

#協(xié)方差矩陣

cov_matrix=[[1,rho],[rho,1]]

#帶有相關(guān)性的二維正態(tài)分布

multi_corr_norm_dist=stats.multivariate_normal(mean=[0,0],cov=cov_matrix)

#生成帶有相關(guān)性的二維正態(tài)分布的隨機(jī)樣本

multi_corr_norm_samples=multi_corr_norm_dist.rvs(sample_size)

#生成沒有相關(guān)性的二維正態(tài)分布的隨機(jī)樣本

multi_nc_norm_samples=stats.multivariate_normal(mean=[0,0]).rvs(sample_size)12.3分散節(jié)點(diǎn)間需求相關(guān)情況下的聯(lián)合分布樣本生成沒有相關(guān)性的聯(lián)合分布樣本點(diǎn)的分布圖具有正相關(guān)性的聯(lián)合分布樣本點(diǎn)的分布圖結(jié)論:分布之間是否獨(dú)立將會導(dǎo)致生成的聯(lián)合分布樣本分布不同分布的相關(guān)性越強(qiáng),橢圓的形狀會越扁,正相關(guān)時需求樣本右偏,負(fù)相關(guān)時左偏12.3.1使用概率積分變換和分位數(shù)變換生成帶有相關(guān)性的樣本概率積分變換:

#使用標(biāo)準(zhǔn)正態(tài)分布的累計(jì)分布函數(shù)對每一維進(jìn)行概率積分變換

uni_samples=stats.norm.cdf(multi_corr_norm_samples)

uni_plot=sns.jointplot(x=uni_samples[:,0],

y=uni_samples[:,1],

color='#1c79d9')

uni_plot.plot_joint(sns.kdeplot,color='black',levels=5)

plt.show()12.3.1使用概率積分變換和分位數(shù)變換生成帶有相關(guān)性的樣本具有正相關(guān)性的樣本經(jīng)概率積分變換后的分布函數(shù)圖及KDE圖可以看出,每一維邊際分布都被轉(zhuǎn)化成了均勻分布,而新生成的樣本依然保留了一定的正相關(guān)性12.3.1使用概率積分變換和分位數(shù)變換生成帶有相關(guān)性的樣本分位數(shù)變換:

#定義gamma分布

gamma_dist=stats.gamma(a=2,scale=5)

#定義beta分布

beta_dist=stats.beta(a=1,b=2)

#使用這兩個分布,對兩維均勻分布進(jìn)行分位數(shù)變換

joint_gamma_beta_samples=np.zeros((sample_size,2))

joint_gamma_beta_samples[:,0]=gamma_dist.ppf(uni_samples[:,0])

joint_gamma_beta_samples[:,1]=beta_dist.ppf(uni_samples[:,1])

joint_gamma_beta_plot=sns.jointplot(x=joint_gamma_beta_samples[:,0],

y=joint_gamma_beta_samples[:,1],

color='#1c79d9’)

joint_gamma_beta_plot.plot_joint(sns.kdeplot,color='black',zorder=1,levels=5)

plt.show()12.3.1使用概率積分變換和分位數(shù)變換生成帶有相關(guān)性的樣本具有正相關(guān)性的樣本經(jīng)特殊分布分位數(shù)變換后的分布函數(shù)圖及KDE圖12.3.2Copula、Sklar定理與元分布

12.3.2Copula、Sklar定理與元分布

12.3.2Copula、Sklar定理與元分布

邊際分布間的依賴關(guān)系:12.3.2Copula、Sklar定理與元分布

12.3.2Copula、Sklar定理與元分布

kendall_tau,_=stats.kendalltau(joint_gamma_beta_samples[:,0],

joint_gamma_beta_samples[:,1])

print(kendall_tau)12.3.3阿基米德Copula函數(shù)族

12.3.3阿基米德Copula函數(shù)族

fromarchcopula.gumbelimportGumbelCopula

fromarchcopula.claytonimportClaytonCopula

fromarchcopula.frankimportFrankCopula#秩相關(guān)系數(shù)

kendall_tau=

0.5

#樣本量

sample_size=

100012.3.3阿基米德Copula函數(shù)族#采樣Gumbel

gumbel_copula=GumbelCopula(kendall_tau=kendall_tau)

gumbel_samples=gumbel_copula.rvs(num_obs=sample_size,dim=2)

#采樣Clayon

clayton_copula=ClaytonCopula(kendall_tau=kendall_tau)

clayton_samples=clayton_copula.rvs(num_obs=sample_size,dim=2)

#采樣Frank

frank_copula=FrankCopula(kendall_tau=kendall_tau)

frank_samples=frank_copula.rvs(num_obs=sample_size,dim=2)gumbel_plot=sns.jointplot(x=gumbel_samples[:,0],

y=gumbel_samples[:,1],

color='#1c79d9')

gumbel_plot.plot_joint(sns.kdeplot,color='black',levels=5)

plt.show()12.3.3阿基米德Copula函數(shù)族由Gumbel生成由Clayton生成由Frank生成12.4庫存共享效應(yīng)之外,關(guān)于庫存共享的更多討論采用庫存共享策略的優(yōu)勢在于:庫存共享可以降低安全庫存,從而降低庫存成本共享節(jié)點(diǎn)往往建于租金較為便宜的地段,庫存的倉儲成本可能更低庫存共享后,需要的管理人員數(shù)量減少,可以節(jié)省運(yùn)營成本采用庫存共享策略的劣勢在于:庫存共享后,庫存離顧客更遠(yuǎn),使得履約時間延長庫存共享后,配送、履約的規(guī)模效應(yīng)減弱,造成運(yùn)輸成本增加12.4庫存共享效應(yīng)之外,關(guān)于庫存共享的更多討論其他的庫存共享策略:信息的集中化:供應(yīng)商管理庫存(vendormanagedinventory,VMI)是一種將商品供應(yīng)和終端銷售直接打通的庫存管理模式,可以將多級庫存轉(zhuǎn)化為單級庫存問題,不僅能夠減少零售商的庫存成本,還能夠緩解供應(yīng)鏈中的牛鞭效應(yīng),降低庫存風(fēng)險門店間的實(shí)時調(diào)撥:通過門店之間的庫存共享,單一門店可以減少必須的庫存儲備,減少儲存和持貨成本;公司也可以整合管理某一地區(qū)而非某一銷售點(diǎn)的庫存,從而降低單店管理可能面對的需求波動性線上線下一體化:過去,該行業(yè)的主要供應(yīng)商基本為當(dāng)?shù)貙?shí)體零售商家,而盒馬鮮生則通過線上線下庫存共享的方式,打開了該行業(yè)線上經(jīng)營和數(shù)字供應(yīng)的可能。通過“線上電商+線下門店”的銷售模式,顧客既可以在線下門店進(jìn)行選購,也可以在線上程序下單、由門店工作人員完成揀選和配送現(xiàn)代庫存管理:模型、算法與Python實(shí)現(xiàn)第13章某食品企業(yè)Y庫存共享決策實(shí)戰(zhàn)13背景介紹企業(yè)Y是一家休閑食品企業(yè),產(chǎn)品主要有常溫和生鮮兩類:產(chǎn)品供應(yīng)主要通過一個中央倉來完成,中央倉從工廠補(bǔ)貨,然后向全國各地的分銷商、零售商供貨休閑食品市場向新興低線城市的下沉,更多消費(fèi)者接觸到新零售、外賣、無人售賣等銷售渠道新品類、新市場、新渠道給公司的供應(yīng)鏈帶來履約成本與效率的挑戰(zhàn)企業(yè)的發(fā)展趨勢和轉(zhuǎn)型需求:建立了5個區(qū)域倉,對部分品類庫存進(jìn)行分倉管理決策哪些商品庫存進(jìn)行分倉管理,而哪些商品的庫存繼續(xù)留在中央倉中央倉管理的優(yōu)勢在于庫存共享,一定程度上降低安全庫存,進(jìn)而降低庫存成本分倉管理的優(yōu)勢在于工廠到各區(qū)域倉可以通過整車運(yùn)輸,且運(yùn)輸平均距離更近,降低運(yùn)輸成本,考慮到生鮮品需采用冷鏈運(yùn)輸,單位運(yùn)輸費(fèi)用明顯要高于常溫品13解決方法從常溫品和生鮮品中各挑選出一個具有一定代表性的SKU,提取這兩個SKU過去一年的銷量數(shù)據(jù)、價格以及運(yùn)輸費(fèi)率。通過數(shù)據(jù),探究如下兩個問題:中央倉管理與區(qū)域倉管理兩種模式下,這兩個SKU的安全庫存成本是多少?綜合考慮庫存成本和運(yùn)輸成本,這兩個SKU應(yīng)該分別選擇哪種方式管理庫存?13.1分散式管理和集中式管理模式下安全庫存量的計(jì)算數(shù)據(jù)集概況:sales_df表:5個區(qū)域倉所覆蓋區(qū)域過去1年兩個SKU的銷量信息’node_id’:表示區(qū)域倉id’type’:表示產(chǎn)品類型’Normal’:表示常溫品’Cold’:生鮮品’date’:對應(yīng)日期’qty’:對應(yīng)日期的銷量數(shù)據(jù)’unit_id’:定義一個unit為一個區(qū)域倉與一個SKU的組合,便于對每個區(qū)域倉的每種商品進(jìn)行索引node_idtypedateqtyunit_id0RDC01Normal2020-07-1751.0RDC01_Normal1RDC01Normal2020-07-18444.0RDC01_Normal2RDC01Normal2020-07-19596.0RDC01_Normal3RDC01Normal2020-07-2065.0RDC01_Normal4RDC01Normal2020-07-210.0RDC01_Normal5RDC01Normal2020-07-220.0RDC01_Normal6RDC01Normal2020-07-23109.0RDC01_Normal7RDC01Normal2020-07-2453.0RDC01_Normal8RDC01Normal2020-07-25157.0RDC01_Normal9RDC01Normal2020-07-2653.0RDC01_Normal13.1分散式管理和集中式管理模式下安全庫存量的計(jì)算數(shù)據(jù)集概況:transport_cost_df表:記錄了核算后的節(jié)點(diǎn)間運(yùn)輸費(fèi)率’predecessor’:上游節(jié)點(diǎn)’successor’:下游節(jié)點(diǎn)’normal_transport_unit_cost’:常溫品的單位運(yùn)輸費(fèi)率’cold_transport_unit_cost’:生鮮品的單位運(yùn)輸費(fèi)率predecessorsuccessornormal_transport_unit_costcold_transport_unit_cost0FactoryCDC2.03.01CDCRDC011.52.02CDCRDC021.02.03CDCRDC032.53.04CDCRDC043.54.05CDCRDC052.02.06FactoryRDC012.02.57FactoryRDC021.52.08FactoryRDC033.04.09FactoryRDC044.04.510FactoryRDC051.01.813.1分散式管理和集中式管理模式下安全庫存量的計(jì)算

常溫SKU和生鮮SKU的售價分別為35元和38元。由于生鮮SKU對倉儲設(shè)施和管理的要求都較高,存儲成本更高。因此,按照SKU售價的40%和60%的比例分別計(jì)算單位年持貨成本,再計(jì)算出每天的單位持貨成本normal_price=

35

cold_price=

38

normal_hc_rate=

0.04

cold_hc_rate=

0.06工廠在接到中央倉或者區(qū)域倉的訂單后,平均需要2天的備貨時間,將商品從工廠運(yùn)送到倉還需要1天的時間,因此倉庫補(bǔ)貨的提前期為3天。公司期望周期服務(wù)水平能夠達(dá)到90%lead_time=

3csl

=

0.913.1分散式管理和集中式管理模式下安全庫存量的計(jì)算使用參數(shù)化的方法擬合出各個unit的需求分布plt.figure(figsize=(18,12))

plt.subplots_adjust(hspace=0.5)

forn,unitinenumerate(sales_df['unit_id'].unique()):

ax=plt.subplot(5,2,n+

1)

hist_sales=sales_df[sales_df['unit_id']==unit]['qty'].values

sns.histplot(hist_sales,ax=ax,color='#1c79d9')

ax.set_title(unit)

ax.set_ylabel('計(jì)數(shù)')

plt.show()13.1分散式管理和集中式管理模式下安全庫存量的計(jì)算使用參數(shù)化的方法擬合出各個unit的需求分布13.1分散式管理和集中式管理模式下安全庫存量的計(jì)算由于不同unit的分布特征有所不同,很難直接選定某一特定分布族進(jìn)行參數(shù)擬合使用Python的fitter工具包,給定一些可能的分布列表,找到擬合效果最好的分布及其參數(shù)以unit’RDC01_Normal’(RDC01的常溫SKU)為例,演示如何使用fitter工具包#導(dǎo)入fitter工具包

fromfitterimportFitter

#定義可能的分布列表

dist_list=['norm','halfnorm','lognorm','gamma','beta','chi2','uniform']#篩選出'FDC01_Normal'的銷量數(shù)據(jù)

unit_sales=sales_df[sales_df['unit_id']==

'RDC01_Normal']['qty'].values

#使用Fitter進(jìn)行擬合

fitter=Fitter(unit_sales,distributions=dist_list)

fitter.fit()#展示擬合信息

fitted_table=fitter.summary()

print(fitted_table)13.1分散式管理和集中式管理模式下安全庫存量的計(jì)算在使用均方誤差評判擬合效果好壞時:擬合unit’RDC1_Normal’效果最好的分布是貝塔分布,提取對應(yīng)參數(shù)

sumsquare_erroraicbickl_div

beta0.0001083863.479360-5464.736465inf

chi20.0001982071.601353-5247.542500inf

halfnorm0.0002614164.396355-5153.896332inf

lognorm0.0002611887.101432-5147.460082inf

norm0.0003344996.289130-5063.637313infunit_dist_para=fitter.get_best()

print(unit_dist_para){'beta':{'a':0.8351544197633447,'b':109.07329659678845,'loc':-1.1991932626111443e-20,'scale':6801.05324498265}}13.1分散式管理和集中式管理模式下安全庫存量的計(jì)算利用上述方法,為所有unit找到擬合效果最好的分布及其參數(shù)擬合RDC01_Normal效果最好的是beta分布

擬合RDC01_Cold效果最好的是halfnorm分布

擬合RDC02_Normal效果最好的是beta分布

擬合RDC02_Cold效果最好的是beta分布

擬合RDC03_Normal效果最好的是gamma分布

擬合RDC03_Cold效果最好的是gamma分布

擬合RDC04_Normal效果最好的是beta分布

擬合RDC04_Cold效果最好的是chi2分布

擬合RDC05_Normal效果最好的是chi2分布

擬合RDC05_Cold效果最好的是beta分布13.1分散式管理和集中式管理模式下安全庫存量的計(jì)算定義函數(shù)cal_ss_decentralized來計(jì)算指定周期服務(wù)水平下區(qū)域倉管理模式的安全庫存量defcal_ss_decentralized(dist_dict,tau,sample_size):

"""

Args:

dist_dict:各節(jié)點(diǎn)的需求分布(scipy.stats)

tau:期望的周期服務(wù)水平

sample_size:樣本量

Return:

unit_leadtime_mean_dict:各區(qū)域倉的提前期需求均值

unit_ss_decentralized_dict:區(qū)域倉管理模式下各區(qū)域倉的安全庫存量

"""

#根據(jù)分布,生成每個unit提前期需求樣本

unit_leadtime_samples_dict={unit:[sum(dist.rvs(lead_time))

for_inrange(sample_size)]

forunit,distindist_dict.items()}

#計(jì)算指定周期服務(wù)水平下的分位數(shù),作為目標(biāo)庫存水平

unit_oul_dict={unit:np.quantile(dist_leadtime_samples,tau)

forunit,dist_leadtime_samples

inunit_leadtime_samples_dict.items()}

#計(jì)算提前期需求均值

unit_leadtime_mean_dict={unit:np.mean(dist_leadtime_samples)

forunit,dist_leadtime_samples

inunit_leadtime_samples_dict.items()}

#根據(jù)安全庫存等于目標(biāo)庫存水平-需求均值,計(jì)算每個unit的安全庫存量

unit_ss_decentralized_dict={unit:unit_oul_dict[unit]-

unit_leadt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論