资料配送中心仿真与分析.docx
《资料配送中心仿真与分析.docx》由会员分享,可在线阅读,更多相关《资料配送中心仿真与分析.docx(17页珍藏版)》请在冰豆网上搜索。
资料配送中心仿真与分析
第十三章配送中心仿真与分析
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