曾华艳组离散事件系统仿真大作业

曾华艳组离散事件系统仿真大作业
曾华艳组离散事件系统仿真大作业

新疆财经大学实验报告

课程名称:物流管理综合实验

实验项目名称:系统建模与仿真

学号: 2013104059

姓名:曾华艳

班级:物流管理11-1

指导教师:林秋平

2014年 6月 2日

新疆财经大学实验报告

《铁路局联通营业厅排队仿真分析实验报告》

一、实验目的

(一)通过对铁路局联通营业厅运作的观察,建立计算机仿真全过程,对营业厅运作进行数据采集、建模和仿真分析,为联通营业厅提出改进和优化方案的建议。

(二)通过这次实验活动,全面了解计算机仿真技术在物流领域、生产制造领域等离散事件系统中的应用,理解仿真技术如何辅助管理人员进行决策。

(三)通过分组合作的形式,提供一种系统仿真工作中常见的团队协作方式的实践体验,培养协调工作、共同完成任务的能力。

二、系统描述

人们进入联通营业厅,首先要通过取票系统拿到自己的号,先在等待区等待叫号系统报自己的号。一共有2个服务台,2个服务台同时工作,哪个服务台叫到几号,拿这个号码的人就去哪个服务台,叫号系统按顺序叫号,2个服务台叫号不会发生重复现象。我们组决定针对铁路局联通营业厅叫号排队办理业务的过程进行研究,因此我们采集了仿真模型相关数据。记录了每位顾客到达时间、等待时间和离开时间。将收集的数据整理,录入excel中,并计算出了顾客的到达时间间隔和被服务时间,再利用flexsim建立仿真模型进行仿真分析与优化。

三、小组分工

(一)本组成员

1.组长:曾华艳

2.组员:晁芙蓉、陈磊、阿尔孜姑丽、宗泽宁、张振恒

(二)小组分工

1.调查收集数据和模型优化:全体成员

2.数据录入:晁芙蓉、张振恒、阿尔孜姑丽

3.数据处理:宗泽宁、阿尔孜姑丽

4.仿真模型建立与分析:陈磊、曾华艳

5.实验报告:曾华艳、晁芙蓉、宗泽宁

6.PPT 制作:张振恒、陈磊

四、实验过程

(一)数据的收集与处理

1.本组对铁路局联通营业厅叫号排队等待被服务系统进行了为期一周的数据采集。小组成员分为两组,在联通营业厅进行观察,记录该营业厅在13时15分到18时05分之间的顾客到达时间间隔和排队等候时间。

2.我们以两个服务台为调查对象,两组成员分别观察,组内成员一名组员负责计时,另外一名组员负责记录。

3.将收集的数据录入excel中,并计算出顾客到达时间间隔和被服务时间以及顾客平均到达时间间隔和顾客平均被服务时间。

(二)分布拟合

1.顾客等待时间的分布拟合

(1)输入原始数据

将excel里处理过等待时间的数据导入ExperFit中,建立一个项目,把到第一个服务台接受服务的顾客的排队间隔数据粘贴到ExperFit中。

图1 从excel复制数据到ExperFit中

(2)数据适用性检验

做独立性检验、同质性检验、平稳性检验,分别得到散点图、自相关图、直方图分别如图2、图3和图4。

图2 散点图

散点图是按照时间排列观察值,在坐标系里绘出所有相邻数据点的图。若散点图显示某种趋势,则说明数据之间存在依赖性,不独立。若散点图很散乱,无趋势,则说明独立。图2中的散点图很散乱、无趋势,说明数据是独立的或者

是随机的。

图3 自相关图

自相关图是反映数据间相关系数的图,若所有相关系数都接近于0,则数据

独立。根据图3所示,所有相关系数都接近于0,说明数据独立。

图4 直方图

同质性检验是检查数据是否服从同一分布。观察数据的频率直方图,如果该图有两个或者两个以上的峰值,则认为数据不同质。图4中只有一个峰值说明数据同质。

(3)执行拟合

进入Models,单击Automated Fitting,ExperFit会自动执行拟合,并弹

出拟合结果窗口:

图5 执行拟合

Expertfit会根据拟合好坏给拟合的分布打分排序,分数越高,拟合越好,

对于连续分布,还会给出绝对评价,如果评价结果是bad,则说明拟合不好,可

以拒绝该分布;如果评价结果是good或者borderline,则建议进行后续的拟合

优度检验,以进一步确认是否接受该分布。

图5中可以看到第一个分布的评价结果是bad,说明拟合不好,拒绝该分布。因此数据不适用理论分布拟合,下面我们使用经验分布拟合,我们的排队等待时间就应该是经验分布。

(4)经验分布拟合

将原始数据输入建立的新项目中,到经验分布applications中执行拟合,得到一个全局表,如图6所示。

图6 顾客到达时间拟合结果

2、被服务时间

(1)输入原始数据

将excel里处理过的服务时间的数据导入ExperFit中,建立一个project 项目,把第二组服务台处理时间间隔数据粘贴到ExperFit中。

图7 从excel复制数据到ExperFit中

(2)数据适用性检验

做独立性检验、同质性检验、平稳性检验,分别得到散点图、自相关图、直方图,分别如图8、图9和图10。

图8 散点图

图8中的散点图无趋势,说明数据是独立的。

如图9所示,所有相关系数都接近于0,说明数据独立。

图10 直方图

图10中显示的数据频率直方图只有一个峰值,说明数据同质,即数据服从

同一分布。

(3)执行拟合

进入models,单击automated fitting,ExperFit会执行拟合,并弹出拟合结果窗口:

图11 拟合结果

Expertfit会根据拟合好坏给拟合的分布打分排序,分数越高,拟合越好,对于连续分布,还会给出绝对评价,如果评价结果是bad,则说明拟合不好,可以拒绝该分布;如果评价结果是good或者borderline,则建议进行后续的拟合优度检验,以进一步确认是否接受该分布。

图11中可以看到第一个分布的评价结果是bad,说明拟合不好,拒绝该分布。因此数据不适用理论分布拟合,下面我们使用经验分布拟合,我们的排队等待时间就应该是经验分布。

(4)经验分布拟合

将原始数据输入建立的新项目中,到经验分布applications中执行拟合,得到一个全局表,如图12所示。

图12 顾客到达时间拟合结果

(三)构建原始系统计算机仿真模型

1.模型实体设计

实体流程图如图13所示:

图13 联通营业厅服务流程实体流程图

(1)启动新建模型

双击桌面上的Flexsim图标,默认会出现Startup Wizard。选择“Build a New Model”。我们需要选择时间、长度、和流体的单位,选择的单位会被应用在整个模型中。对于铁路局联通营业厅模型,我们选择使用以下单位:

时间单位:秒。

长度单位:米。

流体单位:升。

图14 新建模型

(2)创建实体

创建一个发生器,命名为发生器1,从库中拖出一个暂存区,2个处理器,1个吸收器。放置与命名方式如下。命名一个实体:双击实体,在属性框的顶部改变实体名字,然后点击确定。本模型创建的实体及命名如图14所示:

图15 创建实体及命名

(3)端口连接

点击按钮或者按住A键进入连接模式,有两种连接方式可以用来连接两个实体拖动至另外一个实体。

发生器1与暂存区1连接,把暂存区1与处理器1、处理器2分别连接。把处理器1和处理器2分别连接至吸收器1。如图16所示:

图16 端口连接

2.参数设置

(1)对离散实体进行设置,由于时间间隔数据的拟合为经验拟合,所以要做全局表,将经验拟合所得的数据输入其中,如图17所示:

图17全局表GlobalTable2

(2)对发生器到达时间间隔设置为统计分布中的经验分布,表格名称选择为全局表GlobalTable2。

(3)暂存区属性的临时实体流的发送至端口中选择排队最短的。

(4)对两台处理器分别进行设置,服务时间进行经验拟合后得出数据将其输入到全局表GlobalTable1,处理器的加工时间的统计分布中的经验分布表格名称为GlobalTable1,如图18所示:

图18全局表GlobalTable1

3.重置与运行模型

单击主视窗左上角按钮。重置模型可以保证所有系统变量都是

初始值,并将模型中所有流动实体清除。单击主视窗上部按钮即可运行模型。模型运行时的截图如图19所示:

图19 运行模型

这时候可以看到临时实体(客户)进入暂存区,并且移动到指定的处理器,然后进入吸收器。要停止运行,可随时按按钮。要加快或减慢模型运行速度,可左右移动视窗底部的运行速度滑动条,如图20所示。移动此滑动条可以改变仿真时间的速度,它完全不会影响模型运行的结果。

图20 时间控制工具条

由实验器计算出等待区的平均等待时间,分析结果如下:

图21 顾客平均等待时间

图22 顾客平均队长

结论:

由优化前的仿真模型分析,优化前由实验器计算出等待区的平均等待时间,从图21-22中看出暂存区中的顾客平均等待时间一般在4-10分钟。暂存区的顾客平均队长一般在4-10人。艾瑞数据调查显示:中国人的平均等待时间在5-6分钟,因此顾客在等候区等待服务时间较长,未能达到理想状态。

五、解决方案

方案一:在优化前模拟的基础上添加一台处理器,缓解等待区的等待时间。

方案二:通过提升业务员的处理效率,从而改善叫号排队现象。

图23是针对方案一进行的模型优化截图:

图23 优化后模型与3D模型截图

由实验器计算出等待区的平均等待时间,分析结果如下:

图24 顾客平均等待时间

图25 顾客平均队长

结论:

在优化后模型中,从图24和图25中可以看出暂存区的顾客平均等待时间一般在2-6分钟。暂存区的顾客平均队长在2-6人。在添加了一台处理器后,顾客平均等待时间明显缩短,这样很好的保证了服务效率。因此建议联通营业厅可以再增加一个服务台来缩短顾客平均等待时间。

六、实验结论

通过对运行模型进行观察,每个服务台都在不断地服务顾客。由实验器计算出等待区的平均等待时间和处理器的平均处理时间。根据计算结果制定了两个方案。

方案一:

通过计算顾客平均等待时间,发现平均等待时间过长,为了使联通营业厅能提供更好的服务,应增加一个服务台使总体效率得到有效的提高。实验得出的平均等待时间为4-10分钟,因此建议联通营业厅增设一个服务台来缩短顾客平均等待时间。优化后模型结果证明加设一个服务台能够使等待时间大大缩短至6分钟以内。

方案二:

提高每个服务台的办理效率,缩短服务时间,达到更好的服务能力,进而提高顾客体验。

七、实验心得

此次铁路局联通营业厅排队仿真分析实验对于我们组来说是一个巨大的挑战,尽管它的模型很简单,数据也比较容易分析,但是在实验过程中还是遇到了

许多问题,这让我们在克服困难解决问题的时候明白了平时的积累很重要,还有就是自学能力也是必不可少的一种能力,不能什么都等待别人来告诉你做什么或者怎么做,令人欣慰的是我的组员们并没有因为自己不会或者不擅长就放弃,也没有因为一遇到困难就退缩,就逃避,而都是积极主动地为团队出谋划策。正是由于每一位组员的坚持不懈和同甘共苦,我们组才顺利完成了此次仿真分析实验。

通过此次实验学会了很多flexsim的使用方法和技巧,更加了解flexsim 的实验目的与实验基本步骤,每位小组成员都积极加入此次实验的调查和该项目的制作并发挥自己的特长,尽自己最大的努力完善模型,通过明确细致的分工和团队合作,尝试去解决现实生活中所遇到的排队问题,大家都很团结,相互配合完成项目。让大家明白团队合作的意义和感受这种相互学习以及取长补短的裨益,增加大家的团队合作能力和配合意识。

排队论与离散事件仿真理论

2排队论与离散事件仿真理论 2. 1排队论概述 排队是生活中经常出现的现象,如学生或老师去图书馆借阅资料、书籍时等待等级 的情况,病人去医院看病在门诊处等待挂号,参加公司招聘在外面等待进入面试的过程,订单请求在配送中心计算机终端内的等待处理过程以及超市中顾客购物完毕之后在收 银台前等待付账的过程等均为排队现象。 研究排队问题即是研究服务机构设置与接受服务者数量之间的关系。若来到系统内 的顾客数目多于服务台的数目,这样就无法在第一时间办理业务,需要进入队列等候, 这便是排队现象,现实生活中不难发现,顾客的到达和服务的时间都是随机的,这就导 致了排队现象是无法完全消除的。2排队论与离散事件仿真理论 2. 1排队论概述 排队是生活中经常出现的现象,如学生或老师去图书馆借阅资料、书籍时等待等级 的情况,病人去医院看病在门诊处等待挂号,参加公司招聘在外面等待进入面试的过程,订单请求在配送中心计算机终端内的等待处理过程以及超市中顾客购物完毕之后在收 银台前等待付账的过程等均为排队现象。 研究排队问题即是研究服务机构设置与接受服务者数量之间的关系。若来到系统内 的顾客数目多于服务台的数目,这样就无法在第一时间办理业务,需要进入队列等候, 这便是排队现象,现实生活中不难发现,顾客的到达和服务的时间都是随机的,这就导 致了排队现象是无法完全消除的。2. 1. 4排队问题的求解 首先需要知道系统中各项因素的数据情况,即研究系统中服务机构的数量、服务效率、规则、顾客到达数量、到达间隔时间、排队规则等,从而分析系统特征,得到系统(1) LS:系统状态平稳时的队长的平均值(包括正在接受服务的顾客),是系统内顾客 数的均值。 (2) Lq:系统的平均等待队长,是系统内排队等候的顾客的均值。 (3) WS:平稳状态下顾客在系统中的平均逗留时间,即顾客在系统内逗留时间的均值。 (4) Wq:平稳状态下顾客在系统中的平均等待时间,它是顾客排队等候服务时间的 均值,如果设顾客接受服务的时间的均值为L}},则有WS一Wq + L}} o (5)绝对通过能力A,它为单位时间内被服务完顾客的均值。 (6)相对通过能力Q,它为单位时间内被服务完顾客数与请求服务顾客数之比值。 (7)服务窗连续繁忙的时间长度,即忙期Tb o 系统的状态是指系统中的顾客数,如果有n个顾客就说系统的状态为n,计算以上 这些指标的基础是表达系统状态的概率。系统的状态可能有以下几种情况: ①不限制队长,n=0,1,2,}}} ②限制队长,最大数位N , n = 0,1,2,}}}, N ③即时制,服务台个数为。时,n = 0,1,2, } } }, c 则Pn (t)表示在时刻t、系统状态为n时概率。

银行系统模拟

数 据 结 构 实 验 报 告 实验3:银行业务模拟系统姓名:范亚平 年级:2010级 学号:1008114061 专业:计算机科学与技术专业(1)班

数据结构实验报告 一、实验目的: 1)通过实验掌握对离散事件模拟的认识; 2)进一步理解队列的实现与应用; 3)对链表的操作有更深层次的理解; 二、实验条件: 学院提供公共机房,1台/学生微型计算机。 三、实验要求: 1问题描述: 假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。 2.一个完整的系统应具有以下功能: 1)初始化(OpenForDay),模拟银行开门时各数据结构的状态。 2事件驱动(EventDrived), 对客户到达和离开事件做相应处理。 3下班处理(CloseForDay), 模拟银行关门时的动作,统计客户平均逗留时间。 [备注]: 假设银行开门的时刻(间)设为0 , 银行每天营业的时间在程序运行时输入(例如480分钟)。 每个客户办理业务的时间不超过30分钟,两个相邻客户到达银行的时间间隔不超过5分钟要求程序执行时,只要给出银行每天的营业时间即可输出客户平均逗留的时间。四、总的设计思想: 为了计算这个平均的逗留时间,自然需要知道每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行的逗留时间。所有客户逗留时间的总和被一天内进入银行的客户数除便是所求的平均时间。称客户到达银行和离开银行这两个时间发生的事情为“事件”,则整个模拟程序将按事件的先后顺序进行处理。这样一种程序称做事件驱动模拟。下面是上述银行客户的离散事件驱动的模拟算法。 void Bank_Simulation( int CloseTime ){ // OpenForDay ( ); //初始化,模拟银行开门时各数据结构的状态。 while(有要处理的事件时) //有事件可处理 { EventDrived ; //事件驱动,从事件表中取出事件en; //根据en的类型(客户到达事件或客户离开事件)做相应的处理

实验报告银行业务模拟系统的设计与实现(1)

数据结构实验报告 银行业务模拟系统的设计与实现(该实验为综合性实验,共用6个学时)二、实验要求: 1.问题描述: 假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。 2.一个完整的系统应具有以下功能: 1)初始化(OpenForDay),模拟银行开门时各数据结构的状态。 2)事件驱动(EventDrived), 对客户到达和离开事件做相应处理。 3)下班处理(CloseForDay), 模拟银行关门时的动作,统计客户平均逗留时间。 [备注]: 假设银行开门的时刻(间)设为0 , 银行每天营业的时间在程序运行时输入(例如480分钟)。 每个客户办理业务的时间不超过30分钟,两个相邻客户到达银行的时间间隔不超过5分钟要求程序执行时,只要给出银行每天的营业时间即可输出客户平均逗留的时间。 三、总的设计思想、环境语言、工具等 总的设计思想: 为了计算这个平均的逗留时间,自然需要知道每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行的逗留时间。所有客户逗留时间的总和被一天内进入银行的客户数除便是所求的平均时间。称客户到达银行和离开银行这两个时间发生的事情为“事件”,则整个模拟程序将按事件的先后顺序进行处理。这样一种程序称做事件驱动模拟。下面是上述银行客户的离散事件驱动的模拟算法。 void Bank_Simulation( int CloseTime ){ // OpenForDay ( ); //初始化,模拟银行开门时各数据结构的状态。 while(有要处理的事件时) //有事件可处理 { EventDrived ; //事件驱动,从事件表中取出事件en; //根据en的类型(客户到达事件或客户离开事件)做相应的处理 if(en表示客户到达) CustomerArrived( );// 处理客户到达事件 else CustomerDeparture( ) ;// 处理客户离开事件 }//while CloseForDay( );//计算客户的平均逗留时间 }// Bank_Simulation 环境语言:Windows下的Microsoft VC++ 四、数据结构与模块说明 下面是模拟程序中需要的数据结构及其操作。

数据结构课程设计-银行业务模拟系统

山东理工大学计算机学院课程设计 (数据结构) 班级计升1001班 姓名 学号1022051029 指导教师 二○一一年一月二十日

课程设计任务书及成绩评定 课题名称银行业务模拟系统 Ⅰ、题目的目的和要求: 1、设计目的 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。 (1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。 (2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 2、设计题目要求: 1. 客户业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;第二种是向银行投入一笔资金,即存款或还款。 2. 银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足时,则立即排入第二个队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。 3. 每接待完一个第二种业务的客户,则顺序检查和处理第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。 4.假设检查不需要时间,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有满足者),转而继续接待第一个队列的客户。 5. 任何时刻都只开一个窗口,营业时间结束时所有客户立即离开银行。通过模拟方法求出客户在银行内逗留的平均时间。

Ⅱ、设计进度及完成情况 Ⅲ、主要参考文献及资料 [1] 严蔚敏数据结构(C语言版)清华大学出版社 1999 [2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999 [3] 谭浩强 C语言程序设计清华大学出版社 [4] 与所用编程环境相配套的C语言或C++相关的资料

ns-3离散事件仿真引擎实现分析

NS-3离散事件仿真引擎实现 赵问道 浙江大学信息与通信工程研究所 2009年11月

目录 一、ns-3离散事件仿真引擎的基本概念 (3) 二、ns-3离散事件仿真引擎的基本原理 (4) 三、基本的仿真器类:Simulator (5) 四、仿真器实现类:SimulatorImpl类及其派生类 (10) 五、事件调度器类:Scheduler及其派生类 (12)

NS-3离散事件仿真引擎实现分析 一、ns-3离散事件仿真引擎的基本概念 Ns-3是一个基于事件的(event-based)仿真系统。除了系统状态变量和系统事件发生逻辑外,基于事件仿真还包括以下组成部分: (1)时钟(Clock) 仿真系统必须要保持对当前仿真时间的跟踪。离散事件仿真与实时仿真(real time simulations)不同,在离散事件仿真中时间是跳跃的(time ‘hops’ ),因为事件是瞬时发生的– 随着仿真的进展,时钟跳跃到下一事件的开始时间。 Ns-3内部仿真时钟用一个64比特的整数表示,其单位由用户通过TimeStepPrecision::Set函数设定。 (2)事件列表(Events List) 仿真系统至少要维护一个仿真事件列表,一个事件用事件发生的时刻和类型来描述,事件类型标识用于仿真事件的代码,一般事件代码都是参数化的,事件描述中还包含表示事件代码的参数。 Ns-3的事件列表由Scheduler类及其派生类实现,Simulator类提供创建具体的Scheduler对象的方法,以及插入各种事件的静态接口函数。 (3)随机数发生器(Random-Number Generators) 根据系统模型,仿真系统需要产生各种类型的随机变量(random variables)。这由一个或多个伪随机数发生器(Pseudorandom number generators)产生。 NS-3包含一个内置的伪随机数发生器,随机数由RandomVariable类及其派生类实现,可以产生具有各种分布特性的随机数,具体有UniformVariable类、ConstantVariable类、SequentialVariable类、ExponentialVariable类、ParetoVariable类、WeibullVariable类、NormalVariable类、EmpiricalVariable类、IntEmpiricalVariable类、DeterministicVariable类、LogNormalVariable类、GammaVariable类、ErlangVariable类、ZipfVariable类和TriangularVariable类等。 (4)统计(Statistics) 仿真系统通常会记录系统的统计数据,用以表示感兴趣的一些统计量。 (5)结束条件(Ending Condition) 因为事件是自举的,理论上来说离散事件仿真系统可以永远运行下去。因此,仿真系统设计者必须决定仿真什么时候结束。典型的选择是“在事件t”(“at time t” )或者“在处理n个事件后”(“after processing n number of events”)或者,更一般地,“当统计量X达到值x时”(“when statistical measure X reaches the value x”)。 一个仿真系统的主循环结构如下: (1)开始(Start):初始化结束条件(Ending Condition)为FALSE。初始化系统状态变量。初

c语言银行排队事件模拟

//离散事件模拟,模拟银行营业时的排队情况 //不考虑顾客中途离开,顾客到达事件随机,业务办理时间 //长度随机,选择最短的队排队,不再换队 //时间:2012年9月17日 #include #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 /**********************结构体************************************************/ //事件表节点 typedef struct Event { int OccurTime; //事件发生时刻 int NType; //事件类型,0表示到达事件,1至n表示四个窗口的离开事件 struct Event *next; }Event, *EventList; //队列节点 typedef struct QElemType { int ArriveTime;//到达时间 int Duration;//办理业务所需时间 struct QElemType *next; }QElemType; //队列指针 typedef struct { QElemType *front;//头指针 QElemType *rear;//尾指针 }LinkQueue; /********************函数申明*************************************************/

离散事件系统仿真实验

实验二离散事件系统仿真实验 目录 实验题目 (1) 一、实验目标 (1) 二、实验原理 (1) 1. 排队系统的一般理论 (1) 2. 离散系统常用的仿真策略 (2) 3. 本实验采用单服务台模型 (3) 4. 仿真运行方式 (3) 三、理论分析 (4) 1. 涉及的基本概念 (4) 2. 仿真的总体规划设计 (5) 四、建模过程 (7) 1. 思路分析 (7) 2. 仿真策略 (7) 3. 事件列表 (8) 4. 变量定义 (8) 5. 系统流程框图 (9) 五、仿真源程序(Matlab) (10) 六、结果分析 (12) 七、感受及建议 (15)

实验题目 实体(临时实体)到达模式:实体到达模式是顾客到达模式,设到达时间间隔Ai 服从均值5min A β=的指数分布 /1 ()(0) A A A f A e A ββ?=≥服务模式:设服务员为每个顾客服务的时间为Si .它也服从指数分布,均值为4min S β=/1 ()(0) S S s f S e S ββ?=≥服务规则:由于是单服务台系统,考虑系统顾客按单队排列,并按FIFO 方式服务 一、实验目标 通过单服务台排队系统的方针,理解和掌握对离散事件的仿真建模方法,以便对其他系统进行建模,并对其系统分析,应用到实际系统,对实际系统进行理论指导。 二、实验原理 1. 排队系统的一般理论 一般的排队系统都有三个基本组成部分:

(1)到达模式:指动态实体(顾客)按怎样的规律到达,描写实体到达的统计特性。通常假定顾客总体是无限的。 (2)服务机构:指同一时刻有多少服务设备可以接纳动态实体,它们的服务需要多少时间。它也具有一定的分布特性。通常,假定系统的容量(包括正在服务的人数加上在等待线等待的人数)是无限的。 (3)排队规则:指对下一个实体服务的选择原则。通用的排队规则包括先进先出(FIFO),后进先出(LIFO),随机服务(SIRO)等。 2. 离散系统常用的仿真策略 (1)事件调度法(Event Scheduling): 基本思想:离散事件系统中最基本的概念是事件,事件发生引起系统状态的变化,用事件的观点来分析真实系统。通过定义事件或每个事件发生系统状态的变化,按时间顺序确定并执行每个事件发生时有关逻辑关系。 (2)活动扫描法: 基本思想:系统有成分组成,而成分又包含活动。活动的发生必须满足某些条件,且每一个主动成分均有一个相应的活动例程。仿真过程中,活动的发生时间也作为条件之一,而且较之其他条件具有更高的优先权。 (3)进程交互法: 基本思想:将模型中的主动成分历经系统所发生的事件及活动,按时间发生的顺序进行组合,从而形成进程表。系统仿真钟的推进采

银行模拟系统实验报告

银行模拟系统的设计与实现

计算机与信息技术学院综合性、设计性实验 报告 专业:计算机科学与技术年级/班级:计科二班 一、实验目的 1)通过实验掌握对离散事件模拟的认识; 2)进一步理解队列的实现与应用; 3)对链表的操作有更深层次的理解; 该实验涉及到线性表的建立、插入、删除等操作,涉及到了队列的建立、插入、删除,涉及到了离散事件的应用思想,还涉及到了排序的概念。完成这个实验对线性表、队列及C语言编程等多方面的知识将是一个很好的利用,对离散事件也将有一个初步的认识。 二、实验仪器或设备 装有Visual C++ 6.0的计算机一台 三、总体设计(设计原理、设计方案及流程等) 实验问题描述: 假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。 设计原理: 根据前几章所学习的与链表、队列等相关的知识,了解到链表与队列的特点,联系实际,对题目思考可知: ①动态链表可以进行动态分配与存储,还可以在链表中适合的位置进行删除 和插入操作; ②多个相同类型的数据类型可将其放在一个数组中; ③结构体类型的数据可以有多个域,存放不同的数据信息; ④队列是一种先进后出的线性表,只允许在表的一端进行插入而在另一端进 行删除,和日常生活中的排队是一样的; ⑤在一天的营业过程中,银行的工作流程,包含开门事件、客户到达对客户

离散事件建模及仿真

第7章离散事件系统建模与仿真 离散事件系统指的是一组实体为了达到某些目的,以某些规则相互作用、关联而集合在一起。与连续事件系统不同,离散事件系统所包含的事件在时间上和空间上都是离散的。离散事件系统在生产和生活中是很常见的,例如一个超市就是一个离散事件系统,它由顾客和收银员组成。在离散事件系统中,各事件以某种顺序或在某种条件下发生,并且大都是随机性的,所以,其模型很难用某种规范的形式,一般采用流程图或者网络图的形式来定义实体在系统中的活动。这类系统在建模时,只要考虑系统内部状态发生变化的时间点和发生这些变化的原因,而不用描述系统内部状态发生变化的过程。本章将介绍几种常见的离散事件系统和离散事件系统建模方法。 7.1 离散事件系统模型 离散事件系统是指系统的状态仅在离散的时间点上发生变化的系统,而且这些离散时间点一般是不确定的。这类系统中引起状态变化的原因是事件,通常状态变化与事件发生是一一对应的。事件的发生没有持续性,可以看作在一个时间点上瞬间完成,事件发生的时间点是离散的,因而这类系统称为离散事件系统。首先看一个典型的离散系统的例子。 例7.1 超市服务系统 某理发店只有一名理发师。在正常的工作时间内,如果理发店没有顾客,则理发师空闲;如果有顾客,则为顾客理发。如果顾客到达理发店时,理发师正在为其他顾客服务,则新来的顾客在一旁排队等候。显然,每个顾客到达理发店的时间是随机的,而理发师为每个顾客服务的时间也是随机的,进而队列中每个顾客的等候时间也是随机的。 下面,结合例7.1介绍一下在离散事件系统仿真中所用到的一些基本概念。 (1)实体 实体是指有可区别性且独立存在的某种事物。在系统中,构成系统的各种成分称为实体,用系统论的术语,它是系统边界内的对象。在离散事件系统中,实体可分为两大类:临时实体和永久实体。临时实体指的是只在系统中存在一段时间的实体,这类实体由系统外部到达系统,在系统仿真过程中的某一时刻出现,最终在仿真结束前从系统中消失。例7.1中,顾客是临时实体,他们按一定的规律到达,经过理发师服务(可能要排队等待一段时间),最终离开系统。那些虽然达到,但未进入理发店的顾客则不能称为该系统的临时实体。永久实

银行业务模拟课程设计报告

安徽新华学院 数据结构课程设计报告 题目:银行业务模拟系统 学院:信息工程学院 专业:信息管理与信息系统 班级: 12 级信管 1 班 姓名:杨丹丹 学号: 1242152137 指导教师:李明 设计时间: 2013.12.12— 2013.12.30

课程设计任务书 一、目的 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解, 最终使学生能够熟练应用数据结构的知识写程序。 (1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。 (2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求 解过程并编写代码实现。 二、要求 1.客户业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;第二种是 向银行投入一笔资金,即存款或还款。 2.银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客 户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足时,则立 即排入第二个队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。 3.每接待完一个第二种业务的客户,则顺序检查和处理第二个队列中的客户 , 对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。 4.假设检查不需要时间 , 在此检查过程中 , 一旦银行资金总额少于或等于刚才第一个队列 中最后一个客户( 第二种业务) 被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有满足者), 转而继续接待第一个队列的客户。 5.任何时刻都只开一个窗口 , 营业时间结束时所有客户立即离开银行。通过离散的模拟 方法求出客户在银行内逗留的平均时间 三、设计期限 日期内容 12.12-12.16 12.16-12.22选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。 创建相关数据结构 , 录入源程序。 12.22-12.26调试程序并记录调试中的问题,初步完成课程设计报告。 12.26-12.31上交课程设计报告打印版和电子版的论文程序

单服务台排队系统离散事件系统仿真实验

离散事件系统仿真实验 一、实验目标 通过单服务台排队系统的方针,理解和掌握对离散事件的仿真建模方法,以便对其他系统进行建模,并对其系统分析,应用到实际系统,对实际系统进行理论指导。 二、实验原理 1.排队系统的一般理论 一般的排队系统都有三个基本组成部分: (1)到达模式:指动态实体(顾客)按怎样的规律到达,描写实体到达的统计特性。通常假定顾客总体是无限的。 (2)服务机构:指同一时刻有多少服务设备可以接纳动态实体,它们的服务需要多少时间。它也具有一定的分布特性。通常,假定系统的容量(包括正在服务的人数加上在等待线等待的人数)是无限的。 (3)排队规则:指对下一个实体服务的选择原则。通用的排队规则包括先进先出(FIFO),后进先出(LIFO),随机服务(SIRO)等。 2.对于离散系统有三种常用的仿真策略:事件调度法、活动扫描法、进程交互法。 (1)事件调度法(Event Scheduling): 基本思想:离散事件系统中最基本的概念是事件,事件发生引起系统状态的变化,用事件的观点来分析真实系统。通过定义事件或每个事件发生系统状态的变化,按时间顺序确定并执行每个事件发生时有关逻辑关系。 (2)活动扫描法: 基本思想:系统有成分组成,而成分又包含活动。活动的发生必须满足某些条件,且每一个主动成分均有一个相应的活动例程。仿真过程中,活动的发生时间也作为条件之一,而且较之其他条件具有更高的优先权。 (3)进程交互法: 基本思想:将模型中的主动成分历经系统所发生的事件及活动,按时间发生的顺序进行组合,从而形成进程表。系统仿真钟的推进采用两张进程表,一是当前事件表,二是将来事件表。 3.本实验采用的单服务台模型 (1)到达模式:顾客源是无限的,顾客单个到达,相互独立,一定时间的到达数服从指数

数据结构课程设计报告-银行业务模拟

《数据结构》课程设计报告 题目:银行业务模拟 学院(系):数学与计算科学学院 班级: 11级信息与计算科学4班学生学号: 1107020404 姓名:石站锋 指导教师:彭叶辉 2013年 6月28 日

目录 摘要 (2) 一、需求分析 (2) 二、概要设计 (3) 三、详细设计 (3) 1、预定义和定义结构体 (3) 2、基本操作的算法描述 (6) 3、测试界面操作提示 (8) 4、不断进入队列,出队列,时间的更新,总金额的更新 (9) 5、营业结束时判断是否为所有客户服务,并输出最后的银行总金额 (9) 四、设计和调试分析 (10) 五、用户手册 (11) 六、测试结果 (11) 七、设计心得 (14) 八、参考文献 (14) 九、附录 (14)

摘要 在日常生活中,我们经常会遇到许多为了维护社会正常秩序而需要排队的情况,这样一类活动的模拟程序通常需要用到队列和线性表之类的数据结构,因此是队列的典型应用例子之一,而这次实验的题目银行业务的模拟程序就正是这样一个典型的例子。队列是一种先进先出的线性表,它只允许在表的一端插入,而在另一端删除元素。在队列中允许插入的一端叫做队尾,允许删除的一端则称为队头。我们需要编写一个程序已模拟银行的这种各种业务活动,并计算一天中客户在银行逗留的平均时间。这是一个离散事件驱动模拟程序。这也是一个的操作系统中的排队问题。假设某银行有3个窗口对外接待客户,从早晨银行开门(开门9:00am,关门5:00pm)起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进入银行的客户(客户进入时间使用随机函数产生),如果某个窗口的业务员正空闲,则可上前办理业务。 关键词:排队、队列、先进先出、离散事件驱动模拟程序、 一、需求分析 程序中处理的对象主要是“事件”,事件的主要信息是事件类型和事件发生的时刻。算法中处理的事件有两类:一类是客户到达事件,另一类是客户离开事件。前一类事件发生的时间随客户到来自然形成,后一类事件发生时刻则由客户事物所需时间和等待所耗时间而定。由于程序驱动是按事件发生时刻的先后顺序进行,则时间应是有序表,其主要操作是插入和删除事件。 由于在实际的银行中,客户到达的时刻及其办理事物所需时间都是随机的,在模拟中可用随机数代替。客户到达时间时需产生两个随机数,其一为此时刻到达的客户办理事务所需时间solvetime;其二为下一客户将到达的时间间隔waitTime,假设当前事件发生的时刻为occurtime,则下一个客户到达事件发生的时刻为occurtime+waitTime。由此应产生一个新的客户到达事件插入事件表。将客户到达事件插入事件表,刚到达的客户则插入到当前所含元素最少的队列中。 客户离开事件的处理比较简单。首先计算该客户在银行逗留时间,然后从队

数据结构课程设计之银行离散事件模拟

《数据结构》课程设计报告

银行业务模拟与离散事件模拟 一、实验目的 1. 通过此次课程设计中银行业务模拟的题目,掌握队列(或者链表) 等数据结构的基本操作方面的知识,并能灵活的解决一些基本的问题,加深对其性质及各项操作的理解; 2. 将所学数据结构方面的知识与一门具体的语言相结合(C/C++)来进行实现,感受数据结构的强大作用,加深理解。 二、问题描述 1.问题描述 假设某银行有4个窗口对外接待客户,从早晨银行开门(开门9:00am,关门5:00pm)起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进入银行的客户(建议:客户进入时间使用随机函数产生),若某个窗口的业务员正空闲,则上前办理业务;反之,若4个窗口均有窗户所占,他便会排在人数最少的队伍后面。 2. 任务要求 编制一个程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。建议有如下设置: (1)客户到达时间随机产生,一天客户的人数设定为100人。 (2)银行业务员处理时间随机产生,平均处理时间10分钟。 (3)将一天的数据(包括业务员和客户)以文件方式输出。 三、算法的思想与算法实现步骤 1. 基本思想 通过队列数据类型进行基本操作,主要有三个模块:分别是主函数模块、 主要操作函数及基本操作函数。其中,主函数负责其他子函数的调用实现以及基本界面的操作,主要函数包括开门函数的实现:OpenForDay,顾客到达函数:CustomerArrived,顾客离开的函数:CustomerDepartion等;而基本操作函数

就是对其中牵扯到的操作进行具体的实现,如按时间先后插入队列OrderInsert、寻求最短的队列MinCuQueue、删除队列元素以及销毁等。 2. 实现步骤 首先,分析题目要求划分实现模块、画出大致的流程图,定义基本数据类型,诸如结构体、队列等; 其次,考虑基本大致的操作,比如要拟定开门的时间、顾客到来为其提供服务以及离开时的操作等; 再次,针对上述的基本操作实现具体需要进行的操作,具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现功能; 最后,编写主函数对每个实现进行按需调用,实现操作。 3. 流程图 图-1 事件流程图

离散事件系统仿真策略

1 离散事件系统仿真策略 离散事件系统仿真策略:介绍三种仿真策略,即事件调度法、活动扫描、进程交互法。 主要术语: (1) 成分(Component ):相应于系统中的实体,用于构造模型中的各个部分,可分为两大类: 主动成分(Active-type Component ):可以主动产生活动的成分 如排队系统中的顾客,它的到达将产生排队活动或服务活动。 被动成分(Pasive-type Component ):本身不能激发活动,只有在主动成分作用下才产生状态变化。 (2)描述变量:成分状态、属性的描述。 (3)成分间的相互关系:描述成分之间相互影响的规则。 在一个模型中,主动成分对被动成分可能产生作用,而主动成分之间也可能产生作用。 C ={ α1. α2, …, αn }成分集合, αi 是第i 个成分分量(n i ≤≤1)。

2 C A ={α1. α2, …, αm } 主动成分子集, αj 是第j 个主动成分分量(1n m m j <≤≤,)。 C P ={α1. α2, …, αl } 被动成分子集, αk 是第k 个被动成分分量(1≤≤

银行业务模拟课程设计报告

安徽新华学院数据结构课程设计报告 题目:银行业务模拟系统 学院:信息工程学院 专业:信息管理与信息系统 班级:12级信管1班 姓名:杨丹丹 学号:1242152137 指导教师:李明 设计时间:2013.12.12—2013.12.30

课程设计任务书 一、目的 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。 (1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。 (2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 二、要求 1.客户业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;第二种是向银行投入一笔资金,即存款或还款。 2.银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足时,则立即排入第二个队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。 3. 每接待完一个第二种业务的客户,则顺序检查和处理第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。 4.假设检查不需要时间,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有满足者),转而继续接待第一个队列的客户。 5. 任何时刻都只开一个窗口,营业时间结束时所有客户立即离开银行。通过离散的模拟方法求出客户在银行内逗留的平均时间 三、设计期限

排队系统的离散事件模拟-示例

2.4 M/M/1排队系统的模拟 这个排队系统的服务员为一人。顾客到达系统的间隔时间为平均值等于1分的指数分布随机变量。单位顾客服务时间为平均值等于0.5分的指数分布随机变量。单列排队,采取先进先出的规则,排队行列的最大容量为100。模拟的终止条件为有1000个顾客服务结束离开系统。 2.4.1 系统的实体、属性和事件 事件类型有顾客到达事件、服务开始事件以及服务结束事件。但是,服务开始事件一般与顾客到达事件或服务结束事件相互重合,所以决定有两类事件: a. 第1类事件——顾客到达事件; b. 第2类事件——顾客在服务结束后离开系统。 2.4.2 系统模拟程序 为了进行模拟,除了主程序外,还编制了一系列的子程序或函数,它们的功能如表1.2.3所示。 表1.2.3 排队服务系统模拟的子程序和函数 表1.2.4列举模型的变量的名称和定义。 表1.2.4 本模型的变量

图1.2.8是本模拟模型的主程序,它的主要功能如下: MAIN PROGRAM NEVNTS = 2 //事件类型 READ 10, MARRVT, MSERVT //到达间隔时间为1,服务时间为0.5 10 FORMA T(2F10.0) READ 20, TOTCUS //结束服务顾客总数1000 20 FORMA T(I 10) CALL INIT 30 CALL TIMING GO TO (40, 50), NEXT //NEXT = 1, GO TO 40; NEXT = 2, GO TO 50 40 CALL ARRIVE GO TO 60 50 CALL DEPART 60 IF(NUMCUS .LT. TOTCUS) GO TO 30 CALL REPORT STOP END 图1.2.8 排队服务系统模拟的主程序 SUBROUTINE INIT TIME = 0.0 STATUS = 0.0 //服务员状态 NIQ = 0 //系统中的停留人数 TLEVNT = 0.0 //上次事件时间 NUMCUS = 0 //已结束服务的顾客数 TOTDEL = 0.0 //顾客停留时间总和 ANIQ = 0.0 //系统中人数的时间积分值

银行业务模拟与离散事件模拟

兰州商学院陇桥学院 工学系课程设计报告 设计题目:银行业务模拟与离散事件模拟系别:工学系 专业 (方向): 年级、班: 学生姓名: 学生学号: 指导教师: 年月日

目录 一、系统开发的背景。 (1) (一)系统功能要求 (1) (二)系统模块结构设计 (1) 三、系统的设计与实现 (2) (一)开门函数: (3) (二)顾客到达函数: (4) (三)顾客离开函数: (5) 四、系统测试 (6) 五、总结 (7) 六、附件(代码、部分图表) (7)

银行业务模拟与离散事件模拟 一、系统开发的背景。 为了在现实生活中,方便银行业务员更好的操作和管理银行出现的各种事件,以及方便算出各种时间,我们设计了银行业务模拟与离散事件模拟系统。 通过此次课程设计中银行业务模拟的题目,掌握队列,或链表等数据结构的基本操作方面的知识并能灵活的解决一些基本的问题,加深对其性质及操作的理解。 将所学数据结构方面的知识与一门具体的语言相结合来进行实现,感受数据结构的强大作用,加深理解。 (一)系统功能要求 编制一个程序,可以以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间 1、客户到达时间随机产生,一天客户的人数设定为100人; 2、银行业务员处理时间随机产生,平均处理时间为10分钟; 3、将一天的数据结构(包括业务员和客户)以文件方式输出。 . (二)系统模块结构设计 通过对系统功能的分析,银行业务模拟与离散事件模拟系统功能如下图所示。

银行业务模拟与离散事件模拟系统 通过上图的功能分析,把整个系统划分为3个模块: 1、开门函数,该模块主要实现:银行开始正常营业时间,借助函数OpenForDay()来实现; 2、顾客到达函数,该模块主要实现:客户在银行里从排队到办理完银行业务的功能,借助函数CustomerArrive()来实现; 3、顾客离开函数,该模块主要实现:银行下班时间及顾客全部离开的功能,借助函数CustomerDepart()来实现。 三、系统的设计与实现 【流程图】

离散事件系统的建模仿真技术

离散事件系统的建模仿真技术 摘要:在现代社会,系统仿真,特别是离散事件系统仿真,已成为各种科研领域的研究热点,也是国家和国防关键技术发展计划之一。离散事件系统是一类在工程技术、经济、军事等领域常见的系统,它们的状态在一些不均匀的离散时刻发生变换且状态变换的内部机制比较复杂,往往无法用常规的数学方法来描述,而离散事件系统仿真是当前研究这一类系统的最有用处的方法之一。本文主要介绍了离散事件系统的概念、特点、要素、建模步骤,并以售票窗口服务系统为例介绍了建模的主流方法,即实体流图法和活动周期图法。 关键词:离散事件系统;仿真;建模 一、离散事件系统仿真一般概念 1、离散事件系统(Discrete Event System,DES):指系统的状态在一些离散时间点上由于某种事件的驱动而发生变化。 2、离散事件系统的特点 (1)系统中的状态只是在离散时间点上发生变化,而且这些离散时间点一般是不确定的; (2)系统中的状态变化往往无法用数学公式表示; (3)描述方式通常为图、表等接近自然语言的方式; (4)时间是仿真中的一个关键变量; (5)离散事件系统总包含排队过程[1]。 3、离散事件系统的要素 (1)实体(Entity):组成系统的物理单元。 永久实体:在整个仿真过程中始终存在。也称被动实体。 临时实体:在系统中只存在一段时间。也称主动实体、活动实体。 (2)属性(Attributes) :是指某一实体的特性,是实体所拥有的全部特征的一个子集,用特征参数变量表示。 (3)状态(Status) :是指系统在某一时刻实体及其属性值的集合。机器的状态:{开、停};或者{忙、空闲、停止} 。 状态可作为动态属性进行描述。 (4)事件(Event) : 引起离散事件系统状态发生变化的行为。

离散事件仿真

离散事件仿真基本原理 赵问道 浙江大学信息与通信工程研究所

目录 一、离散事件仿真的基本概念 (3) 1. 基于事件的(event-based)离散事件仿真 (3) 2. 基于活动的(activity-based)离散事件仿真 (3) 3. 基于进程的(process-based)离散事件仿真 (3) 4. 三阶段(three-phase)离散事件仿真 (3) 二、离散事件仿真系统的组成 (4) 1. 时钟(Clock) (4) 2. 事件列表(Events List) (4) 3. 随机数发生器(Random-Number Generators) (5) 4. 统计(Statistics) (5) 5. 结束条件(Ending Condition) (5) 三、仿真引擎逻辑(Simulation Engine Logic) (5) 1. 开始(Start) (5) 2. 循环(“Do loop” or “While loop”) (6) 3. 结束(End) (6)

离散事件仿真基本原理 一、离散事件仿真的基本概念 在离散事件仿真中,系统的操作通过按时间顺序排列的一组事件序列来表示。每个事件发生在某一时刻,表示系统的状态改变。例如,如果仿真电梯,那么事件可以是“6层的按钮按下了”,随之系统状态改成“电梯移动”,并且最后到达状态“电梯位于6层”i。 学习如何建立离散时间仿真的一个普通例子是仿真一个队列(queue),如顾客到达银行接受出纳员的服务,这里的系统实体是“顾客队列”(CUSTOMER-QUEUE)和“出纳员”(TELLERS)。系统事件是“顾客到达”(CUSTOMER-ARRIV AL)和“顾客离开”(CUSTOMER-DEPARTURE)(事件“出纳员开始服务”(TELLER-BEGINS-SERVICE )可以是到达和离开事件逻辑的组成部分) 。可以由这些事件改变的系统状态有“队列中的顾客数量”(NUMBER-OF-CUSTOMERS-IN-THE-QUEUE (是一个从0到n的整数) )和“出纳员状态”(TELLER-STATUS (忙或空闲))。为了仿真系统随机性需要的随机变量(random variables)是“顾客到达间隔时间”(CUSTOMER-INTERARRIV AL-TIME)和“出纳员服务时间”(TELLER-SERVICE-TIME)。 目前已经提出的实现离散时间仿真的基本方法有基于事件的(event-based)、基于活动的(activity-based)、基于进程的(process-based)和三阶段(three-phase,Pidd1998)等方法。三阶段方法在很多商业化仿真软件包中得到了应用,但从用户角度看,所采用的仿真方法的细节一般是被隐藏掉的。 1. 基于事件的(event-based)离散事件仿真 2. 基于活动的(activity-based)离散事件仿真 3. 基于进程的(process-based)离散事件仿真 4. 三阶段(three-phase)离散事件仿真

相关文档
最新文档