《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第9章-安全庫存優(yōu)化_第1頁
《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第9章-安全庫存優(yōu)化_第2頁
《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第9章-安全庫存優(yōu)化_第3頁
《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第9章-安全庫存優(yōu)化_第4頁
《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第9章-安全庫存優(yōu)化_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)第9章安全庫存優(yōu)化9.1安全庫存概述例子:一家電子產(chǎn)品零售門店某款手機的日需求均值為5臺。門店每周補貨一次,提前期為3天如果忽略需求的波動性,門店可以當其庫存水平還剩15臺的時候向供應商訂貨35臺實際的運營中,需求往往具有不確定性。為避免缺貨發(fā)生,可以當其庫存為30臺時補貨

此時只有當該手機3天的實際需求超過30臺時,才會發(fā)生缺貨。每次到貨時,該手機平均還有15臺的在手庫存安全庫存量越高,缺貨的風險越小,需求滿足率越高,但庫存成本也越高9.1安全庫存概述9.1安全庫存概述安全庫存指在需求均值之上額外持有的以應對需求不確定性的庫存,它能夠有效降低由于需求不確定性造成的供應鏈風險,降低由缺貨導致的損失本章討論在兩種庫存策略下,周期服務水平和需求滿足率與安全庫存量之間的關系,并回答以下兩個問題:給定庫存策略,如何計算系統(tǒng)的安全庫存量以及周期服務水平和需求滿足率給定期望的周期服務水平或需求滿足率,如何計算不同庫存策略下所需的安全庫存量9.2

(ROP,Q)策略分析

安全庫存與周期服務水平9.2

(ROP,Q)策略分析

安全庫存與周期服務水平9.2

(ROP,Q)策略分析

需求獨立同分布9.2

(ROP,Q)策略分析

需求不服從正態(tài)分布更加科學的方式:對提前期需求的分布函數(shù)(分位數(shù)函數(shù))進行估計,從而對再補貨點(安全庫存量)與周期服務水平之間的關系進行更準確的刻畫9.2

(ROP,Q)策略分析

零售賣場A的一款洗滌劑的周需求服從均值為250瓶,標準差為70瓶的正態(tài)分布。采購人員每當其庫存水平低于600瓶時補貨1000瓶,補貨提前期為兩周。該產(chǎn)品的周期服務水平是多少?例1

9.2

(ROP,Q)策略分析

#導入stats模塊

importnumpyasnp

importscipy.statsasstats#(ROP,Q)策略

ROP=

600

Q=

1000

#提前期

L=

2

#周需求均值,標準差

mu=

250

sigma=

70

#補貨提前期均值,標準差

mu_L=mu*L

sigma_L=sigma*np.sqrt(L)

#計算安全庫存

ss=ROP-mu_L

#計算平均庫存

inv=ss+Q/2

#生成標準正態(tài)分布

norm_dist=stats.norm(0,1)

#調(diào)用累計分布函數(shù),計算周期服務水平

csl=norm_dist.cdf(ss/sigma_L)

print('例9-2計算結果:')

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

%ss)

print('平均庫存為:%.2f'

%inv)

print('周期服務水平為:%.2f'

%csl)9.2

(ROP,Q)策略分析

例29.2

(ROP,Q)策略分析

公式(X)是一個近似公式,本身可能低估周期服務水平由于需求存在不確定性,理論上需要系統(tǒng)的運作時間足夠長,實際的周期服務水平才能逼近理論的周期服務水平基于歷史數(shù)據(jù)的計算會受到來自于需求隨機性的干擾,并不能完全地代表庫存策略的表現(xiàn)周期服務水平的理論計算依賴于需求分布信息的假設。當需求分布的估計存在一定誤差時,理論計算的周期服務水平同樣可能與實際數(shù)據(jù)表現(xiàn)出的結果存在差異例29.2

(ROP,Q)策略分析

例39.2

(ROP,Q)策略分析

#給定安全庫存量,計算周期服務水平

ss=

150

csl=norm_dist.cdf(ss/sigma_L)

print('例9-4計算結果:')

print('當安全庫存量為:%.2f時,周期服務水平值為:%.4f'

%(ss,csl))

ss_list=[ssforssinnp.arange(50,450,50)]

csl_list=[norm_dist.cdf(ss/sigma_L)forssinss_list]

plt.plot(ss_list,csl_list,color='#1c79d9')

plt.xlabel('安全庫存量')

plt.ylabel('周期服務水平')

plt.show()9.2

(ROP,Q)策略分析

例39.2

(ROP,Q)策略分析

基于安全庫存量與周期服務水平的關系,賣場的銷售主管從庫存成本,行業(yè)競爭等角度進行了分析研判,決定將該款洗滌劑的目標周期服務水平定為0.95由于新冠疫情等因素的影響,賣場客流量的不確定可能會有所增加,賣場主管想要分析需求的不確定性對安全庫存量的影響應用計算公式,他計算了需求標準差對所需安全庫存量的影響例4csl=

0.95

#不同的需求標準差

sigma_list=[sigmaforsigmainnp.arange(0,350,50)]

sigma_L_dict={sigma:sigma*np.sqrt(L)forsigmainsigma_list}

#計算安全庫存量

sigma_ss_dict={sigma:norm_dist.ppf(csl)*sigma_L_dict[sigma]

forsigmainsigma_list}9.2

(ROP,Q)策略分析

若周需求標準差從現(xiàn)在的100瓶增加到200瓶,安全庫存持有量將從現(xiàn)在的233瓶增加到465瓶例49.2

(ROP,Q)策略分析

例59.2

(ROP,Q)策略分析

安全庫存與需求滿足率9.2

(ROP,Q)策略分析

安全庫存與需求滿足率9.2

(ROP,Q)策略分析

安全庫存與需求滿足率9.2

(ROP,Q)策略分析

例69.2

(ROP,Q)策略分析

銷售主管計算了在不同的再補貨點(安全庫存)下,該款盲盒會具有怎樣的周期服務水平和需求滿足率例69.2

(ROP,Q)策略分析

例6#(ROP,Q)策略

ROP=

600

Q=

800

#提前期

L=

10

#日需求均值,標準差

mu=

50

sigma=

30

#補貨提前期均值,標準差

mu_L=mu*L

sigma_L=sigma*np.sqrt(L)

#計算安全庫存

ss=ROP-mu_L

#計算周期服務水平

csl=norm_dist.cdf(ss/sigma_L)

#計算需求滿足率

es=(-1.0)*ss*(1

-norm_dist.cdf(ss/sigma_L))+sigma_L*

\

norm_dist.pdf(ss/sigma_L)

fr=

1

-es/Q

print('例9-7計算結果:')

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

%ss)

print('周期服務水平為:%.2f'

%csl)

print('需求滿足率為:%.2f'

%fr)9.3

(OUL,T)策略分析

9.3(OUL,T)策略分析

安全庫存與周期服務水平9.3(OUL,T)策略分析

安全庫存與需求滿足率9.3(OUL,T)策略分析零售賣場A采用周期盤貨策略對一款榨汁機進行補貨,賣場每隔3周訂一次貨,供貨提前期為1周,該榨汁機的周需求服從正態(tài)分布,均值為30臺,標準差為5臺例7

9.3(OUL,T)策略分析例7

#(OUL,T)策略

OUL=

135

T=

3

#補貨提前期

L=

1

將變量代入公式,則有,9.3(OUL,T)策略分析例7W=L+T

mu=

30

sigma=

10

#補貨周期均值

mu_T=mu*T

#覆蓋期均值,標準差

mu_W=mu*W

sigma_W=sigma*np.sqrt(W)

#計算安全庫存

ss=OUL-mu_W

#計算周期服務水平

csl=norm_dist.cdf(ss/sigma_W)

#計算需求滿足率

es=sigma_W*norm_dist.pdf(ss/sigma_W)-

\

ss*(1

-norm_dist.cdf(ss/sigma_W))

fr=

1

-es/mu_T

print('例9-8計算結果:')

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

%ss)

print('周期服務水平為:%.2f'

%csl)

print('需求滿足率為:%.2f'

%fr)9.3需求分布的刻畫

9.3需求分布的刻畫使用參數(shù)方法估計需求分布,需要根據(jù)產(chǎn)品的特性選擇合適的分布形式,利用數(shù)據(jù)對其中未知的參數(shù)進行估計使用參數(shù)方法估計需求分布常見分布:正態(tài)分布但并不是所有產(chǎn)品都適合使用正態(tài)分布來估計其他分布:伽馬分布、泊松分布及對數(shù)正態(tài)分布等9.3需求分布的刻畫利用Python對某食品企業(yè)三個產(chǎn)品(SKU1,SKU2,SKU3)的歷史銷量數(shù)據(jù)進行參數(shù)估計三個產(chǎn)品的銷量數(shù)據(jù)的時間顆粒度均和其覆蓋期保持一致使用參數(shù)方法估計需求分布

SKU1SKU2SKU3

0404292299

1638271280

211320374

325169178

449733819.3需求分布的刻畫使用參數(shù)方法估計需求分布plot_data(sales_data[‘SKU1'])9.3需求分布的刻畫使用參數(shù)方法估計需求分布plot_data(sales_data[‘SKU2'])9.3需求分布的刻畫使用參數(shù)方法估計需求分布plot_data(sales_data[‘SKU3'])9.3需求分布的刻畫平穩(wěn)性:’SKU1’的銷量變化比較平穩(wěn),’SKU2’和’SKU3’變化較大偏度性:3個SKU的銷量數(shù)據(jù)的分布并非完全對稱,’SKU2’和’SKU3’是正偏度連續(xù)性:’SKU1’和’SKU3’的銷量數(shù)據(jù)在取值上呈現(xiàn)連續(xù)變化,’SKU2’的數(shù)據(jù)在特定的區(qū)間值上有分布厚尾性:比起’SKU1’和’SKU2’的數(shù)據(jù)的分布比較集中,’SKU3’的需求分布尾部較厚使用參數(shù)方法估計需求分布9.3需求分布的刻畫正態(tài)分布是最為常用的概率分布,在整個統(tǒng)計學中占據(jù)中心地位:正態(tài)分布正態(tài)分布的圖像為鐘型,有良好的解析性質(zhì),容易分析處理對于較大的樣本,在適當?shù)臈l件下絕大部分分布都能用正態(tài)分布進行近似

9.3需求分布的刻畫

正態(tài)分布

9.3需求分布的刻畫

正態(tài)分布

9.3需求分布的刻畫在Python中,Scipy的stats模塊提供了多種分布的統(tǒng)計相關函數(shù)。接下來我們將以正態(tài)分布為例,介紹使用stats模塊定義分布、生成隨機樣本、相關概率函數(shù)的調(diào)用以及使用極大似然估計(MaximumLikelihoodEstimation,MLE)估計分布參數(shù)的方法Python中Scipy的stats模塊相關函數(shù)調(diào)用調(diào)用stats模塊的正態(tài)分布9.3需求分布的刻畫對于stats模塊中的各種分布,常用的函數(shù):Python中Scipy的stats模塊相關函數(shù)調(diào)用

9.3需求分布的刻畫對于stats模塊中的各種分布,常用的函數(shù):Python中Scipy的stats模塊相關函數(shù)調(diào)用#概率密度函數(shù)

pdf_value=norm_dist.pdf(0)

#累計分布函數(shù)

cdf_value=norm_dist.cdf(0)

#分位數(shù)函數(shù)(累計分布函數(shù)的逆函數(shù))

quantile_value=norm_dist.ppf(0.9)

print("對于標準正態(tài)分布,在x=0處的概率密度函數(shù)為:%.2f,累積分布函數(shù)為:%.2f;"

%(pdf_value,cdf_value))

print('0.9-分位點為:%.2f'

%quantile_value)

對于標準正態(tài)分布,在x=0處的概率密度函數(shù)為:0.40,累積分布函數(shù)為:0.50;

0.9-分位點為:1.289.3需求分布的刻畫

Python中Scipy的stats模塊相關函數(shù)調(diào)用#指定參數(shù)的正態(tài)分布

norm_dist=stats.norm(100,20)

#生成隨機樣本

norm_sample=norm_dist.rvs(200)

plot_data(norm_sample)9.3需求分布的刻畫對于連續(xù)型分布,可以用fit函數(shù)對樣本數(shù)據(jù)進行擬合,采用相應的估計方法找到最符合樣本的分布參數(shù)例如,下面采用極大似然估計方法對’SKU1’的銷量數(shù)據(jù)進行擬合Python中Scipy的stats模塊相關函數(shù)調(diào)用#使用極大似然估計進行擬合

normal_fitted_mu,normal_fitted_sigma=stats.norm.fit(sales_data['SKU1'],

method='MLE')

print("使用正態(tài)分布對SKU1的需求擬合,得到均值估計值為:%.2f,標準差估計值為:%.2f"

%(normal_fitted_mu,normal_fitted_sigma))使用正態(tài)分布對SKU1的需求擬合,得到均值估計值為:522.67,標準差估計值為:150.229.3需求分布的刻畫下圖展示了隨機樣本正態(tài)分布擬合后的概率密度函數(shù),可以看到正態(tài)分布能夠刻畫出銷量數(shù)據(jù)的一些特征Python中Scipy的stats模塊相關函數(shù)調(diào)用#生成擬合的分布

normal_fitted_dist=stats.norm(normal_fitted_mu,normal_fitted_sigma)

#繪制擬合出的概率密度函數(shù)

plot_fitted_pdf(sales_data['SKU1'],normal_fitted_dist)9.3需求分布的刻畫給定零售商對于’SKU1’期望的周期服務水平,根據(jù)安全庫存計算公式,調(diào)用分位點函數(shù)ppf就能計算出相應的安全庫存量Python中Scipy的stats模塊相關函數(shù)調(diào)用#給定服務服務滿足水平

given_csl=

0.95

#調(diào)用ppf()計算指定以95%的概率覆蓋需求的庫存水平

inv_level=normal_fitted_dist.ppf(given_csl)

safety_inventory=inv_level-normal_fitted_mu

print('假設需求服從正態(tài)分布,在給定服務水平%.2f時,補貨周期內(nèi)現(xiàn)貨庫存應為:%.2f,'

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

%(given_csl,inv_level,safety_inventory))假設需求服從正態(tài)分布,在給定服務水平0.95時,補貨周期內(nèi)現(xiàn)貨庫存應為:769.76,安全庫存量為:247.099.3需求分布的刻畫給定零售商對于’SKU1’期望的周期服務水平,根據(jù)安全庫存計算公式,調(diào)用分位點函數(shù)ppf就能計算出相應的安全庫存量伽馬分布

9.3需求分布的刻畫用伽馬分布對’SKU1’的銷量數(shù)據(jù)進行擬合伽馬分布#用伽馬分布擬合

gamma_fitted_paras=stats.gamma.fit(sales_data['SKU1'],method='MLE')

gamma_fitted_dist=stats.gamma(*gamma_fitted_paras)

plot_fitted_pdf(sales_data['SKU1'],gamma_fitted_dist)9.3需求分布的刻畫

泊松分布與復合泊松分布

9.3需求分布的刻畫

泊松分布與復合泊松分布poisson_dist=stats.poisson(10)

#概率質(zhì)量函數(shù)

pmf_value=poisson_dist.pmf(5)

print('對于參數(shù)為10的泊松分布,在x=5處的概率質(zhì)量函數(shù)為:%.2f'

%(pmf_value))Print:對于參數(shù)為10的泊松分布,在x=5處的概率質(zhì)量函數(shù)為:0.049.3需求分布的刻畫

泊松分布與復合泊松分布9.3需求分布的刻畫

泊松分布與復合泊松分布9.3需求分布的刻畫

泊松分布與復合泊松分布

9.3需求分布的刻畫

泊松分布與復合泊松分布Stuttering泊松分布是最早提出的用于建模慢流品需求的分布之一

9.3需求分布的刻畫厚尾分布“厚尾”是零售企業(yè)銷量數(shù)據(jù)的一種常見現(xiàn)象。在厚尾分布下,尾部極端大的需求出現(xiàn)的概率要大于正態(tài)分布這類“薄尾”分布樣本均值收斂的速度遠遠慢于正態(tài)分布下圖繪制了在正態(tài)分布和厚尾分布下對應樣本均值隨樣本量變化的曲線9.3需求分布的刻畫厚尾分布

9.3需求分布的刻畫對數(shù)正態(tài)分布

9.3需求分布的刻畫對數(shù)正態(tài)分布

9.3需求分布的刻畫穩(wěn)定分布除了對數(shù)正態(tài)分布,兩種常見的厚尾分布:帕累托分布和柯西分布也是常見的兩種厚尾分布帕累托分布柯西分布這兩種分布可以使用穩(wěn)定分布來統(tǒng)一描述穩(wěn)定分布是一類適用于對分布的厚尾和偏度進行描述的連續(xù)性概率分布在穩(wěn)定分布下,獨立同分布的隨機變量之和與單個變量的分布形式相同正態(tài)分布就是一種特殊的穩(wěn)態(tài)分布9.3需求分布的刻畫穩(wěn)定分布

9.3需求分布的刻畫穩(wěn)定分布

9.3需求分布的刻畫使用非參數(shù)方法估計需求分布參數(shù)方法假設需求服從某一分布,從歷史數(shù)據(jù)中估計相應的參數(shù)非參數(shù)方法不假設需求服從某一特定分布相對假設正確的參數(shù)方法,非參數(shù)方法在小樣本情況下,表現(xiàn)不如參數(shù)方法但是無論數(shù)據(jù)的生成過程怎么樣的,非參數(shù)方法都有一致的表現(xiàn)9.3需求分布的刻畫經(jīng)驗分布與經(jīng)驗分位數(shù)

9.3需求分布的刻畫經(jīng)驗分布與經(jīng)驗分位數(shù)Python中的應用:調(diào)用statsmodels包中的ECDF方法來得到經(jīng)驗分布使用numpy的quantile方法獲得經(jīng)驗分位數(shù)值fromstatsmodels.distributions.empirical_distributionimportECDF

ecdf=ECDF(sales_data['SKU1'])quantile_value=np.quantile(sales_data['SKU1'],0.95)9.3需求分布的刻畫核密度估計常用直方圖觀察數(shù)據(jù)的分布情況,直方圖中每一區(qū)間的“高度”反映了數(shù)據(jù)在該區(qū)間內(nèi)的頻數(shù):9.3需求分布的刻畫核密度估計

9.3需求分布的刻畫核密度估計

9.3需求分布的刻畫核函數(shù)

9.3需求分布的刻畫帶寬

9.3需求分布的刻畫帶寬

9.3需求分布的刻畫帶寬

9.3需求分布的刻畫核密度估計函數(shù)計算SKU1的核密度估計函數(shù):核函數(shù)選擇:高斯核帶寬選擇:留一交叉驗證從中采樣,計算出0.95的分位數(shù)9.3需求分布的刻畫核密度估計函數(shù)kde=grid.best_estimator_

kde_samples=kde.sample(1000)

kde_quantile_value=np.quantile(kde_samples,0.95)

print('對于SKU1,使用kde計算的0.95-分位點為:%.2f'

%(kde_quantile_value))

對于SKU1,使用kde計算的0.95-分位點為:795.799.3需求分布的刻畫分位數(shù)回歸在使用周期服務水平指標管理安全庫存時,需要計算覆蓋期內(nèi)總需求對應周期服務水平的分位數(shù)值。利用多維度信息預測分位數(shù)值:分位數(shù)線性回歸集成樹分位數(shù)回歸9.3需求分布的刻畫線性分位數(shù)回歸

9.3需求分布的刻畫線性分位數(shù)回歸

9.3需求分布的刻畫線性分位數(shù)回歸9.3需求分布的刻畫集成分位數(shù)回歸將線性回歸中原有的均方誤差損失函數(shù)替換為分位數(shù)損失函數(shù),可以得到線性分位數(shù)回歸模型。相似的思路也可以應用在其它方法中以梯度提升樹(GBDT)為例,介紹集成樹分位數(shù)回歸的使用fromsklearn.ensembleimportGradientBoostingRegressorgbdt_qr_dict={}

fortauinquantile_list:

#設置GBDT模型,損失函數(shù)設置為分位數(shù)損失函數(shù)

gbdt_qr=GradientBoostingRegressor(loss='quantile',alpha=tau,

n_estimators=200,max_depth=8,

learning_rate=.01,

min_samples_leaf=20,

min_samples_split=20)

gbdt_qr.fit(X,Y)

gbdt_qr_dict[tau]=gbdt_qr.predict(x_to_predict)

gbdt_qr_df=pd.DataFrame(gbdt_qr_dict)

gbdt_qr_df.columns=['q_'

+str(tau)fortauinquantile_list]

gbdt_qr_df['X']=x_to_predict9.3需求分布的刻畫集成分位數(shù)回歸9.4給定需求滿足率下安全庫存的計算

9.4給定需求滿足率下安全庫存的計算

蒙特卡洛模擬

9.4給定需求滿足率下安全庫存的計算

二分查找搜索

9.4給定需求滿足率下安全庫存的計算

二分查找搜索level=

0

cur_es=

1000

defbinary_search(left,right,level_ub,tar_es,dist_type,dist,N):

globallevel,cur_es

level=left+(right-left)/

2

cur_es=cal_es_value(level,level_ub,dist_type,dist,N)

ifabs(cur_es-tar_es)<=

1e-2

or(right-left)<=

1e-2:

return

溫馨提示

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

評論

0/150

提交評論