《实验2单服务台单队列排队系统仿真设计说明.doc》由会员分享,可在线阅读,更多相关《实验2单服务台单队列排队系统仿真设计说明.doc(28页珍藏版)》请在课桌文档上搜索。
1、实验2排队系统仿真一、 学习目的1 了解仿真的特点2 学习如何建构模型3 熟悉eM-Plant基本的对象和操作4 掌握排队系统的特点与仿真的实现方法二、 问题描述 该银行服务窗口为每个到达的顾客服务的时间是随机的,表2.4是顾客服务时间纪录的统计结果表2.4 每个顾客服务时间的概率分布服务时间min概率密度累计概率10.10.120.20.330.30.640.250.8550.10.9560.051.0对于上述这样一个单服务待排队系统,仿真分析30天,分析该系统中顾客的到达、等待和被服务情况,以及银行工作人员的服务和空闲情况。三、 系统建模3.1 仿真目标通过对银行排队系统的仿真,研究银行系
2、统的服务水平和改善银行服务水平的方法,为银行提高顾客满意度,优化顾客服务流程服务。3.2系统建模3.2.1 系统调研1. 系统结构: 银行服务大厅的布局, 涉及的服务设备2. 系统的工艺参数: 到达-取号-等待-服务-离开3. 系统的动态参数: 顾客的到达时间间隔, 工作人员的服务时间4. 逻辑参数: 排队规则, 先到先服务5. 系统的状态参数: 排队队列是否为空, 如果不为空队长是多少, 服务台是否为空6. 系统的输入输出变量:输入变量确定其分布和特征值,顾客的到达时间间隔的概率分布表和每个顾客被服务时间的概率分布. 输出变量根据仿真目标设定. 包括队列的平均队长、最大队长、仿真结束时队长、
3、总服务人员、每个顾客的平均服务时间、顾客平均排队等待服务时间、业务员利用率等。3.2.2系统假设1取号机前无排队,取号时间为02顾客排队符合先进先出的排队规则3一个服务台一次只能对一个顾客服务4所有顾客只有一种单一服务5仿真时间为1个工作日8小时6等候区的长度为无限长3.2.3系统建模系统模型:3.2.4 仿真模型1实体:银行系统中的实体是人主动体2属性:到达时间间隔、接受服务的时间、接受服务类型3事件:顾客到达、开始取号、取号结束、进入队列、出队列、接受服务、服务完成、离开银行。4活动:到达、取号、排队、服务、离开5资源:取号机、排队的座椅、服务柜台4 系统仿真4.1 eM-plant界面与
4、主要控件介绍123451. 实体:eM-Plant中包括3类实体:entity,container,transporter。Entity,属于被动体,本身在系统中不能移动,需和主动资源配合才能移动,常用于生产线上的半成品、仓库中的货物等;container,属于被动体,本身在系统中不能移动,需要和主动资源配合才能移动。做容器使用,在container中可以存储entity,如集装箱、托盘、纸箱等;transporter属于主动体,在系统中无论主动资源还是被动资源,均可以移动。常用于带动力的实体,如车辆、AGV小车、人等。实体在仿真系统中必不可少,任何系统具有1个或者1个以上的实体。2. too
5、lboxstoolboxs是在仿真过程中需要使用的各重控件包括:material Flow, Resources, Information Flow, User Interface, Tools等5个面板。本课程重点学习:material Flow,Information Flow, User Interface三个面板。下面分别介绍如下:connection,连接线,表示实体的移动或者资源之间的关系,如顾客到达后取号,则顾客到达资源则与取号机资源。实体从顾客到达资源进入取号机资源则二者之间去有connection连接。EventController,仿真钟,仿真系统钟必备资源,有且只能有一个
6、,表示仿真过程钟的时间轴。source,drain,开始和结束资源,仿真系统钟必备资源,可以有多个,表示仿真系统的开始点和结束点。一般来说一个资源对应一个活动,对应实体在其上的一个时间段。一个活动或者一个资源有两个事件,开始事件和结束事件。但是source和drain是一种特殊的资源,只有一个事件,它表示一个时间点,而不是时间段。singleProc,ParallelProc,单工作台和并行工作台资源。可以表示任意的加工活动,如顾客接收银行业务员服务活动,取号机取号活动等。如果只有一个柜台提供服务,则使用singleproc,如果有多个柜台且服务时间和服务方式相同,则使用ParallelPro
7、c。如果有多个柜台且服务时间和服务方式不同,则使用多个singleProc。placebuffer,buffer,等候区。不同之处在于placebuffer进来的顺序和出来的顺序没有关系,而buffer则保证最先进来最先出去FIFO,First In First Out,凡是需要排队等候的地方剧需要用buffer或者placebuffer,一般来说buffer更长用一些,实际的许多排队系统一般都是FIFO的排队规则。lines,传送带资源。entity,container,transporter均可以在其上被传送。常用于运输皮带、链式输送机、辊子输送机等。track,道路。上述资源中唯一不带动
8、力的资源,只有主动体才可以在其上运动,entity和container则无法使用track资源。常用于道路、轨道。flowcontrol,流控。实体在加工过程中根据不同的情况会有不同的流向。method。前面已提及,除了source和drain,其他的资源可以表示一个活动时间段,具有开始事件和结束事件。eM-Plant软件中有很多类和对象,可以简化构建仿真系统的过程,因此如果没有特殊的要求,一般系统会自动执行。但是,根据实际问题的需要,需要编制自己的开始事件和结束事件。如本实验中,在对顾客进行服务前开始服务事件,需要考虑顾客的服务时间是多少,系统无法自动完成,则必须使用method创建一个开始
9、服务事件,插入服务台资源中,通过编程实现任意顾客的服务时间。Method是编程工具,而编程则是对事件的编程。Variable。全局变量,在C语言中,存在全局变量和局部变量,eM-Plant中与其相似,在method中定义的变量属于局部变量,但是,某些时候,某个变量需要在不同的mothod中使用,此时则用到全局变量。table。表,用于储存数据。 chart,制作各种图表3. FrameFrame 是仿真系统的工作界面,在Frame中建模并运行仿真系统。银行系统中,顾客取号后排队等着叫号,根据不同的排队号类别被分成了多个排队队列,取号后分成多个队列则有flowcontrol控制。在Frame中如
10、图所示:顾客到达source后取号singleproc根据不同的顾客类型分类flowcontrol,分为个人客户和企业客户,分别进入个人客户队列和企业客户队列进行排队。在系统中有3个个人客户服务台singleproc,如果任何一个个人客户服务台为空,则查找个人客户队列如果不为空,则选择最早进入的客户进行服务。系统中有n个企业客户服务台,则使用一个多服务台资源prallelproc表示,任意一个服务台完成对顾客的服务后,顾客离开drain,它们之间的关系用连接线表示connection。针对本实验的单服务台系统则可以简单表示为:4. 资源管理器资源管理器的功能是对资源进行管理;包括Materia
11、lFlow、Resources、InformationFlow、UseInterFace、MUs、Tools、其功能与tools中的功能相同。用户可以自己创建新的文件夹,创建新的Frame来实现仿真系统的构建。5. consoleconsole,控制台,呈现编译和调式过程中的各种信息,包括出错信息、警告信息、输出信息等。4.2 完成排队仿真系统1. 启动eM-Plant Professional开始程序TecnomatixeM-Plant 7.0 eM-Plant Professional打开后如图所示:2. 创建新的模型,点选菜单栏FileNew Model出现下图:3. 新增文件夹点选Mo
12、del,按鼠标右键,出现object的功能表,选择New Folder然后选中新建文件夹并右击出现快捷菜单,选择Rename进行重新名,名为QueueSystem。4.创建新的Frame,命名为QueueFrame选中QueueSystem文件夹,右击,选择New Frame,然后右击Frame重命名5.创建主要控件根据个人喜好,可将Frame最大化选中tools工具栏中的source按钮,然后在Frame中单击创建source控件。用同样的方法创建buffer、singleproc、drain、eventcontroller等控件,同时用connection将其连接起来。6. 创建一个实体选
13、中MUs目录下的Entity,然后按住Ctrl,并拖到QueueSystem目录下,就复制过来了,右击改名为person。7.设置各控件属性双击source,打开其属性对话框,修改Attributes选项卡里面的MU值,单击后面的按钮,打开select object对话框,选择前面新建的person,单击OK。双击buffer按钮,先设置Attributes选项卡中的Capacity属性值,将其改为-1,表示无限量,单击Apply,然后选择times选项卡,将processing time改为0,单击OK。双击Drain,将times选项卡中的processing time值改为0,单击OK。
14、双击Eventcontroller,选择settings选项卡,根据要求,设置Data为开始时间,End为结束时,单击OK。8. 创建Method以及Tablefile在tools工具栏中选择Method按钮和Tablefile按钮,然后在Frame中创建相应的Method和Tablefile,右击弹出快捷菜单,选择Rename进行改名,分别创建6个Method和3个Tablefile。Method:reset、init、endsim、arrivalintervaltime、customsevertime、computequeuelength;Tablefile:queueTab、custom
15、sTab、customs20Tab。9创建两个全局变量在tools工具栏里面选择Variable按钮,创建两个全局变量:SimulationTimes、QueueNumberCount,将两个全局变量中Value选项卡中的Data Type都改为integer,单击OK。10.修改person属性在左边根目录下双击Person,弹出对话框,选择Custom Attributes选项卡。单击new按钮,新建一个属性变量,Name为arrivaltime,Data Type为time。单击OK,返回前面对话框,再新建两个类型为time的serverTime和waitTime的属性变量。11.编辑表
16、格属性设置QueueTab第1列的Data Type为integer,第2列的data type为integer,第3列的Data Type为real,第4列的Data Type为integer,第5列的Data Type为integer。设置CustomsTab第1列的Data Type为integer,第2列的Data Type为integer,第3列的Data Type为time,第4列的Data Type为time,第5列的Data Type为real。设置customs20Tab的第1列的Data Type为integer,第2列的Data Type为time,第3列的Data Ty
17、pe为time,第4列的Data Type为time,第5列的Data Type为time。操作:双击queuetab表,出现表格窗口。单击表格菜单栏中的format inherit format将其前面的勾去点。选中第一列,单击format format,出现list format对话框,将Data Type改为integer,单击OK。其他表格按同样方法设置。12. 编写代码双击Method,在里面编写相应的代码,具体见后面代码。13. 控制编写完代码后需要把method放到相应的位置,来控制仿真的运行,双击source,选择controls选项卡,将Entrance属性值设为QueueS
18、ystem.QueueFrame.ArrivalIntervalTime。双击singleproc,选择controls选项卡,将Entrance属性值设为 .Models.QueueSystem. QueueFrame.CustomServerTime同样设置drain中entrance属性值为.Models.QueueSystem.QueueFrameputeQueueLength14.代码Reset代码:isdodeleteMovables;QueueNumberCount:=0;end;Init代码isdoQueueNumberCount:=0;end;Endsim代码istab:ta
19、ble;dotab.create;Buffer.statistics;buffer.statistics;QueueTab1,SimulationTimes:=SimulationTimes;QueueTab2,SimulationTimes:=tab4,1;QueueTab4,SimulationTimes:=tab9,1;QueueTab5,SimulationTimes:=tab6,1;tab.delete;singleProc.statistics;CustomsTab1,SimulationTimes:=SimulationTimes;CustomsTab2,SimulationTi
20、mes:=tab5,1;CustomsTab3,SimulationTimes:=tab20,1;CustomsTab4,SimulationTimes:=tab15,1;CustomsTab5,SimulationTimes:=tab17,1;if SimulationTimes30 then.models.queuesystem.queueframe.EventController.reset;SimulationTimes:=SimulationTimes+1;.models.queuesystem.queueframe.EventController.start;elseSimulat
21、ionTimes:=1;end;end;ArrivalIntervalTime代码isrand:real;dorand:=Z_uniform; if rand0.0 and rand0.125 and rand0.250 and rand0.375 and rand0.5 and rand0.625 and rand0.75 and rand0.875 and rand=1.0 then Source.interval:=60*8; end;.arrivalTime:=eventcontroller.simtime;end;CustomServerTime代码isrand:real;do.se
22、rverTime:=SingleProc.ProcTime;rand:=Z_uniform; if rand0.0 and rand0.1 and rand0.3 and rand0.6 and rand0.85 and rand0.95 and rand=1.0 then SingleProc.ProcTime:=60*6; end;end;ComputeQueueLength代码isdoQueueNumberCount:=QueueNumberCount+1;QueueTab3,SimulationTimes:=QueueTab3,SimulationTimes*+Buffer.numMU
23、/QueueNumberCount;if simulationTimes=1 and QueueNumberCount=1 thenCustoms20Tab1,QueueNumberCount:=QueueNumberCount;Customs20Tab2,QueueNumberCount:=.arrivalTime;Customs20Tab3,QueueNumberCount:=0;Customs20Tab4,QueueNumberCount:=.serverTime;Customs20Tab5,QueueNumberCount:=.statAvgLifeSpan-.serverTime;e
24、lseif simulationTimes=1 and QueueNumberCount=20 thenCustoms20Tab1,QueueNumberCount:=QueueNumberCount;Customs20Tab2,QueueNumberCount:=.arrivalTime;Customs20Tab3,QueueNumberCount:=.arrivalTime-Customs20Tab2,QueueNumberCount-1;Customs20Tab4,QueueNumberCount:=.serverTime;Customs20Tab5,QueueNumberCount:=.statavglifespan-.serverTime;end;end;5 实验要求5.1 按照上面的介绍建立单服务台仿真模型,并给出各个表格中各数据的含义。5.2 在练习上述排队系统仿真的基础上,调研真实的银行系统,增加以下几个功能:(1) 服务窗口从一个增加为多个;(2) 业务围从一种增加为多种一般客户、企业客户;(3) 增加多个ATM取款机。实验报告提纲:(1) 仿真目标(2) 系统调研(3) 系统假设(4) 系统建模(5) 仿真模型(6) 仿真结果分析(7) 心得体会