《现代库存管理:模型、算法与Python实现》 课件 第13、14章 某食品企业Y库存共享决策实战、网络库存管理基础_第1页
《现代库存管理:模型、算法与Python实现》 课件 第13、14章 某食品企业Y库存共享决策实战、网络库存管理基础_第2页
《现代库存管理:模型、算法与Python实现》 课件 第13、14章 某食品企业Y库存共享决策实战、网络库存管理基础_第3页
《现代库存管理:模型、算法与Python实现》 课件 第13、14章 某食品企业Y库存共享决策实战、网络库存管理基础_第4页
《现代库存管理:模型、算法与Python实现》 课件 第13、14章 某食品企业Y库存共享决策实战、网络库存管理基础_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

现代库存管理:模型、算法与Python实现第13章某食品企业Y库存共享决策实战13背景介绍企业Y是一家休闲食品企业,产品主要有常温和生鲜两类:产品供应主要通过一个中央仓来完成,中央仓从工厂补货,然后向全国各地的分销商、零售商供货休闲食品市场向新兴低线城市的下沉,更多消费者接触到新零售、外卖、无人售卖等销售渠道新品类、新市场、新渠道给公司的供应链带来履约成本与效率的挑战企业的发展趋势和转型需求:建立了5个区域仓,对部分品类库存进行分仓管理决策哪些商品库存进行分仓管理,而哪些商品的库存继续留在中央仓中央仓管理的优势在于库存共享,一定程度上降低安全库存,进而降低库存成本分仓管理的优势在于工厂到各区域仓可以通过整车运输,且运输平均距离更近,降低运输成本,考虑到生鲜品需采用冷链运输,单位运输费用明显要高于常温品13解决方法从常温品和生鲜品中各挑选出一个具有一定代表性的SKU,提取这两个SKU过去一年的销量数据、价格以及运输费率。通过数据,探究如下两个问题:中央仓管理与区域仓管理两种模式下,这两个SKU的安全库存成本是多少?综合考虑库存成本和运输成本,这两个SKU应该分别选择哪种方式管理库存?13.1分散式管理和集中式管理模式下安全库存量的计算数据集概况:sales_df表:5个区域仓所覆盖区域过去1年两个SKU的销量信息’node_id’:表示区域仓id’type’:表示产品类型’Normal’:表示常温品’Cold’:生鲜品’date’:对应日期’qty’:对应日期的销量数据’unit_id’:定义一个unit为一个区域仓与一个SKU的组合,便于对每个区域仓的每种商品进行索引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分散式管理和集中式管理模式下安全库存量的计算数据集概况:transport_cost_df表:记录了核算后的节点间运输费率’predecessor’:上游节点’successor’:下游节点’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工厂在接到中央仓或者区域仓的订单后,平均需要2天的备货时间,将商品从工厂运送到仓还需要1天的时间,因此仓库补货的提前期为3天。公司期望周期服务水平能够达到90%lead_time=

3csl

=

0.913.1分散式管理和集中式管理模式下安全库存量的计算使用参数化的方法拟合出各个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('计数')

plt.show()13.1分散式管理和集中式管理模式下安全库存量的计算使用参数化的方法拟合出各个unit的需求分布13.1分散式管理和集中式管理模式下安全库存量的计算由于不同unit的分布特征有所不同,很难直接选定某一特定分布族进行参数拟合使用Python的fitter工具包,给定一些可能的分布列表,找到拟合效果最好的分布及其参数以unit’RDC01_Normal’(RDC01的常温SKU)为例,演示如何使用fitter工具包#导入fitter工具包

fromfitterimportFitter

#定义可能的分布列表

dist_list=['norm','halfnorm','lognorm','gamma','beta','chi2','uniform']#筛选出'FDC01_Normal'的销量数据

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’效果最好的分布是贝塔分布,提取对应参数

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找到拟合效果最好的分布及其参数拟合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分散式管理和集中式管理模式下安全库存量的计算定义函数cal_ss_decentralized来计算指定周期服务水平下区域仓管理模式的安全库存量defcal_ss_decentralized(dist_dict,tau,sample_size):

"""

Args:

dist_dict:各节点的需求分布(scipy.stats)

tau:期望的周期服务水平

sample_size:样本量

Return:

unit_leadtime_mean_dict:各区域仓的提前期需求均值

unit_ss_decentralized_dict:区域仓管理模式下各区域仓的安全库存量

"""

#根据分布,生成每个unit提前期需求样本

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

for_inrange(sample_size)]

forunit,distindist_dict.items()}

#计算指定周期服务水平下的分位数,作为目标库存水平

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

#根据安全库存等于目标库存水平-需求均值,计算每个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分散式管理和集中式管理模式下安全库存量的计算调用cal_ss_decentralized计算周期服务水平为0.9时,区域仓管理模式下每个unit的安全库存量unit_leadtime_mean_dict,unit_ss_decentralized_dict=cal_ss_decentralized(

unit_dist_dict,csl,10000)

#提前期需求均值将在下一节计算成本中用到

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在区域仓管理模式下的安全库存总量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的安全库存量。假设各区域的需求相互独立,通过得到的各区域仓的需求分布函数生成更多的需求样本,求和得到中央仓的需求样本,计算出中央仓所需安全库存量defcal_ss_centralized(dist_dict,tau,sample_size):

"""

Args:

dist_dict:各节点的需求分布(scipy.stats)

tau:期望的周期服务水平

sample_size:样本量

Return:

ss_centralized:各节点中央仓管理模式下的安全库存总量

"""

#根据分布,生成每个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分散式管理和集中式管理模式下安全库存量的计算调用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综合库存成本与运输成本,决策存货布局库存成本的变化量:安全库存的变化量*单位持货成本平均运输成本:提前期需求的均值*对应的运输费率#工厂发往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

#常温品使用区域仓管理模式,即由工厂发往区域仓的单位运输费率

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']

#常温品使用中央仓管理模式,单位运输费率为从工厂发往CDC与从CDC发往各区域顾客的运输费率之和

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综合库存成本与运输成本,决策存货布局#生鲜品使用区域仓管理模式的单位运输费率

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结论:对于常温SKU来说,继续使用中央仓管理模式总成本更低对于生鲜SKU来说,采用区域仓管理模式的总成本更低,优先考虑生鲜品前置分仓管理13.3拓展拓展思考:在案例中,我们通过区域仓的需求分布生成更多样本,求和得到中央仓的需求样本,从而计算中央仓的安全库存量。另外一种方式是首先将各区域的需求数据进行聚合,然后拟合出中央仓的需求分布,然后计算其安全库存。这两种方式得到的安全库存是否相同?它们之间有什么差异?本案例使用参数化方法拟合区域仓的需求分布,如何利用非参数方法进行分析?哪种效果更好?案例中,企业要么将一个SKU的库存全部放置在中央仓,要么全部放置在前置仓。如果将一个SKU的库存同时放在中央仓和前置仓,应该如何考虑安全库存的存货布局优化?现代库存管理:模型、算法与Python实现第14章网络库存管理基础14.1网络分析基础网络的基本概念与表示方法:供应网络通常是一个有向图,一张图𝒢由一组节点𝒩和一组能够将两个节点相连的边𝒜组成,记为𝒢=(𝒩,𝒜)产品从工厂发出后运输到区域仓RDC,RDC向三个前置仓FDC1,FDC2和FDC3供货14.1网络分析基础使用Python表示图的方法:边的数组:定义一个列表,将网络中的边存储起来每个tuple中的第一个元素表示前任节点,第二个元素表示继任节点这种存储方式不便于快速查找节点相关的边。每次查找时都需要遍历所有边,计算开销较大distribute_edges=[('Factory','RDC'),('RDC','FDC1'),('RDC','FDC2'),('RDC','FDC3')]

print(distribute_edges)[('Factory','RDC'),('RDC','FDC1'),('RDC','FDC2'),('RDC','FDC3')]14.1网络分析基础使用Python表示图的方法:邻接矩阵:表示节点之间相邻关系的矩阵,对于有向图,当图中存在由节点i指向节点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网络分析基础使用Python表示图的方法:邻接数组:以节点为索引的列表数组,其中每个元素是和该节点相邻的节点列表,可以使用字典来实现,字典的key为节点,value为与其连通的节点列表deffind_successors_dict(edges):

all_nodes=set([nodefortuinedgesfornodeintu])

#初始化字典,key为全部节点,value初始化为空列表

succ_dict

={node:[]fornodeinall_nodes}

#遍历所有边,向每个上游节点对应的列表中添加下游节点

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}

#遍历所有边,向每个下游节点对应的列表中添加上游节点

forpred,succinedges:

pred_dict[succ].append(pred)

returnpred_dictfind_predecessors_dict和find_successors_dict获得与每个节点连通的上游和下游节点的字典调用上面两个函数,就可以得到分销网络的邻接数组14.1网络分析基础使用Python表示图的方法:NetworkX:可以用于创建、操作和研究复杂网络的结构、动态和功能,也可以进行图的可视化#建立一个空的有向图

distribute_graph=nx.DiGraph()

#向空的图中添加边

distribute_graph.add_edges_from(distribute_edges)

#定义绘图位置和参数

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也实现了一些常见的网络分析算法,例如计算最短路径的Dijkstra、Bellman-Ford算法等14.1网络分析基础常见的供应网络:有向树:定义:任意两个节点中只存在一条路径的无向图称为树,若有向图在不考虑边的方向时是树,即为有向树性质:有向树网络转化为无向图时,网络中不存在环路,可以清楚定义层级结构分类:有向树包含链式、分布式和装配式三类网路链式系统:每个节点都至多有一个上游节点和一个下游节点14.1网络分析基础常见的供应网络:分布式系统:每个节点有至多一个上游节点装配式系统:分布式系统的镜像系统14.1网络分析基础网络库存管理常用算法:

14.1网络分析基础网络库存管理常用算法:累计提前期的计算:节点的累计提前期是指,当其全部上游节点都没有库存时,从向外部供应商订购原材料开始到该节点持有可用库存的最短时间例:计算下图各节点的累计提前期,‘0’节点为虚拟节点除了最上游的C1、C2和C3三个节点,其余节点到‘0’节点有多条通路在多条通路中,提前期之和最长的一条,就是该节点的累计提前期利用节点的拓扑排序逐个计算节点的累计提前期计算下游节点的累计提前期时,上游节点的累计提前期就已经确定14.1网络分析基础defcal_cum_lt(edges,lt_dict):

#筛选出最上游的节点

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论