物流仿真实验报告
大连海事大学实验报告
专业:物流工程
学号: 2220132186 姓名:杜晓钰
班:一
课程名称:物流系统仿
实验时间: 2016/7/3 指导教师:郑红星
真
实验名称:服务设施的效能仿真
实验成绩:
一、 实验目的
Flexsim入门及学会用简单设置和代码编写完成简单服务台设施仿真,并估计该设施效能。 二、 实验工具
Flexsim软件 三、 实验过程及内容 3.1 实验背景
一个服务设施包括两个A类服务台和一个B类服务台。假设顾客到达设施的时间间隔是均值为1分钟的独立同分布指数随机变量。到达后,顾客确定为1类顾客或2类顾客,概率分别是0.75和0.25。1类顾客能被任意服务台服务,但如果A类服务台可用就选A类。1类顾客的服务时间为均值为0.8分钟的独立同分布的指数随机变量,不管是哪类服务台。发现所有服务员都在忙的1类顾客进入类型1顾客的单一先进先出的队列。2类顾客需要A类服务台和B类服务台同时
服务。2类顾客的服务时间服从0.5到0.7之间的均匀分布。2类顾客到达发现A类服务台忙或B类服务台忙时,则进入类型2顾客的单一先进先出队列。任何顾客完成服务后,如果是2类顾客且A类服务台与B类服务台均闲,则给予优化。否则,1类顾客优先。仿真该设施正好1000分钟,并估计该服务设施的效能。 3.2 建模仿真
设计完成后的整体布局图
参数设置: 1、 发生器
顾客到达设施的时间间隔是均值为1分钟的独立同分布指数随机变量。顾客确定为1类顾客或2类顾客,概率分别是0.75和0.25。
2、 1类顾客队列(Queue4)
1类顾客能被任意服务台服务,但如果A类服务台可用就选A类。发现所有服务员都在忙的1类顾客进入类型1顾客的单一先进先出的队列。
3、 2类顾客队列(Queue5)
2类顾客需要A类服务台和B类服务台同时服务。2类顾客到达发现A类服务台忙或B类服务台忙时,则进入类型2顾客的单一先进先出队列。任何顾客完成服务后,如果是2类顾客且A类服务台与B类服务台均闲,则给予优化。否则,1类顾客优先。
4、 A服务台
1类顾客的服务时间为均值为0.8分钟的独立同分布的指数随机变量。
5、 B服务台
1类顾客的服务时间为均值为0.8分钟的独立同分布的指数随机变量;2类顾客的服务时间服从0.5到0.7之间的均匀分布。
3.3 建模仿真数据和分析
仿真报告:
1类顾客和2类顾客的平均等待时间:
A服务台的利用率:
B服务台的利用率:
从老师平时课堂的讲解可知,分析一个服务设施的效能需要从两方面着手:服务质量和承载力。由上各表所知,顾客到达后的等待时间较短,服务质量优良;两个服务台的空闲及工作时间比例较均匀,承载力优良。故,该服务设施的效能为优。 四、 实验总结
通过此次实验,学习了如何用Flexsim软件来建立模型,通过系统仿真的构成,组织和操作来了解Flexsim中各术语的运用和作用。加深了对Flexsim功能的设置和操作方法,并对模型的建立有了一个整体的了解。
该模型存在着一个问题,即可以保证2类顾客到达时,若两台服务台空闲即可进行服务,但当2类顾客服务时,2台服务台的容量返回值不全为0,这时1类顾客可能会从A服务台进入,就不能保证2类顾客是被2台服务台同时服务。这个问题我还没有想到如何改进。
感谢老师平时课堂的深刻讲解,让我对Flexsim软件有了更深入的认识。
附录
模型涉及到的代码如下: ● 1类服务队列-OnMessage
treenodecurrent = ownerobject(c);
treenode port1 = node("Processor6",model()); treenode port2 = node("Processor7",model()); intAsu = content(port1); intBsu = content(port2); if(Asu = 0&&Bsu = 0){ closeoutput(current); }
else{
openoutput(current); }
● 2类服务队列-OnMessage
treenodecurrent = ownerobject(c);
treenode port1 = node("Processor6",model()); treenode port2 = node("Processor7",model()); intAsu = content(port1); intBsu = content(port2); if(Asu = 0&&Bsu = 0){ openoutput(current); }
else{
closeoutput(current); }
● B服务台-Process Time
treenodecurrent = ownerobject(c); treenodeitem = parnode(1);
intcase_val = getitemtype(item); switch (case_val) {
case1: returnexponential(0.0, 48.0, 0); case2: returnuniform(30.0,42.0,0); }
return0;