13 配送中心仿真与分析.docx
- 文档编号:6217293
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:16
- 大小:468.96KB
13 配送中心仿真与分析.docx
《13 配送中心仿真与分析.docx》由会员分享,可在线阅读,更多相关《13 配送中心仿真与分析.docx(16页珍藏版)》请在冰豆网上搜索。
13配送中心仿真与分析
第十三章配送中心仿真与分析
13.1建立概念模型
13.1.1系统描述
配送中心时从事货物配送并组织对用户的送货,以实现销售和供应服务的现代流通设施。
它不同于传统的仓储设施,在现代商业社会中,配送中心已经成为连锁企业的商流中心、物流中心、信息流中心,是连锁经营得以正常运转的关键设施。
下面是一个典型的配送中心建模过程,该配送中心从三个供应商进货,向三个生长商发货。
仿真的目的是研究该配送中心的即时库存成本和利润,并试图加以改善。
13.1.2系统数据
供货商(三个):
当三个供应商各自供应的产品在配送中心的库存小于10件时开始生产,库存大于20件时停止生产。
供应商一和供应商二分别以4小时一件的效率向配送中心送产品,供应商提供一件产品的时间服从3-6小时均匀分布。
配送中心发货:
当三个生产商各自的库存大于10件时停止发货。
当生产商一的库存量小于2时,向该生产商发货;当生产商二的库存量小于3时,向该生产商发货;当生产商三的库存量小于4时,向该生产商发货。
配送中心成本和收入:
进货成本3元/件;供货价格5元/件;每件产品在配送中心存货100小时费用1元。
生产商(三个):
三个生产商均连续生产。
生产商一每生产一件产品需要6小时;生产商二每生产一件产品的时间服从3-9小时的均匀分布;生产商二每生产一件产品的时间服从2-8小时的均匀分布。
13.1.3概念模型
13.2建立Flexsim模型
第1步:
模型实体设计
模型元素
系统元素
备注
Flowitem
产品
Source
发生产品
3个Source发生产品的速度相同且快于供货商供应速度
模型前面的三个Processor(按模型流程)
供货商
3个Processor加工速率不同,按照模型的系统数据进行设定
Rack
配送中心
3个Rack分别对应3个供货商
Queue
生产商仓库
3个Queue订货条件不同,根据模型的系统数据进行设定
模型后面的三个Processor(按模型流程)
生产商
3个Processor加工速率不同,按照模型的系统数据进行设定
Sink
产品收集装置
产品的最终去处
第2步:
在模型中加入实体
从模型中拖入3个Source、6个Processor、3个Rack、3个Queue和1个Sink到操作区中,如图13-1所示:
图13-1模型实体布局图
第3步:
连接端口
根据配送的流程,对模型做如下的连接:
每个Source分别连到各自的Processor,再连到各自的Rack,每个Rack都要与后面的每一个Queue进行连接(配送中心送出产品对三家生产商是均等的),每一个Queue再连接到各自的Processor,最后三个Processor都连到Sink。
如图13-2所示:
图13-2连接后的模型实体布局图
第4步:
Source参数设置
因为三个Source在这里只是产生产品的装置,所以对三个Source做同样的设定。
为了使Source产生实体不影响后面Processor的生产,应将它们产生实体的时间间隔设置的尽可能小。
双击一个Source打开参数设置页。
在Source项目下的Inter-Arrivaltime下拉菜单中选择ConstantValue。
如图13-3所示:
图13-3Inter-Arrivaltime下拉菜单
点击Inter-Arrivaltime下拉菜单后的按钮
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“Returnconstanttimeof1.”如图13-4所示:
图13-4Source发生产品的时间间隔编辑窗口
点击OK保存退出。
然后对其它两个Source做同样的设置。
第5步:
Processor(供货商)参数设置
三个Processor相当于三个供货商,根据预先设计好的数据对其进行设置,为了描述的需要,我们按照模型中由上至下的顺序依次将三个Processor看作供货商一、供货商二、供货商三。
双击最上面的Processor打开参数设置页,在ProcesTimes项目下ProcessTime的下拉菜单中选择默认设置。
如图13-5所示:
图13-5Processor的参数编辑窗口
点击ProcessTime下拉菜单后的参数编辑按钮
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“Returnconstanttimeof4.”如图13-6所示:
图13-6ConstantValue的参数编辑窗口
在这个模型中,我们将1个单位时间定义为1小时,那么这条指令的意思就是该供应商在收到订单后的成产效率为每4小时1个产品。
根据预先设计的系统数据,供货商一和供货商二的生产效率是一样的,都为每4小时1个产品,所以对中间的Processor也进行同样的操作即可完成设置。
对于最下面的Processor,在ProcessTime的下拉菜单中选择UniformDistribution(均匀分布)。
如图13-7所示:
图13-7ProcessTime下拉菜单
点击ProcessTime下拉菜单后的参数编辑按钮
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“AUniformdistributionwithaminimumvalueof2andamaximumvalueof6usingrandomnumberstream1.”如图13-8所示:
图13-8UniformDistribution的参数编辑窗口
这条指令的意思是该供应商在收到订单后每生产1个产品的时间服从2-6的均匀分布。
第6步:
Rack参数设置
双击一个Rack打开参数设置页。
在RackTriggers项目下的OnEntry下拉菜单中选择CloseandOpenPorts。
如图13-9所示:
图13-9OnEntry下拉菜单
点击OnEntry下拉菜单后的参数编辑按钮
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“Ifcontent(current)==20thencloseinputportsoftheinobject(current,1)object.”如图13-10所示:
图13-10CloseandOpenPorts的参数编辑窗口
这条指令的意思是,如果Rack的当前存储产品数增加到20的话就关闭与它的输入端口1相连的实体(即Processor)的输入端口,这就相当于当供货商一提供的产品达到20的库存时就配送中心就停止供货商一的供货。
说明:
语句content(current)==20表示当前实体中临时实体的个数等于20;
语句closeinput表示关闭一个实体的输入端口;对应的openinput表示打开一个实体的输入端口,后面将会用到这个指令;
语句inobject(current,1)表示与当前实体输入端口1相连的实体。
类似的,在RackTriggers项目下的OnExit下拉菜单中选择CloseandOpenPorts。
点击OnEntry下拉菜单后的参数编辑按钮
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“Ifcontent(current)==10thenopeninputportsoftheinobject(current,1)object.”如图13-11所示:
图13-11CloseandOpenPorts的参数编辑窗口
这条指令的意思是,如果Rack的当前存储产品数减少到10的话就打开与它的输入端口1相连的实体(即Processor)的输入端口,这就相当于当来自供货商一的产品小于10个的时候供货商一就恢复对配送中心的供货。
我们对另外两个货架进行同样的设置。
第7步:
Queue参数设置
三个Queue在模型中代表三个生产商的仓库,它们根据自己的需求向配货中心订货。
为了描述的需要,我们按照模型中由上至下的顺序依次将三个Queue和Processor看作生产商一、生产商二、生产商三。
双击最上面的Queue打开参数设置页。
在Queue项目下,将MaximumContent改为15。
如图13-12所示:
图13-12Queue参数设置页
点击Apply保存设置。
在Flow项目下的Pull选项前面点击打勾。
如图13-13所示:
图13-13Queue参数设置页的Flow项目
点击PullFromPort下拉菜单后面的代码编辑按钮
,对代码进行如下的编辑(粗体为更改部分):
“returnduniform(1,3);”如图13-14所示:
图13-14PullFromPort代码设置页
说明:
Pull命令表示实体将按照自己的需求从它前面的输出端口拉入所需实体(而不是被动的接受前面端口送来的实体);
returnduniform(1,3)语句表示Queue从它前面的三个Rack机率均等的拉入实体;duniform(1,3)命令表示从1到3的均匀离散整数分布。
经过这样的设置以后,配送中心的三个Rack将有均等的机会将自己的产品送到这个Queue。
在QueueTriggers项目向的OnEntry下拉菜单中选择CloseandOpenPorts。
如图13-15所示:
图13-15OnEntry下拉菜单
点击OnEntry下拉菜单后的参数编辑按钮
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“Ifcontent(current)>=10thencloseinputportsofthecurrentobject.”如图13-16所示:
图13-16CloseandOpenPorts的参数编辑窗口
这条指令的意思是,如果Queue的当前存储产品数增加到10的话就关闭它的输入端口,这就相当于当生产商一的库存产品达到10的时候配送中心就不再送货给它。
类似的,在QueueTriggers项目下的OnExit下拉菜单中选择CloseandOpenPorts。
如图13-17所示:
图13-17OnExit下拉菜单
点击OnExit下拉菜单后的参数编辑按钮
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“Ifcontent(current)<=2thenopeninputportsofthecurrentobject.”如图13-18所示:
图13-18CloseandOpenPorts的参数编辑窗口
这条指令的意思是,如果Queue的当前存储产品数减少到2的话就打开它的输入端口,这就相当于当生产商一的库存产品减少到2的时候配送中心继续送货给它。
保存退出。
对于剩下的两个Queue,我们所做的相同设置是:
改变MaximumContent为15,点选它们Flow项目下的Pull选项并进行相关的代码编辑,对QueueTriggers项目下的OnEntry触发进行同样的设置。
不同的设置是对QueueTriggers项目下的OnExit触发进行的修改和编辑。
对于中间的Queue,我们在OnExit下拉菜单中仍然选择CloseandOpenPorts。
然后点击OnExit下拉菜单后的参数编辑按钮
将指令改为:
(粗体为改动部分)
“Ifcontent(current)<=3thenopeninputportsofthecurrentobject.”如图13-19所示:
图13-19CloseandOpenPorts的参数编辑窗口
对于最下边的Queue,我们在OnExit下拉菜单中仍然选择CloseandOpenPorts。
然后点击OnExit下拉菜单后的参数编辑按钮
将指令改为:
(粗体为改动部分)
“Ifcontent(current)<=4thenopeninputportsofthecurrentobject.”如图13-20所示:
图13-20CloseandOpenPorts的参数编辑窗口
可以发现,唯一改变的只是对需求产品的最低库存条件,其它并没有变化。
第8步:
Processor(生产商)参数设置
后面的三个Processor相当于三个生产商,根据预先设计好的数据对其进行设置,为了描述的需要,我们按照模型中由上至下的顺序依次将三个Processor看作生产一、生产商二、生产商三。
双击最上面的Processor打开参数设置页,在ProcesTimes项目下ProcessTime的下拉菜单中选择默认设置。
点击ProcessTime下拉菜单后的参数编辑按钮
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“Returnconstanttimeof6.”如图13-21所示:
图13-21ConstantTime的参数编辑窗口
在这个模型中,我们将1个单位时间定义为1小时,那么这条指令的意思就是该生产商在的成产效率为每6小时1个产品。
对于中间的Processor,即生产商二,我们在ProcessTime的下拉菜单中选择UniformDistribution(均匀分布)。
如图13-22所示:
图13-22ProcessTime下拉菜单
点击ProcessTime下拉菜单后的参数编辑按钮
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“AUniformdistributionwithaminimumvalueof3andamaximumvalueof9usingrandomnumberstream1.”如图13-23所示:
图13-23UniformDistribution的参数编辑窗口
这条指令的意思是该生产商每生产1个产品的时间服从3-9的均匀分布。
对于最下面的的Processor,即生产商三,我们在ProcessTime的下拉菜单中选择UniformDistribution(均匀分布)。
如图13-24所示:
图13-24ProcessTime下拉菜单
点击后面的
,在弹出的编辑框中进行如下编辑:
(粗体为改动部分)
“AUniformdistributionwithaminimumvalueof2andamaximumvalueof8usingrandomnumberstream1.”如图13-25所示:
这条指令的意思是该生产商每生产1个产品的时间服从2-8的均匀分布。
图13-25UniformDistribution的参数编辑窗口
这样,整个模型的基本参数就设置完毕。
13.3模型运行
第9步:
编译
到此,我们可以对模型进行编译和运行了。
单击主视窗底部的
按钮。
编译过程完成后,就可以进行模型的重置和运行了。
第10步:
重置模型
单击主视窗左下角
按钮。
重置模型可以保证所有系统变量都是初始值,并将模型中所有流动实体清除。
第11步:
运行模型
单击主视窗底部
按钮。
模型运行时的截图如图13-26所示:
图13-26模型运行截图
要停止运行,可随时按
按钮。
后面你将学到如何按特定时间长度和特定重复次数来运行模型。
当模型定义中用到随机分布时,多次运行模型是很重要的。
要加快或减慢模型运行速度,可左右移动视窗底部的运行速度滑动条。
图13-27时间控制工具条
移动此滑动条能改变仿真时间与真实时间的比率,它完全不会影响模型运行的结果。
13.4数据分析
点击软件窗口右下角的
按钮(实验控制器)。
在打开的窗口中做如下的设置:
将SimulationEndTime值设为8760.00(在该实验中,1个单位时间代表1个小时,我们要对模型运行一年的数据进行收集,即让模型运行24(小时)×365(天)=8760小时);
将NumberofScenarios值设为1;
将ReplicationsperScenario值设为1;如图13-28所示:
图13-28实验控制器编辑窗口
保存设置并退出。
点击
按钮重置模型。
再次运行模型,可以适当的加快仿真运行的时间,这次当仿真时间到8760时模型会自动停止运行。
数据收集分析。
在操作区中,按住键盘的Ctrl键,同时点击鼠标左键分别点击三个Rack,则三个Rack被选中,被选中的实体显示出红色边框。
如图13-29所示:
图13-29模型中Rack被选中截图
点击软件菜单栏中的Stats,在弹出的下拉菜单中选中StatsCollecting,在右侧弹出的选项中点击选择SelectedObjectsOn。
如图13-30所示:
图13-30菜单栏中的Stats下拉菜单
这个操作打开了所选中实体的数据收集开关。
右键点击一个Rack选择Properties打开属性页。
点击选择Statistics项目。
如图13-31所示:
图13-31Rack属性页中的Statistics
在所显示的数据中,对我们的分析有帮助的数据是(每次运行模型所收集的数据会不相同,这里仅对这一次模型运行的数据结果进行分析):
Content下的Average(该Rack每小时的平均库存),即12.32;
Throughput下的Input(该Rack在运行时间内的总输入)即1751;
Throughput下的Output(该Rack在运行时间内的总输出)即1738;
由以上的数据和模型所预先设定的产品成本,可以得到配送中心这个Rack的收益情况:
进货总成本:
1751×3=5253(元)
供货总收入:
1738×5=8690(元)
存货成本:
12.32×8760/100×1=1079.23(元)
利润:
8690-5253-1079=2358(元)
用同样的方法,我们还需要计算出另外两个Rack的收益情况(这里就不再截图详细说明)。
它们的利润分别是2323元和2519元(数据具有一定的随机性,所以这里就不再一一列举各项指标,只提供结果和分析方法)。
这样该配送中心的总利润就为2358+2323+2519=7200(元)。
为了研究出库存对配送中心利润的影响,我们可以改变配送中心每个Rack的最大存储(该数据在Rack参数页的RackTriggers项目下的OnEntry下进行编辑)和对供货商的订货条件(即库存低于多少时订货,这个数据在Rack参数页的RackTriggers项目下的OnExit下进行编辑)来多次的运行模型并进行数据分析,通过对比就可以知道怎样的设置能使得配送中心的利润最大。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 配送中心仿真与分析 配送 中心 仿真 分析