系统仿真报告.docx
- 文档编号:29095074
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:26
- 大小:2.18MB
系统仿真报告.docx
《系统仿真报告.docx》由会员分享,可在线阅读,更多相关《系统仿真报告.docx(26页珍藏版)》请在冰豆网上搜索。
系统仿真报告
系统仿真实验报告
学院机电学院
专业工业工程
班级2
学号3111000649
姓名彭元元
指导教师樊昶明
2014年6月5日
实验2排队系统仿真
一、学习目的
1.了解仿真的特点
2.学习如何建构模型
3.熟悉eM-Plant基本的对象和操作
4.掌握排队系统的特点与仿真的实现方法
二、问题描述
(1)、在一定时间内市民到达银行窗口的人数的概率服从泊松分布,则市民到达售票窗口的时间间隔服从指数分布,平均到达时间为5min。
(2)、售票窗口的服务时间服从指数分布,平均服务时间为4min。
(3)、采取先进先服务服务规则。
三、系统建模
3.1仿真目标
通过对银行排队系统的仿真,研究银行系统的服务水平和改善银行服务水平的方法,为银行提高顾客满意度,优化顾客服务流程服务。
3.2.系统建模
3.2.1系统调研
1.系统结构:
银行服务大厅的布局,涉及的服务设备
2.系统的工艺参数:
到达-取号-等待-服务-离开
3.系统的动态参数:
顾客的到达时间间隔,工作人员的服务时间
4.逻辑参数:
排队规则,先到先服务
5.系统的状态参数:
排队队列是否为空,如果不为空队长是多少,服务台是否为空
6.系统的输入输出变量:
输入变量确定其分布和特征值,顾客的到达时间间隔的概率分布表和每个顾客被服务时间的概率分布.输出变量根据仿真目标设定.包括队列的平均队长、最大队长、仿真结束时队长、总服务人员、每个顾客的平均服务时间、顾客平均排队等待服务时间、业务员利用率等。
3.2.2系统假设
1.取号机前无排队,取号时间为0
2.顾客排队符合先进先出的排队规则
3.一个服务台一次只能对一个顾客服务
4.所有顾客只有一种单一服务
5.仿真时间为1个工作日(8小时)
6.等候区的长度为无限长
3.2.3系统建模
系统模型:
3.2.4仿真模型
1.实体:
银行系统中的实体是人(主动体)
2.属性:
到达时间间隔、接受服务的时间、接受服务类型
3.事件:
顾客到达、开始取号、取号结束、进入队列、出队列、接受服务、服务完成、离开银行。
4.活动:
到达、取号、排队、服务、离开
5.资源:
取号机、排队的座椅、服务柜台
四、系统仿真
4.1针对本实验的单服务台系统则可以简单表示为:
4.2创建一个实体
选中MUs目录下的Entity,然后按住Ctrl,并拖到QueueSystem目录下,就复制过来了,右击改名为person。
4.3设置各控件属性
双击source,打开其属性对话框,修改Attributes选项卡里面的MU值,单击后面的
按钮,打开selectobject对话框,选择前面新建的person,单击OK。
4.4双击按钮,先设置Attributes选项卡中的Capacity属性值,将其改为-1,表示无限量,单击Apply,然后选择times选项卡,将processingtime改为0,单击OK。
4.5双击Drain,将times选项卡中的processingtime值改为0,单击OK。
4.6双击Eventcontroller,选择settings选项卡,根据要求,设置Data为开始时间,End为结束时,单击OK。
4.7创建Method以及Tablefile
在tools工具栏中选择Method按钮和Tablefile按钮,然后在Frame中创建相应的Method和Tablefile,右击弹出快捷菜单,选择Rename进行改名,分别创建6个Method和3个Tablefile。
4.8创建两个全局变量
在tools工具栏里面选择
Variable按钮,创建两个全局变量:
SimulationTimes、QueueNumberCount,将两个全局变量中Value选项卡中的DataType都改为integer,单击OK。
4.9修改person属性
在左边根目录下双击Person,弹出对话框,选择CustomAttributes选项卡。
4.10单击new按钮,新建一个属性变量,Name为arrivaltime,DataType为time。
4.11单击OK,返回前面对话框,再新建两个类型为time的serverTime和waitTime的属性变量。
4.12编辑表格属性
设置QueueTab第1列的DataType为integer,第2列的datatype为integer,第3列的DataType为real,第4列的DataType为integer,第5列的DataType为integer。
设置CustomsTab第1列的DataType为integer,第2列的DataType为integer,第3列的DataType为time,第4列的DataType为time,第5列的DataType为real。
设置customs20Tab的第1列的DataType为integer,第2列的DataType为time,第3列的DataType为time,第4列的DataType为time,第5列的DataType为time。
选中第一列,单击format>format,出现listformat对话框,将DataType改为integer,单击OK。
其他表格按同样方法设置。
4.13编写代码
双击Method,在里面编写相应的代码,具体见后面代码。
控制
4.14编写完代码后需要把method放到相应的位置,来控制仿真的运行,双击gukedaoda,选择controls选项卡,将Entrance属性值设为QueueSystem.QueueFrame.ArrivalIntervalTime。
4.15双击quhao,选择controls选项卡,将Entrance属性值设为.Models.QueueSystem.QueueFrame.CustomServerTime
4.16同样设置drain中entrance属性值为.Models.QueueSystem.QueueFrame.ComputeQueueLength
4.17仿真结果分析
仿真结果如下图。
平均等待时间为16:
19.3328,与理论值的16min很相近;平均队长为3.84,与理论值的3.2很接近。
4.18代码
Reset代码:
is
do
deleteMovables;
QueueNumberCount:
=0;
end;
Init代码
is
do
QueueNumberCount:
=0;
end;
Endsim代码
is
tab:
table;
do
tab.create;
Buffer.statistics(tab);
buffer.statistics;
QueueTab[1,SimulationTimes]:
=SimulationTimes;
QueueTab[2,SimulationTimes]:
=tab[4,1];
QueueTab[4,SimulationTimes]:
=tab[9,1];
QueueTab[5,SimulationTimes]:
=tab[6,1];
tab.delete;
singleProc.statistics(tab);
CustomsTab[1,SimulationTimes]:
=SimulationTimes;
CustomsTab[2,SimulationTimes]:
=tab[5,1];
CustomsTab[3,SimulationTimes]:
=tab[20,1];
CustomsTab[4,SimulationTimes]:
=tab[15,1];
CustomsTab[5,SimulationTimes]:
=tab[17,1];
ifSimulationTimes<30then
.models.queuesystem.queueframe.EventController.reset;
SimulationTimes:
=SimulationTimes+1;
.models.queuesystem.queueframe.EventController.start;
else
SimulationTimes:
=1;
end;
end;
ArrivalIntervalTime代码
is
rand:
real;
do
rand:
=Z_uniform(SimulationTimes,0,1);
ifrand>0.0andrand<=0.125then
Source.interval:
=60*1;
elseifrand>0.125andrand<=0.250then
Source.interval:
=60*2;
elseifrand>0.250andrand<=0.375then
Source.interval:
=60*3;
elseifrand>0.375andrand<=0.5then
Source.interval:
=60*4;
elseifrand>0.5andrand<=0.625then
Source.interval:
=60*5;
elseifrand>0.625andrand<=0.75then
Source.interval:
=60*6;
elseifrand>0.75andrand<=0.875then
Source.interval:
=60*7;
elseifrand>0.875andrand<=1.0then
Source.interval:
=60*8;
end;
@.arrivalTime:
=eventcontroller.simtime;
end;
CustomServerTime代码
is
rand:
real;
do
@.serverTime:
=SingleProc.ProcTime;
rand:
=Z_uniform(1,0,1);
ifrand>0.0andrand<=0.1then
SingleProc.ProcTime:
=60*1;
elseifrand>0.1andrand<=0.3then
SingleProc.ProcTime:
=60*2;
elseifrand>0.3andrand<=0.6then
SingleProc.ProcTime:
=60*3;
elseifrand>0.6andrand<=0.85then
SingleProc.ProcTime:
=60*4;
elseifrand>0.85andrand<=0.95then
SingleProc.ProcTime:
=60*5;
elseifrand>0.95andrand<=1.0then
SingleProc.ProcTime:
=60*6;
end;
end;
ComputeQueueLength代码
is
do
QueueNumberCount:
=QueueNumberCount+1;
QueueTab[3,SimulationTimes]:
=(QueueTab[3,SimulationTimes]*(QueueNumberCount-1)+Buffer.numMU)/QueueNumberCount;
ifsimulationTimes=1andQueueNumberCount=1then
Customs20Tab[1,QueueNumberCount]:
=QueueNumberCount;
Customs20Tab[2,QueueNumberCount]:
=@.arrivalTime;
Customs20Tab[3,QueueNumberCount]:
=0;
Customs20Tab[4,QueueNumberCount]:
=@.serverTime;
Customs20Tab[5,QueueNumberCount]:
=@.statAvgLifeSpan-@.serverTime;
elseifsimulationTimes=1andQueueNumberCount<=20then
Customs20Tab[1,QueueNumberCount]:
=QueueNumberCount;
Customs20Tab[2,QueueNumberCount]:
=@.arrivalTime;
Customs20Tab[3,QueueNumberCount]:
=@.arrivalTime-Customs20Tab[2,QueueNumberCount-1];
Customs20Tab[4,QueueNumberCount]:
=@.serverTime;
Customs20Tab[5,QueueNumberCount]:
=@.statavglifespan-@.serverTime;
end;
end;
实验三单队多服务台排队系统仿真建模与分析
一、假设条件:
(1)、在一定时间内游人到达售票窗口的人数的概率服从泊松分布,则游人到达售票窗口的时间间隔服从指数分布,平均到达时间为5min。
(2)、售票窗口的服务时间服从指数分布,平均服务时间为4min。
(3)、采取先进先服务服务规则。
(4)多服务台排队系统
二、仿真建模
(1)、在Frame中放入source、buffer、singleproc、drain、variable、method、display等对象,如下图。
然后改名,把相应的对象链接起来。
(2)、各个对象的参数设置
1)variable对象设置
zongduiliushijian、zongdengdaishijian、pingjundouliushijian、pingjundengdaishijian的datetype设置成time;pingjunduichang、a、r、t的datetype设置成real。
如下图。
2)代码的编写
ØReset
is
do
deletemovables;
zongdouliushijian:
=0;
zongdengdaishijian:
=0;
pingjundouliushijian:
=0;
pingjundengdaishijian:
=0;
pingjunduichang:
=0;
r:
=0;
end;
ØKaishi
is
do@.kaishitime:
=eventcontroller.simtime;
end;
ØKaishipaidui
is
do@.kaishipaiduitime:
=eventcontroller.simtime;
end;
ØJieshupaidui
is
do@.jieshupaiduitime:
=eventcontroller.simtime;
zongdengdaishijian:
=zongdengdaishijian+@.jieshupaiduitime-@.kaishipaiduitime;
pingjundengdaishijian:
=zongdengdaishijian/Buffer.statnumout;
end;
ØJieshu
is
do@.jieshutime:
=eventcontroller.simtime;
zongdouliushijian:
=zongdouliushijian+@.jieshutime-@.kaishitime;
pingjundouliushijian:
=zongdouliushijian/fuwutai.statnumout;
end;
ØJieshuduichang
is
do
a:
=Buffer.nummu;
r:
=r+a*60;
t:
=eventcontroller.simtime;
pingjunduichang:
=r/t;
end;
3)source参数设置
Buffer参数设置
Fuwutai和fuwutai2参数设置
Drain参数设置
Display参数设置如下
Entity设置
3、仿真结果分析
从下图可以看出,平均逗留时间是7分43秒,平均等待时间是1分钟,相对于单服务台的等待时间大大缩短了。
说明增加一个服务台是有效的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 仿真 报告