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

下載本文檔

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

文檔簡介

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

35

cold_price=

38

normal_hc_rate=

0.04

cold_hc_rate=

0.06工廠在接到中央倉或者區(qū)域倉的訂單后,平均需要2天的備貨時間,將商品從工廠運送到倉還需要1天的時間,因此倉庫補貨的提前期為3天。公司期望周期服務水平能夠達到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工具包#導入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’效果最好的分布是貝塔分布,提取對應參數(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來計算指定周期服務水平下區(qū)域倉管理模式的安全庫存量defcal_ss_decentralized(dist_dict,tau,sample_size):

"""

Args:

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

tau:期望的周期服務水平

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()}

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

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ù)安全庫存等于目標庫存水平-需求均值,計算每個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計算周期服務水平為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的安全庫存量。假設各區(qū)域的需求相互獨立,通過得到的各區(qū)域倉的需求分布函數(shù)生成更多的需求樣本,求和得到中央倉的需求樣本,計算出中央倉所需安全庫存量defcal_ss_centralized(dist_dict,tau,sample_size):

"""

Args:

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

tau:期望的周期服務水平

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來計算周期服務水平為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綜合庫存成本與運輸成本,決策存貨布局庫存成本的變化量:安全庫存的變化量*單位持貨成本平均運輸成本:提前期需求的均值*對應的運輸費率#工廠發(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,

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

cold_unit_df=cold_unit_df.merge(cold_after_cost_df,

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

cold_decrease_hc=cold_price*cold_hc_rate\

*(cold_ss_decentralized-cold_ss_centralized)

print('對于生鮮品,使用中央倉管理模式能夠降低平均庫存成本:%.2f'

%cold_decrease_hc)

cold_increase_trans=((cold_unit_df['leadtime_mean']

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

-(cold_unit_df['leadtime_mean']

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

/lead_time

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

%cold_increase_trans)

cold_avg_cost_change=cold_increase_trans-cold_decrease_hc

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

%cold_avg_cost_change)13.2綜合庫存成本與運輸成本,決策存貨布局對于生鮮品:使用中央倉管理模式能夠降低平均庫存成本:1029.77使用中央倉管理模式會增加平均運輸成本:1296.25使用中央倉管理模式會改變總平均成本:266.48對于常溫品:使用集中式管理模式能夠降低平均庫存成本:346.28

使用中央倉管理模式會增加平均運輸成本:230.75

使用中央倉管理模式會改變總平均成本:-115.52結(jié)論:對于常溫SKU來說,繼續(xù)使用中央倉管理模式總成本更低對于生鮮SKU來說,采用區(qū)域倉管理模式的總成本更低,優(yōu)先考慮生鮮品前置分倉管理13.3拓展拓展思考:在案例中,我們通過區(qū)域倉的需求分布生成更多樣本,求和得到中央倉的需求樣本,從而計算中央倉的安全庫存量。另外一種方式是首先將各區(qū)域的需求數(shù)據(jù)進行聚合,然后擬合出中央倉的需求分布,然后計算其安全庫存。這兩種方式得到的安全庫存是否相同?它們之間有什么差異?本案例使用參數(shù)化方法擬合區(qū)域倉的需求分布,如何利用非參數(shù)方法進行分析?哪種效果更好?案例中,企業(yè)要么將一個SKU的庫存全部放置在中央倉,要么全部放置在前置倉。如果將一個SKU的庫存同時放在中央倉和前置倉,應該如何考慮安全庫存的存貨布局優(yōu)化?現(xiàn)代庫存管理:模型、算法與Python實現(xiàn)第14章網(wǎng)絡庫存管理基礎14.1網(wǎng)絡分析基礎網(wǎng)絡的基本概念與表示方法:供應網(wǎng)絡通常是一個有向圖,一張圖??由一組節(jié)點??和一組能夠?qū)蓚€節(jié)點相連的邊??組成,記為??=(??,??)產(chǎn)品從工廠發(fā)出后運輸?shù)絽^(qū)域倉RDC,RDC向三個前置倉FDC1,F(xiàn)DC2和FDC3供貨14.1網(wǎng)絡分析基礎使用Python表示圖的方法:邊的數(shù)組:定義一個列表,將網(wǎng)絡中的邊存儲起來每個tuple中的第一個元素表示前任節(jié)點,第二個元素表示繼任節(jié)點這種存儲方式不便于快速查找節(jié)點相關的邊。每次查找時都需要遍歷所有邊,計算開銷較大distribute_edges=[('Factory','RDC'),('RDC','FDC1'),('RDC','FDC2'),('RDC','FDC3')]

print(distribute_edges)[('Factory','RDC'),('RDC','FDC1'),('RDC','FDC2'),('RDC','FDC3')]14.1網(wǎng)絡分析基礎使用Python表示圖的方法:鄰接矩陣:表示節(jié)點之間相鄰關系的矩陣,對于有向圖,當圖中存在由節(jié)點i指向節(jié)點j的邊時,i行j列的元素值為1,否則為0all_nodes=list(set([nodeforedgeindistribute_edgesfornodeinedge]))

adj_matrix=np.zeros((len(all_nodes),len(all_nodes)))

foriinrange(len(all_nodes)):

forjinrange(len(all_nodes)):

if(all_nodes[i],all_nodes[j])indistribute_edges:

adj_matrix[i,j]=

1

adj_matrix_df=pd.DataFrame(adj_matrix,index=all_nodes,columns=all_nodes)

print(adj_matrix_df)FDC2FactoryRDCFDC3FDC1

FDC20.00.00.00.00.0

Factory0.00.01.00.00.0

RDC1.00.00.01.01.0

FDC30.00.00.00.00.0

FDC10.00.00.00.00.014.1網(wǎng)絡分析基礎使用Python表示圖的方法:鄰接數(shù)組:以節(jié)點為索引的列表數(shù)組,其中每個元素是和該節(jié)點相鄰的節(jié)點列表,可以使用字典來實現(xiàn),字典的key為節(jié)點,value為與其連通的節(jié)點列表deffind_successors_dict(edges):

all_nodes=set([nodefortuinedgesfornodeintu])

#初始化字典,key為全部節(jié)點,value初始化為空列表

succ_dict

={node:[]fornodeinall_nodes}

#遍歷所有邊,向每個上游節(jié)點對應的列表中添加下游節(jié)點

for

pred,succ

inedges:

succ_dict[pred].append(succ)

return

succ_dict

deffind_predecessors_dict(edges):

all_nodes=set([nodefortuinedgesfornodeintu])

pred_dict={node:[]fornodeinall_nodes}

#遍歷所有邊,向每個下游節(jié)點對應的列表中添加上游節(jié)點

forpred,succinedges:

pred_dict[succ].append(pred)

returnpred_dictfind_predecessors_dict和find_successors_dict獲得與每個節(jié)點連通的上游和下游節(jié)點的字典調(diào)用上面兩個函數(shù),就可以得到分銷網(wǎng)絡的鄰接數(shù)組14.1網(wǎng)絡分析基礎使用Python表示圖的方法:NetworkX:可以用于創(chuàng)建、操作和研究復雜網(wǎng)絡的結(jié)構(gòu)、動態(tài)和功能,也可以進行圖的可視化#建立一個空的有向圖

distribute_graph=nx.DiGraph()

#向空的圖中添加邊

distribute_graph.add_edges_from(distribute_edges)

#定義繪圖位置和參數(shù)

pos={'Factory':(-1,0),'RDC':(0,0),

'FDC1':(1,0),'FDC2':(1,1),'FDC3':(1,-1)}

options={

'font_size':10,

'node_size':1500,

'node_color':'white',

'edgecolors':'black',

}

#繪制圖像

nx.draw_networkx(distribute_graph,pos,**options)

ax=plt.gca()

ax.margins(0.20)

plt.axis('off')

plt.show()NetworkX也實現(xiàn)了一些常見的網(wǎng)絡分析算法,例如計算最短路徑的Dijkstra、Bellman-Ford算法等14.1網(wǎng)絡分析基礎常見的供應網(wǎng)絡:有向樹:定義:任意兩個節(jié)點中只存在一條路徑的無向圖稱為樹,若有向圖在不考慮邊的方向時是樹,即為有向樹性質(zhì):有向樹網(wǎng)絡轉(zhuǎn)化為無向圖時,網(wǎng)絡中不存在環(huán)路,可以清楚定義層級結(jié)構(gòu)分類:有向樹包含鏈式、分布式和裝配式三類網(wǎng)路鏈式系統(tǒng):每個節(jié)點都至多有一個上游節(jié)點和一個下游節(jié)點14.1網(wǎng)絡分析基礎常見的供應網(wǎng)絡:分布式系統(tǒng):每個節(jié)點有至多一個上游節(jié)點裝配式系統(tǒng):分布式系統(tǒng)的鏡像系統(tǒng)14.1網(wǎng)絡分析基礎網(wǎng)絡庫存管理常用算法:

14.1網(wǎng)絡分析基礎網(wǎng)絡庫存管理常用算法:累計提前期的計算:節(jié)點的累計提前期是指,當其全部上游節(jié)點都沒有庫存時,從向外部供應商訂購原材料開始到該節(jié)點持有可用庫存的最短時間例:計算下圖各節(jié)點的累計提前期,‘0’節(jié)點為虛擬節(jié)點除了最上游的C1、C2和C3三個節(jié)點,其余節(jié)點到‘0’節(jié)點有多條通路在多條通路中,提前期之和最長的一條,就是該節(jié)點的累計提前期利用節(jié)點的拓撲排序逐個計算節(jié)點的累計提前期計算下游節(jié)點的累計提前期時,上游節(jié)點的累計提前期就已經(jīng)確定14.1網(wǎng)絡分析基礎defcal_cum_lt(edges,lt_dict):

#篩選出最上游的節(jié)點

roots=list(set([ifori,_inedges])-set([jf

溫馨提示

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

評論

0/150

提交評論