《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第13章-某食品企業(yè)Y庫存共享決策實戰(zhàn)_第1頁
《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第13章-某食品企業(yè)Y庫存共享決策實戰(zhàn)_第2頁
《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第13章-某食品企業(yè)Y庫存共享決策實戰(zhàn)_第3頁
《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第13章-某食品企業(yè)Y庫存共享決策實戰(zhàn)_第4頁
《現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)》 課件 第13章-某食品企業(yè)Y庫存共享決策實戰(zhàn)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)第13章某食品企業(yè)Y庫存共享決策實戰(zhàn)13背景介紹企業(yè)Y是一家休閑食品企業(yè),產(chǎn)品主要有常溫和生鮮兩類:產(chǎn)品供應(yīng)主要通過一個中央倉來完成,中央倉從工廠補貨,然后向全國各地的分銷商、零售商供貨休閑食品市場向新興低線城市的下沉,更多消費者接觸到新零售、外賣、無人售賣等銷售渠道新品類、新市場、新渠道給公司的供應(yīng)鏈帶來履約成本與效率的挑戰(zhàn)企業(yè)的發(fā)展趨勢和轉(zhuǎn)型需求:建立了5個區(qū)域倉,對部分品類庫存進行分倉管理決策哪些商品庫存進行分倉管理,而哪些商品的庫存繼續(xù)留在中央倉中央倉管理的優(yōu)勢在于庫存共享,一定程度上降低安全庫存,進而降低庫存成本分倉管理的優(yōu)勢在于工廠到各區(qū)域倉可以通過整車運輸,且運輸平均距離更近,降低運輸成本,考慮到生鮮品需采用冷鏈運輸,單位運輸費用明顯要高于常溫品13解決方法從常溫品和生鮮品中各挑選出一個具有一定代表性的SKU,提取這兩個SKU過去一年的銷量數(shù)據(jù)、價格以及運輸費率。通過數(shù)據(jù),探究如下兩個問題:中央倉管理與區(qū)域倉管理兩種模式下,這兩個SKU的安全庫存成本是多少?綜合考慮庫存成本和運輸成本,這兩個SKU應(yīng)該分別選擇哪種方式管理庫存?13.1分散式管理和集中式管理模式下安全庫存量的計算數(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ū)域倉的每種商品進行索引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分散式管理和集中式管理模式下安全庫存量的計算數(shù)據(jù)集概況:transport_cost_df表:記錄了核算后的節(jié)點間運輸費率’predecessor’:上游節(jié)點’successor’:下游節(jié)點’normal_transport_unit_cost’:常溫品的單位運輸費率’cold_transport_unit_cost’:生鮮品的單位運輸費率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分散式管理和集中式管理模式下安全庫存量的計算

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

35

cold_price=

38

normal_hc_rate=

0.04

cold_hc_rate=

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

3csl

=

0.913.1分散式管理和集中式管理模式下安全庫存量的計算使用參數(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('計數(shù)')

plt.show()13.1分散式管理和集中式管理模式下安全庫存量的計算使用參數(shù)化的方法擬合出各個unit的需求分布13.1分散式管理和集中式管理模式下安全庫存量的計算由于不同unit的分布特征有所不同,很難直接選定某一特定分布族進行參數(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進行擬合

fitter=Fitter(unit_sales,distributions=dist_list)

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

fitted_table=fitter.summary()

print(fitted_table)13.1分散式管理和集中式管理模式下安全庫存量的計算在使用均方誤差評判擬合效果好壞時:擬合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分散式管理和集中式管理模式下安全庫存量的計算利用上述方法,為所有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分散式管理和集中式管理模式下安全庫存量的計算定義函數(shù)cal_ss_decentralized來計算指定周期服務(wù)水平下區(qū)域倉管理模式的安全庫存量defcal_ss_decentralized(dist_dict,tau,sample_size):

"""

Args:

dist_dict:各節(jié)點的需求分布(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()}

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

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

forunit,dist_leadtime_samples

inunit_leadtime_samples_dict.items()}

#計算提前期需求均值

unit_leadtime_mean_dict={unit:np.mean(dist_leadtime_samples)

forunit,dist_leadtime_samples

inunit_leadtime_samples_dict.items()}

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

unit_ss_decentralized_dict={unit:unit_oul_dict[unit]-

unit_leadtime_mean_dict[unit]

forunitindist_dict.keys()}

returnunit_leadtime_mean_dict,unit_ss_decentralized_dict13.1分散式管理和集中式管理模式下安全庫存量的計算調(diào)用cal_ss_decentralized計算周期服務(wù)水平為0.9時,區(qū)域倉管理模式下每個unit的安全庫存量unit_leadtime_mean_dict,unit_ss_decentralized_dict=cal_ss_decentralized(

unit_dist_dict,csl,10000)

#提前期需求均值將在下一節(jié)計算成本中用到

unit_leadtime_mean_df=pd.DataFrame.from_dict(

unit_leadtime_mean_dict,orient='index',columns=['leadtime_mean']).\

reset_index().rename(columns={'index':'unit_id'})

#安全庫存量

unit_ss_decentralized_df=pd.DataFrame.from_dict(

unit_ss_decentralized_dict,orient='index',columns=['ss_decentralized']).\

reset_index().rename(columns={'index':'unit_id'})

#合并出每個unit的信息表

unit_df=sales_df[['unit_id','node_id','type']].drop_duplicates()

unit_df=unit_df.merge(unit_leadtime_mean_df,on='unit_id',how='left')

unit_df=unit_df.merge(unit_ss_decentralized_df,on='unit_id',how='left')

print(unit_df)13.1分散式管理和集中式管理模式下安全庫存量的計算進而計算出每個SKU在區(qū)域倉管理模式下的安全庫存總量normal_ss_decentralized=unit_df[unit_df['type']==

'Normal'][

'ss_decentralized'].sum()

print('使用分散式管理常溫品所需安全庫存總量為:%.2f'

%normal_ss_decentralized)

cold_ss_decentralized=unit_df[unit_df['type']==

'Cold'][

'ss_decentralized'].sum()

print('使用分散式管理生鮮品所需安全庫存總量為:%.2f'

%cold_ss_decentralized)unit_idnode_idtypeleadtime_meanss_decentralized

0RDC01_NormalRDC01Normal154.254592132.144293

1RDC01_ColdRDC01Cold423.709284247.108366

2RDC02_NormalRDC02Normal127.225049154.668676

3RDC02_ColdRDC02Cold283.250822384.830874

4RDC03_NormalRDC03Normal49.43504074.808101

5RDC03_ColdRDC03Cold101.640800125.808299

6RDC04_NormalRDC04Normal57.04805161.059525

7RDC04_ColdRDC04Cold31.34104047.671219

8RDC05_NormalRDC05Normal36.77284459.176580

9RDC05_ColdRDC05Cold111.499564119.772253使用分散式管理常溫品所需安全庫存總量為:481.86,使用分散式管理生鮮品所需安全庫存總量為:925.1913.1分散式管理和集中式管理模式下安全庫存量的計算計算中央倉管理模式下兩個SKU的安全庫存量。假設(shè)各區(qū)域的需求相互獨立,通過得到的各區(qū)域倉的需求分布函數(shù)生成更多的需求樣本,求和得到中央倉的需求樣本,計算出中央倉所需安全庫存量defcal_ss_centralized(dist_dict,tau,sample_size):

"""

Args:

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

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

sample_size:樣本量

Return:

ss_centralized:各節(jié)點中央倉管理模式下的安全庫存總量

"""

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

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

for_inrange(sample_size)]

forunit,distindist_dict.items()}

centralized_leadtime_samples=[sum([unit_leadtime_samples_dict[unit][i]

forunitindist_dict.keys()])

foriinrange(sample_size)]

#計算中央倉管理模式下的安全庫存總量

ss_centralized=np.quantile(centralized_leadtime_samples,tau)\

-np.mean(centralized_leadtime_samples)

returnss_centralized13.1分散式管理和集中式管理模式下安全庫存量的計算調(diào)用cal_ss_centralized來計算周期服務(wù)水平為0.9時的中央倉管理模式下兩個SKU的安全庫存量node_list=unit_df['node_id'].unique()

normal_unit_dist_dict={node+

'_'

+

'Normal':unit_dist_dict[

node+

'_'

+

'Normal']fornodeinnode_list}

normal_ss_centralized=cal_ss_centralized(normal_unit_dist_dict,csl,10000)

print('使用中央倉管理常溫品所需安全庫存總量為:%.2f'

%normal_ss_centralized)

cold_unit_dist_dict={node+

'_'

+

'Cold':unit_dist_dict[

node+

'_'

+

'Cold']fornodeinnode_list}

cold_ss_centralized=cal_ss_centralized(cold_unit_dist_dict,csl,10000)

print('使用中央倉管理生鮮品所需安全庫存總量為:%.2f'

%cold_ss_centralized)使用中央倉管理常溫品所需安全庫存總量為:234.52,使用中央倉管理生鮮品所需安全庫存總量為:473.54使用分散式管理常溫品所需安全庫存總量為:481.86,使用分散式管理生鮮品所需安全庫存總量為:925.19使用中央倉管理模式都能夠降低安全庫存量,從而降低總庫存成本13.2綜合庫存成本與運輸成本,決策存貨布局庫存成本的變化量:安全庫存的變化量*單位持貨成本平均運輸成本:提前期需求的均值*對應(yīng)的運輸費率#工廠發(fā)往CDC的單位運輸費率

factory_to_cdc_cost=transport_cost_df[

(transport_cost_df['predecessor']==

'Factory')

&(transport_cost_df['successor']==

'CDC')][

['normal_transport_unit_cost','cold_transport_unit_cost']].values

#常溫品使用區(qū)域倉管理模式,即由工廠發(fā)往區(qū)域倉的單位運輸費率

normal_before_cost_df=transport_cost_df[

(transport_cost_df['predecessor']==

'Factory')

&(transport_cost_df['successor'].isin(node_list))][

['successor','normal_transport_unit_cost']]

normal_before_cost_df.columns=['node_id','before_trans_cost']

#常溫品使用中央倉管理模式,單位運輸費率為從工廠發(fā)往CDC與從CDC發(fā)往各區(qū)域顧客的運輸費率之和

normal_after_cost_df=transport_cost_df[

(transport_cost_df['predecessor']==

'CDC')

&(transport_cost_df['successor'].isin(node_list))][

['successor','normal_transport_unit_cost']]

normal_after_cost_df.columns=['node_id','after_trans_cost']

normal_after_cost_df['after_trans_cost']=

\

normal_after_cost_df['after_trans_cost']+factory_to_cdc_cost[0][0]13.2綜合庫存成本與運輸成本,決策存貨布局#生鮮品使用區(qū)域倉管理模式的單位運輸費率

cold_before_cost_df=transport_cost_df[

(transport_cost_df['predecessor']==

'Factory')

&(transport_cost_df['successor'].isin(node_list))][

['successor','cold_transport_unit_cost']]

cold_before_cost_df.columns=['node_id','before_trans_cost']

#生鮮品使用中央倉管理模式的單位運輸費率

cold_after_cost_df=transport_cost_df[

(transport_cost_df['predecessor']==

'CDC')

&(transport_cost_df['successor'].isin(node_list))][

['successor','cold_transport_unit_cost']]

cold_after_cost_df.columns=['node_id','after_trans_cost']

cold_after_cost_df['after_trans_cost']=

\

normal_after_cost_df['after_trans_cost']+factory_to_cdc_cost[0][1]normal_unit_df=unit_df[unit_df['type']==

'Normal']

normal_unit_df=normal_unit_df.merge(normal_before_cost_df,

on='node_id',how='left')

normal_unit_df=normal_unit_df.merge(normal_after_cost_df,

on='node_id',how='left')

normal_decrease_hc=normal_price*normal_hc_rate\

*(normal_ss_decentralized-normal_ss_centralized)

13.2綜合庫存成本與運輸成本,決策存貨布局print('對于常溫商品,使用集中式管理模式能夠降低平均庫存成本:%.2f'

%normal_decrease_hc)

normal_increase_trans=((normal_unit_df['leadtime_mean']

*normal_unit_df['after_trans_cost']).sum()

-(normal_unit_df['leadtime_mean']

*normal_unit_df['before_trans_cost']).sum())\

/lead_time

print('對于常溫品,使用中央倉管理模式會增加平均運輸成本:%.2f'

%normal_increase_trans)

normal_avg_cost_change=normal_increase_trans-normal_decrease_hc

print('對于常溫品,使用中央倉管理模式會改變總平均成本:%.2f'

%normal_avg_cost_change)對于常溫商品,使用集中式管理模式能夠降低平均庫存成本:346.28

對于常溫品,使用中央倉管理模式會增加平均運輸成本:230.75

對于常溫品,使用中央倉管理模式會改變總平均成本:-115.5213.2綜合庫存成本與運輸成本,決策存貨布局cold_unit_df=unit_df[unit_df['type']==

'Cold']

cold_unit_df=cold_unit_df.merge(cold_before_cost_df,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論