13 配送中心仿真与分析Word下载.docx
《13 配送中心仿真与分析Word下载.docx》由会员分享,可在线阅读,更多相关《13 配送中心仿真与分析Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
![13 配送中心仿真与分析Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/4/7a66f253-e606-48c9-8666-5bca92aae417/7a66f253-e606-48c9-8666-5bca92aae4171.gif)
生产商二每生产一件产品的时间服从2-8小时的均匀分布。
13.1.3概念模型
13.2建立Flexsim模型
第1步:
模型实体设计
模型元素
系统元素
备注
Flowitem
产品
Source
发生产品
3个Source发生产品的速度相同且快于供货商供应速度
模型前面的三个Processor(按模型流程)
供货商
3个Processor加工速率不同,按照模型的系统数据进行设定
Rack
配送中心
3个Rack分别对应3个供货商
Queue
生产商仓库
3个Queue订货条件不同,根据模型的系统数据进行设定
模型后面的三个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下拉菜单
“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。
“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下拉菜单
“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下拉菜单后的参数编辑按钮
将指令改为:
=3thenopeninputportsofthecurrentobject.”如图13-19所示:
图13-19CloseandOpenPorts的参数编辑窗口
对于最下边的Queue,我们在OnExit下拉菜单中仍然选择CloseandOpenPorts。
“Ifcontent(current)<
=4thenopeninputportsofthecurrentobject.”如图13-20所示:
图13-20CloseandOpenPorts的参数编辑窗口
可以发现,唯一改变的只是对需求产品的最低库存条件,其它并没有变化。
第8步:
Processor(生产商)参数设置
后面的三个Processor相当于三个生产商,根据预先设计好的数据对其进行设置,为了描述的需要,我们按照模型中由上至下的顺序依次将三个Processor看作生产一、生产商二、生产商三。
“Returnconstanttimeof6.”如图13-21所示:
图13-21ConstantTime的参数编辑窗口
在这个模型中,我们将1个单位时间定义为1小时,那么这条指令的意思就是该生产商在的成产效率为每6小时1个产品。
对于中间的Processor,即生产商二,我们在ProcessTime的下拉菜单中选择UniformDistribution(均匀分布)。
如图13-22所示:
图13-22ProcessTime下拉菜单
“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下进行编辑)来多次的运行模型并进行数据分析,通过对比就可以知道怎样的设置能使得配送中心的利润最大。