离散系统模拟_第1页
离散系统模拟_第2页
离散系统模拟_第3页
离散系统模拟_第4页
离散系统模拟_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

离散系统模拟第一页,共八十一页,2022年,8月28日

第3章离散系统模拟3.1离散系统模拟概述3.2离散模拟的基本原理和运行逻辑3.3模拟模型性能评价3.4离散系统模拟案例3.5离散系统模拟工具3.6Arena模拟工具第二页,共八十一页,2022年,8月28日3.1离散系统模拟概述一、离散模拟的定义与分类

离散模拟模型按照工作机理的不同,或者按照分别侧重于处理事件、活动和过程的不同,可以分为以下三类:(1)以事件为基础(EventOrientation)的模拟(2)以活动扫描为基础(ActivityScanningOrientation)的模拟(3)以过程为基础(ProcessOrientation)的模拟第三页,共八十一页,2022年,8月28日3.1离散系统模拟概述1.以事件为基础的离散模拟称为离散事件模拟。系统的建模是通过定义系统状态在事件时间的变化来实现的。建模的任务在于确定导致系统状态改变的事件以及与各类事件相对应的逻辑关系。在排队系统中,顾客到达事件和顾客离去事件是基本的事件。下图所示为排队系统的离散事件模拟模型。第四页,共八十一页,2022年,8月28日3.1离散系统模拟概述

(a)顾客到达(b)顾客离去第五页,共八十一页,2022年,8月28日3.1离散系统模拟概述2.以活动扫描为基础的离散模拟模拟模型描述系统的实体所进行的活动,以及预定导致活动开始或结束的条件。活动开始或终止的事件由为活动规定的条件所初始化。随着模拟时钟按一定的步长推进,需对每项活动的开始或终止的条件进行扫描。这种模拟尤其适宜于活动延续时间不定并且是由满足一定条件的系统状态来决定的情况。与以事件为基础的模拟相比,它的效率低,因而目前应用不够广泛。在排队系统中,服务员为顾客提供的服务是基本的活动。下图所示为排队系统的以活动扫描为基础的离散模拟模型。第六页,共八十一页,2022年,8月28日3.1离散系统模拟概述第七页,共八十一页,2022年,8月28日3.1离散系统模拟概述3.以过程为基础的离散模拟所谓过程是由事件的时间序列以及若干活动所组成。它描述了作为模拟对象的实体如何流经具有一定资源的过程。譬如,为了模拟排队服务系统,可以运用下述语句:(1)每隔T分钟产生一个到达的实体;(2)实体排队等候服务;(3)将模拟时钟以服务时间的步长向前推移一步;(4)当服务结束时“解脱”服务员;(5)将实体从系统清除。下图所示为排队系统的以过程为基础的离散模拟模型。第八页,共八十一页,2022年,8月28日3.1离散系统模拟概述第九页,共八十一页,2022年,8月28日3.1离散系统模拟概述二、离散模拟的常用术语1.实体实体是描述系统的基本要素之一。临时实体:在系统中只存在一段时间的实体。永久实体:永久驻留在系统中的实体。临时实体按一定规律不断地到达(产生),在永久实体作用下通过系统,最后离开系统,整个系统呈现出动态过程。第十页,共八十一页,2022年,8月28日3.1离散系统模拟概述2.属性属性指系统的实体和资源的特性。正确划定模拟的实体、资源及其属性,是系统建模的重要组成部分。表3.1列举了一个生产计划系统的实体、资源及属性。表3.1生产计划系统的实体、资源和属性实体/资源属性产品元件原材料机器工人类型,需求量,生产量,库存量,交货期单价,工时定额类型,需求量,生产量,库存量,单价,工时定额类型,需求量,库存量,订货点,订货批量,消耗定额类型,拥有量,作业时间,调整时间,役龄工种,组别级别,数量,作业时间,工资,工龄第十一页,共八十一页,2022年,8月28日3.1离散系统模拟概述3.事件事件就是引起系统状态发生变化的行为。从某种意义上说,这类系统是由事件来驱动的。一个系统中往往有多类事件,需要建立事件表对系统中的事件进行管理,表中记录每一发生了的或将要发生的事件类型和发生时间,以及与该事件相联的实体的有关属性等。系统事件:系统中的固有事件。程序事件:用于控制模拟过程,当该事件发生时即结束模拟模型的执行。第十二页,共八十一页,2022年,8月28日3.1离散系统模拟概述4.活动离散事件系统中的活动,通常用于表示两个可以区分的事件之间的过程,它标志着系统状态的转移。5.进程进程由若干个有序事件及若干有序活动组成,一个进程描述了它所包括的事件及活动间的相互逻辑关系及时序关系。事件、活动、进程三者之间的关系可用图3.4进行描述。第十三页,共八十一页,2022年,8月28日3.1离散系统模拟概述

图3.4事件、活动、进程三者之间的关系示意图

第十四页,共八十一页,2022年,8月28日3.1离散系统模拟概述6.模拟时钟模拟时钟用于表示模拟时间的变化。在连续系统模拟中,将连续模型进行离散化而成为模拟模型时,模拟时间的变化基于模拟步长的确定。离散事件模拟不需要进行离散化处理,但模拟时钟的推进步长则完全是随机的;两个相邻发生的事件之间系统状态不会发生任何变化,因而模拟时钟可以跨过这些“不活动”周期。从一个事件发生时刻推进到下一事件发生时刻,模拟时钟的推进呈现跳跃性,推进速度具有随机性。第十五页,共八十一页,2022年,8月28日3.1离散系统模拟概述7.统计计数器离散事件系统的状态随着事件的不断发生也呈现出动态变化过程,但由于这种变化是随机的,某一次模拟运行得到的状态变化过程只不过是随机过程的一次取样,它们只有在统计意义下才有参考价值。在模拟模型中,需要有一个统计计数部件,以便统计系统中的有关变量。第十六页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑定义系统的状态变量。对于一个系统来说,用一组状态变量S(矢量)来描述系统的变化特征,其中每一个状态变量s用来表达系统在某一方面行为的变化特征,S通常被称为系统的状态空间。在离散模拟模型中,系统的状态变化可以用一个阶梯函数来表达。换句话说,系统的状态变化是跳跃式的,仅仅在离散间断的时间点上发生。系统状态的变化实际上是由一系列间断发生的事件所驱使的。一个事件的发生是外部因素或者内部因素作用的结果。一系列事件的有序发生驱使着离散模拟过程有序地进行。

第十七页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑定义一个事件时主要考虑那些对系统状态及行为变化和模拟分析结果有重要影响的事情。一个事件有两个基本属性:一是时间属性-记载该事件发生的时间;二是对应属性-也即该事件的发生所对应着的系统某个状态变量的变化。在模拟模型的运行中,当一个事件发生时,往往需要处理一系列的事情,通常用一个专门的子程序来处理这些与事件发生相关的任务(通常叫做事件程序)。模拟时钟(SimulationClock):跟踪并记录模拟时间。模拟时钟与实际时间的差别:假设在某一时刻t1,系统中某种事件发生了,模拟时钟就会“停”下来,直到事件程序处理完有关的事情时钟才会继续走动;而这时的实际时刻已经是t2;然而不论有多少事情需要在事件发生时处理,实际时间总是从不间断的。第十八页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑用两个简单例子来说明如何定义系统的状态及其变化。

1.单一排队服务系统(见图3.5)图中圆圈代表前来购票的顾客(个体),而方块则代表提供服务的售票员(资源)。定义两个状态变量:系统里总的顾客数量N和服务员的状态B。N通常是一个有限的正整数,而B则是一个(0,1)变量,0代表空闲状态,而1则代表工作状态。由此可以定义两个重要的事件:一是顾客的到达,二是顾客接受服务后的离去。说它们重要是因为这两种事件的发生都会直接影响到系统状态变量的改变。第十九页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑

到达排队接受服务离开(销毁个体)

图3.5单一排队服务系统的概念模型2.一个简单的工厂库存系统(见图3.6)定义一个系统状态变量为:库内现存的产品数量M。定义两个事件:制成产品的到达入库和用户购买产品之订单的到来。这两种事件的发生都直接影响到系统状态M的变化:制成品到达会使M增加,而用户订单的到来会使M减少。第二十页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑为“入库”和“取货”这两个操作过程定义各自的状态变量B(t)来反映其从空闲状态到工作状态(或相反)的变化。产品到达等候入库入库销毁产品个体

订单到达等候配量取货销毁订单个体图3.6简单的工厂库存系统的概念模型第二十一页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑用事件图来描述被模拟系统的状态变化也是一种非常有效的方法。在这种方法中,每一个圆圈代表着某一种特定的事件,而每一条有向的弧线(箭头)则代表着某一事件对其自己或其他事件的未来影响。可以用事件图来描述图3.6中简单排队系统的逻辑原理(见图3.7)。图3.7简单排队模拟模型的逻辑事件图个体到达个体离开模拟结束第二十二页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑从图中可以看出,这个模拟系统有两类事件:个体到达与个体离开(完成服务后);其中,每一次个体到达的发生就会决定下一次个体到达(同类事件)发生的时间,也可以决定下一次个体离开(非同类事件)的时间。而每一次个体离开的发生则只会影响到下一次个体离开的发生。还必须定义个体到达事件的初始预置使整个模拟过程得以启动(图中带有部分破折线的箭头)。最后,如果模拟运行的时间有限,还可以定义一个模拟结束事件,该事件的发生将停止整个模拟的运行。整个模拟过程就是由这一系列事件的产生和有序发生来驱使运行的,这也就是为什么离散模拟又常常被称为“事件驱使型模拟”。第二十三页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑一、事件驱使型模拟计算机模拟的过程是以某些特定事件的离散发生而展开进行的。这些离散事件的发生影响或改变系统的状态。这些事件的有序发生驱使着模拟过程有序地进行,模拟系统状态的有序变化。模拟模型须确定那些在模拟的未来时刻发生的事件及其发生的时间和顺序,记录和跟踪这些事件,并且在每个事件发生时按照要求更变系统的状态、收集有关的数据(更新有关的统计量),以及把模拟时钟从当前时刻“跃进”到下一事件的发生时刻。第二十四页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑二、事件的排定与事件安排时间表实施离散计算机模拟的一条基本策略就是设置一个“机构”来确定和控制以下与事件相关的问题以及事件发生时所涉及到的情况:(1)确定新的事件:也即产生未来的事件,特别是确定未来事件的类型。(2)当一个事件发生时,有哪些事情需要得到处理?(3)哪一个事件应该被安排为下一个发生的事件?如何把模拟时钟从当前的事件跃进到下一事件的发生?前两个任务可以由一个定时程序(EventRoutine)来完成,而最后一个任务通常是由一个事件程序(TimingRoutine)来完成。

第二十五页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑从图3.8可以看出,一个离散模拟模型的逻辑运行结构如下:首先当模拟开始运行时,一个预置子程序最先启动。其功能是设定模拟模型的初始状态。预置程序启动后,一个定时程序(TimingRoutine)接着开始运行。其主要任务是根据事件序列表中的排列确定下一个未来发生的事件(也即离“当前时刻”最近的事件),并且把模拟时钟从现在的时刻跃进到下一个事件的发生时刻。接着运行的是一个事件程序,事件程序的任务包括三个方面:①根据最近事件的发生更新有关的系统状态变量;②更新有关的统计计数变量;③确定未来事件(的类型)及其的发生时刻并把确定的结果(新产生的事件)加入到事件序列表。第二十六页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑事件程序运行之后,模拟模型将按照某种预定的终止条件来决定是否继续运行。如果需要继续,则返回到定时程序开始下一个运行周期。如果终止条件满足,则模拟将停止运行,计算有关的统计数值(输出变量的估计值),并启动一个报告程序把模拟结果按照要求的格式形成报告。整个过程如图3.8所示。图3.8离散模拟模型的运行逻辑流程第二十七页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑为进一步理解离散事件模拟的工作原理,在此把在第2章里用到的单一排队服务系统模拟例子进行详细地分解。分解从时间T=0(T表示模拟时间)开始,跟踪每一个事件的发生,及其发生时模拟所做的事情,一直到时间T=25时停止。表3.2给出个体(顾客)到达、离开、服务以及等候的时间,注意其中到达时间和服务时间都是随机产生的变量。第二十八页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑表3.2单一排队服务系统例子的有关数据个体序号到达时刻服务时间离开时刻等候时间12350265110376174493208513222761822447233271827第二十九页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑(1)T=0,首先启动预置程序来设定模型中所有的变量(状态变量和计数变量)的初始状况。例如,设定服务者的初始状态为0(闲置),排队人数为0,事件表为0(还没有事件产生),“上一事件”的发生时间为0,模拟时钟的时刻为0,模拟停止时间为25,所有的计数变量也等于0。然后预置下一次“顾客到达”的时间为0+2=2(由于系统开始时还没有顾客,所以下一次“顾客离开”的时间预设为)。接着启动定时程序,决定下一事件是“顾客到达”(2),于是把模拟时钟从此刻(T=0)跃进到下一事件“顾客到达”的发生时刻T=2。第三十页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑(2)T=2,第一位顾客到达。模拟系统首先启动一个“到达程序”来处理个体到达时需要完成的事情。例如,将服务员从闲置状态改变为工作状态,排队等候时间为0(第一位顾客不需要等候),随机产生的下一次到达事件的时间等于“本次到达的时刻+与下次到达的时间间隔”为2+4=6,而下一次离开事件的时间则为2+3=5。故下一个事件将是“顾客离开”,模拟时钟跃进到下一事件发生时刻T=5。(3)T=5,第一位顾客完成服务离开。模拟启动一个“离开程序”,检查有无个体在排队中等候,排队长为0,将服务员状态由工作改为闲置(B=0),增加一个完成服务的顾客数量。系统中现无任何个体,所以下一次离开的时刻为,而下一次到达的时刻是T=6(已经被确定),因此下一个事件将是“顾客到达”,模拟时钟跃进到T=6。第三十一页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑(4)T=6,第二位顾客到达。到达程序:系统排队等候的为0,资源闲置,所以该个体可直接进入服务,等候时间为0,排队人数仍然为0,将资源状态改变为1(工作),下一次到达的时间为6+1=7,而下一次离开的时间为6+5=11,所以下一个事件是“顾客到达”,模拟时钟跃进到下一个事件发生时刻T=7。

(5)T=7,第三位顾客到达。资源正被占用,所以进入排队等候,排队人数增加一个(0+1=1)。下一次到达的时间是7+2=9,而下一次离开的时间是11(已经被确定),所以预计的等候时间是11-7=4,而下一个事件是“顾客到达”,模拟计时钟跃进到下一事件发生时刻T=9。第三十二页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑(6)T=9,第四位顾客到达。资源仍然被占用,所以加入排队,排队人数增加一个(1+1=2),注意第三位顾客仍在排队中等候,所以第四位顾客将是排队中处于第二位的个体。下一次的到达时间为9+4=13,而下一次离开的时间是11,所以下一个事件是“顾客离开”,模拟时钟跃进到T=11。(7)T=11,第二位顾客完成服务离开。离开程序:完成服务离开的顾客增加一个,已经有顾客排队等候,所以不改变资源现在的状态(工作=1),将排队等候的个体数量减少一个(第三位顾客进入服务)。下一次离开的时间是11+6=17,而下一次到达的时间是13,所以下一个事件是“顾客到达”,模拟时钟跃进到下一事件的发生T=13。第三十三页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑

(8)T=13,第五位顾客到达。到达程序:资源仍然被占用,资源状态不改,排队中已经有一人(第四位顾客),所以进入排队(队中第二名)等候,排队人数增加一个。下一次到达时间为13+5=18,而下一次离开时间是17,下一个事件是“顾客离开”,模拟时钟跃进到下一个事件的发生T=17。(9)T=17,第三位顾客完成服务离开。离开程序:完成服务的顾客增加一个,由于有顾客等待,资源工作状态不变(仍然为1),将排队等候的人数减少一个(第四位顾客进入服务)。下一次离开事件的时间是17+3==20,而下一次到达的时间是18,所以下一个事件确定为是“顾客到达”,模拟时钟跃进到下一事件的发生T=18。第三十四页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑

(10)T=18,第六位顾客到达。到达程序:资源在被占用,排队中已经有一人等候,所以进入排队(队中第二名)等候,排队人数增加一个1+1=2。下一次到达的时间为18+5=23,而下一次离开事件的时间是20,所以下一个事件是“顾客离开”,将模拟时钟跃进到下一事件的发生T=20。(11)T=20,第四位顾客完成服务离开。离开程序:完成服务的顾客增加一个,由于有顾客等待,资源状态仍然不变,将排队等候的人数减少一个(第五位顾客进入服务,排队人数2-1=1)。下一次离开的时间是20+2=22,而下一次到达的时是23,所以下一个事件是“顾客离开”,将模拟时钟拨进到下一事件的发生T=22。第三十五页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑

(12)T=22,第五位顾客完成服务离开。离开程序:完成服务的顾客增加一个,由于仍有顾客等待,资源状态不变,将排队等候的人数减少一个(第六位顾客进入服务,排队人数1-1=0)。下一次离开的时间是22+2=24,而下一次到达的时间是23,所以下一个时间是“顾客到达”,模拟时钟拨进到T=23。(13)T=23,第七位顾客到达。因为资源正被占用,所以进入排队等候,排队人数增加一个(0+1=1),预计等候的时间是1,下一次到达的时间是23+4=27,而下一次离开的时间是24,所以下一个事件是“顾客离开”,模拟时钟拨进到下一事件的发生T=24。第三十六页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑(14)T=24,第六位顾客完成服务离开。离开程序:完成服务的顾客增加一个,由于有顾客排队等候,资源状态不变,将排队的人数减少一个(排队人数=1-1=0),第七位顾客进入服务。下一次离开的时间是24+3=27,而下一次到达的时间是27,所以下一个事件可选到达或者离开,这里选择“到达”,由于下一个事件的发生时间是T=27大于模拟结束时间T=25,所以只能把模拟时钟拨进到T=25。(15)T=25,这是停止模拟运行的时间。第三十七页,共八十一页,2022年,8月28日3.2离散模拟的基本原理和运行逻辑N(t)0510152025t图3.9排队长度N(t)的动态曲线图3.9所示是根据模拟结果绘制出的关于排队长度N(t)的动态曲线。第三十八页,共八十一页,2022年,8月28日3.3模拟模型性能评价以排队服务系统为例介绍离散系统模拟的评价。排队理论已经广泛应用于各种管理系统。例如:仓库供应、企业生产、物资分配与流通、交通运输、计算机作业、银行服务、医院及保健服务、商店、餐厅、理发店等生活服务,都可以作为如图3.10所示的排队服务系统进行处理。在系统模拟的应用中,尤以排队系统的离散型模拟最为普遍。图3.10排队服务系统第三十九页,共八十一页,2022年,8月28日3.3模拟模型性能评价构成排队服务系统的主要实体,是接受服务的各种形式的顾客以及提供各种形式服务的服务者或服务设施。表3.3简要说明了多种排队服务系统的实体。表3.3排队服务系统的实体和资源系统类型顾客服务者物资仓库货物储运站机械加工工段计算机系统航空公司售票处银行医院商店、理发店餐厅领料人员待运货物加工工件待处理的作业旅客存款户病人男、女顾客食客仓库管理员储运人员及设备加工设备、操作工人计算机售票员出纳员医生、护士服务员、理发师服务员、厨师第四十页,共八十一页,2022年,8月28日3.3模拟模型性能评价在分析排队服务系统时,通常要涉及的因素可能包括以下的方面:(1)顾客到达的速率或相邻顾客到达的间隔时间,呈确定性或随机性;(2)服务速率或单位顾客的服务时间,呈确定性或随机性;(3)服务者或服务设施的数量;(4)顾客排队规则,有先进先出,后进先出以及其他优先规则等;(5)排队列数,有单列的和多列的;(6)队列容量,为有限的和无限的。第四十一页,共八十一页,2022年,8月28日3.3模拟模型性能评价评价排队服务系统性能的指标主要有以下三个:(1)顾客在系统内的平均停留时间:式中,di为第i个顾客在系统内的停留时间,N为完成服务的顾客人数。(2)系统内的平均顾客人数式中,qj为发生第j事件时的系统内的顾客人数,tj为第j事件的发生时间,tj-1为第j-1事件的发生时间,T为整个模拟时间,m为在T期间发生的事件数目。第四十二页,共八十一页,2022年,8月28日3.3模拟模型性能评价图3.11说明了的计算方法。图3.11中画有剖面线的面积之和等于上式右边的分子部分,即:(3)服务员负荷率,它等于服务员繁忙时间之和与整个模拟时间之比。

图3.11的计算方法说明图第四十三页,共八十一页,2022年,8月28日3.4离散系统模拟案例此处采用Matlab对一个M/M/1排队系统进行计算机模拟。这个排队系统的服务员为一人。顾客到达系统的间隔时间为平均值等于1min的指数分布随机变量。单位顾客服务时间为平均值等于0.5min的指数分布随机变量。单列排队,采取先进先出的规则,排队行列的最大容量为100。模拟的终止条件为有1000个顾客服务结束离开系统。1.系统的实体、属性和事件系统的实体是顾客、以及资源是出纳员用相应的属性来表征实体决定有两类事件:①第1类事件——顾客到达事件;②第2类事件——顾客在服务结束后离开系统。第四十四页,共八十一页,2022年,8月28日3.4离散系统模拟案例2.系统模拟程序利用Matlab编制模拟程序。除了主程序外,还在M文件中编制了一系列的子程序,它们的功能如表3.4所示,表3.5列举模型的变量的名称和定义。表3.4排队服务系统模拟的子程序和函数子程序(函数)名称

功能INIT

系统初始化子程序TIMING

定时子程序ARRIVE

处理l类事件的子程序DEPART

处理2类事件的子程序第四十五页,共八十一页,2022年,8月28日表3.5本模型的变量变量名称

定义输入参数:MARRVT顾客到达间隔时间的平均值MSERVT顾客服务时间的平均值TOTCUS进行观测的结束服务的顾客总数模拟变量:ANIQ排队系统中顾客数目的时间积分值DELAY

顾客排队等待时间NEVNTS事件类型数目,本例中为2NEXT下一事件的类型NIQ排队等待的顾客数目NUMCUS系统中已经结束服务的顾客数目RMIN定时子程序用于确定最近事件时间的变量STATUS服务员状态变量,空闲时它为0,繁忙时它为1TARRVL(I)在排队系统中等待的第i个顾客的到达时间TIME模拟时间TLEVNT上次事件的时间TNE(I)下一次事件I(I=1,2)的发生时间TOTDEL已经结束服务的所有顾客的停留时间总数U(0,1)间均匀分布随机变量3.4离散系统模拟案例第四十六页,共八十一页,2022年,8月28日3.4离散系统模拟案例(1)模拟主程序图3.12是排队服务系统模拟的主程序,它的主要功能如下:(1)读入输入参数值;(2)调用INIT子程序对系统进行初始化;(3)调用TIMING子程序,安排事件的类型和时间;(4)调用ARRIVE子程序或DEPART子程序以处理顾客到达事件或顾客离开系统事件;(5)输出模拟结果。主程序的功能是判断事件的类型并对相应的事件进行调度,并最终统计并输出模拟结果。第四十七页,共八十一页,2022年,8月28日3.4离散系统模拟案例MARRVT=1;//到达间隔时间为1MSERVT=0.5;//服务时间为0.5TOTCUS=1000;//结束服务顾客总数1000NEVNTS=2;//事件类型为出队入队两种TNE=[0,0];DELAY=0.0;fori=1:100TARRVL(i)=0.0;end[TIME,STATUS,NIQ,TLEVNT,NUMCUS,TOTDEL,ANIQ,TNE(1),TNE(2)]=INIT();[RMIN,NEXT,TIME]=TIMING(TNE,TIME);IfNEXT==1[STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TNE(1),TNE(2)]=ARRIVE(TIME,STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TARRVL);else[NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS,TNE(2)]=DEPART(NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS);endifNUMCUS<TOTCUS[RMIN,NEXT,TIME]=TIMING(TNE,TIME);ifNEXT==1[STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TNE(1),TNE(2)]=ARRIVE(TIME,STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TARRVL);else[NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS,TNE(2)]=DEPART(NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS);endelseend图3.12排队服务系统模拟的主程序第四十八页,共八十一页,2022年,8月28日3.4离散系统模拟案例(2)INIT子程序INIT子程序的目的是对系统参数实施初始化。如图3.13所示,还通过TNE(1)=TIME+exprnd(1)语句确定首次顾客到达时间,设定,以保证首次事件必定是顾客到达事件。function[TIME,STATUS,NIQ,TLEVNT,NUMCUS,TOTDEL,ANIQ,TNE(1),TNE(2)]=INIT()TIME=0.0;STATUS=0.0;//服务员状态NIQ=0;//系统中的停留人数TLEVNT=0.0;//上次事件时间NUMCUS=0;//已结束服务的顾客数TOTDEL=0.0;//顾客停留时间总和ANIQ=0.0;//系统中人数的时间积分值TNE(1)=TIME+exprnd(1);//TNE(1)为事件1的发生时间,设置模拟的首次事件时间TNE(2)=100000000000000;图3.13INIT子程序第四十九页,共八十一页,2022年,8月28日3.4离散系统模拟案例(3)TIMING时钟子程序本系统模拟的定时子程序(如图3.14)扮演着“模拟时钟”的角色,它依据离散模拟时间前移的机理,确定下一次事件的类型和时间。在程序中,首先比较TNE(1),TNE(2),…,TNE(NEVNTS)的数值,此处NEVNTS为事件类型数目,由主程序设定,在本例中它等于2,然后确定下次事件类型NEXT等于事件时间为最小值的事件的类型,进而通过TIME=TNE(NEXT)语句将模拟时钟推移到下次事件时间。若出现NEXT=0,即事件表已经空白,计算机就会终止模拟。(4)ARRIVE子程序ARRIVE子程序是处理第1类事件即顾客到达事件的子程序。图3.15所示为这个子程序的流程图。图3.16则是ARRIVE子程序的源程序。第五十页,共八十一页,2022年,8月28日3.4离散系统模拟案例function[RMIN,NEXT,TIME]=TIMING(TNE,TIME)RMIN=10000000000;//最近事件的时间NEXT=0;//下一事件类型[m,n]=size(TNE);fori=1:nifTNE(i)<RMINRMIN=TNE(i);//第1次运行时,RMIN=TNE(1),I=1NEXT=i;elseendendifNEXT<=0input('EVENTLISTISEMPTY');elseTIME=TNE(NEXT);//当前模拟时钟推移到最近事件时间end图3.14定时子程序图3.15ARRIVE子程序流程图第五十一页,共八十一页,2022年,8月28日3.4离散系统模拟案例function[STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,C10,C11]=ARRIVE(TIME,STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TARRVL)C10=TIME+exprnd(1);//安排下一个到达事件时间ifSTATUS==1//判断服务员是否繁忙ANIQ=ANIQ+NIQ*(TIME-TLEVNT);//系统中排队数目的时间积分值,TLEVNT为上次事件的时间TLEVNT=TIME;NIQ=NIQ+1;//排队等待的顾客数目if(NIQ>100)input('OVERFLOWOFTHEARRAYTARRVL');TARRVL(NIQ)=TIME;//排队等待的第NIQ个顾客的到达时间elseendelseDELAY=0.0;//顾客排队等待时间TOTDEL=TOTDEL+DELAY;//已结束服务的所有顾客的停留时间NUMCUS=NUMCUS+1;//已结束服务的顾客数STATUS=1;//使服务员变忙C11=TIME+exprnd(0.5);//安排离去时间endreturn图3.16ARRIVE子程序的源程序第五十二页,共八十一页,2022年,8月28日3.4离散系统模拟案例(5)DEPART子程序DEPART子程序处理顾客服务结束离开系统事件,其流程图见图3.17,图3.18是它的源程序。图3.17DEPART子程序流程图第五十三页,共八十一页,2022年,8月28日3.4离散系统模拟案例function[NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS,D11]=DEPART(NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS)ifNIQ<=0//NIQ为队列中的顾客数

STATUS=0;D11=10000000000000000000;elseANIQ=ANIQ+NIQ*(TIME-TLEVENT);//系统中排队数目的时间积分值TLEVENT=TIME;//上次事件的时间NIQ=NIQ-1;//排队数DELAY=TIME-TARRVL(1);//DELAY为顾客排队等待时间TARRVL(1)为队列中第1个顾客的到达时间TOTDEL=TOTDEL+DELAY;//已结束服务的所有顾客的停留时间NUMCUS=NUMCUS+1;//系统中已结束服务的顾客数目D11=TIME+exprnd(0.5);//安排顾客离开时间if(NIQ<>0)//如果队列空了

forI=1:NIQI1=I+1;TARRVL(I)=TARRVL(I1);//队列中第I个顾客的到达时间,表明先到先服务的原则

endelseendend图3.18DEPART子程序的源程序第五十四页,共八十一页,2022年,8月28日3.4离散系统模拟案例由本排队服务系统模拟的输出报告(见图3.19)可知,本排队服务系统的顾客平均停留时间为0.497min,平均排队长度为0.5个顾客。SINGLE-SERVERQUEUEINGSYSTEMMEANINTERARRIVALTIME 1.000MINUTESMEANSERVICETIME .500MINUTESNUMBEROFCUSTOMERS 1000AVERAGEDELAYINQUEUE .497MINUTESAVERAGENUMBERINQUEUE .500图3.19排队系统模拟的输出报告第五十五页,共八十一页,2022年,8月28日3.5离散系统模拟工具按照建模思想和所用语言工具的不同,可分三个层次:(1)直接用某种通用的高级语言编写和运行模拟程序(如用C/C++,Pascal,Fortran,数据库语言)。(2)采用专用的计算机模拟语言来进行建模与分析(SIMAN,GPSS,SLAM)。(3)采用更高层次的图形组合式的模拟软件包(如Arena)。第五十六页,共八十一页,2022年,8月28日3.5离散系统模拟工具各种专用模拟语言,尽管在结构、逻辑关系、理解及使用的难易程度以及灵活性等方面有所不同,但是,一般说来,都具备下述功能,无须建模者自己动手开发。(1)数据结构及内存的管理。①表述系统的实体。②文件处理。(2)模拟时间管理。(3)随机分布抽样。(4)计算能力。第五十七页,共八十一页,2022年,8月28日3.5离散系统模拟工具(5)数据的收集、分析与显示。①数据收集。②数据分析。(6)调整程序和监测系统动态。为适应调整计算机程序的需要,模拟语言应具有下述功能:①报告源程序在编译时和执行中的出错信息;②当执行中发生误差时,显示完整的程序流程状态;③在整个程序或某程序段,进行事件跟踪以及运用程序诊断,以获得有关信息,分析如错原因,对程序进行相应修改。第五十八页,共八十一页,2022年,8月28日3.6Arena模拟工具一、Arena简介1.Arena的来源及发展历史1982年和1984年,柔性建模语言SIMAN和基于SIMAN的动画模拟环境CINEMA相继问世。基于SIMAN/CINEMA发展起来的Arena是美国SystemModeling公司于1993年开始研制开发的新一代可视化通用交互集成模拟环境,其核心技术来源于SIMAN和CINEMA。在此基础上有了深刻的变化,很好地解决了计算机模拟与可视化技术的有机集成,兼备高级模拟器易用性和专用模拟语言柔性的优点,并且还可以与当时流行的通用过程语言,如VisualBasic,FORTRAN和C/C++等编写的程序连接运行。第五十九页,共八十一页,2022年,8月28日3.6Arena模拟工具2.应用领域Arena可以用于不同类型的模拟应用,包括离散模拟、连续模拟(系统动力学模拟)、离散-连续混合模拟,当然,也包括蒙特卡罗模拟。作为通用的可视化交互集成模拟环境,Arena的应用范围几乎覆盖可视化模拟的所有领域。如生产制造系统、公共系统和服务系统等。第六十页,共八十一页,2022年,8月28日3.6Arena模拟工具二、结构与功能1.结构体系可视化集成模拟环境Arena,将通用过程语言、专用模拟语言和模拟器的优点有机地整合集成起来,采用面向对象技术、层次化的系统结构,兼备易用性和建模灵活性两方面的优点。在Arena的最底层,过程语言(包括VB、C/C++和Fortran)用来建立特殊要求的模型,即满足复杂的决策规则或外部数据的选取等这些特别的需求。块和元素面板是由SIMAN模块组成的,即SIMAN模板,因而它具有SIMAN的一切优点。第六十一页,共八十一页,2022年,8月28日3.6Arena模拟工具支持与运送面板是由SIMAN模块封装后组成的模板,可以进行灵活性更大的建模。常用面板是模拟建模过程中最常用的一些通用模块,和支持与运送面板一起组成了Arena模板。SIMAN模板、Arena模板则、以及用户采用过程语言编写的程序,一起构成了Arena的标准版本。应用方案模板(ApplicationSolutionTemplates,简称ASTs)是SystemModeling公司建造的一些常用系统模板,Arena的标准版本与ASTs和用户生成模板一起则组成了Arena的专业版本。第六十二页,共八十一页,2022年,8月28日3.6Arena模拟工具2.功能特点作为新一代可视化交互集成模拟环境,Arena具有强大的功能。

(1)输入分析器(InputAnalyzer)输入数据质量的好坏决定了系统模拟的质量。在Arena环境下,提供有的输入分析器作为Arena的一个标准组成成分来辅助用户进行数据处理。输入分析器是一个功能强大且通用的工具,能够分析用户所提供的数据,以拟合出各种概率分布函数,或者说生成各种概率分布函数,其中包含了该分布函数的特征参数。输入分析器的输入数据是由用户采样收集的,输出则是各种类型分布函数及其参数估计,Arena能够提供几乎所有常用的分布函数。第六十三页,共八十一页,2022年,8月28日3.6Arena模拟工具(2)可视化柔性建模在Arena环境下,采用的是面向对象的层次建模方法。对象是构成模型的最基本的元素,对象与对象之间相互作用构成了模型。模型本身也是模块化的,这样,模型又可以与其它模块或对象构成新的更大更复杂的模型,从而形成层次建模,保证了模型层次分明且易于管理。在可视化交互集成环境Arena下,建模与可视化技术是集成在一起的。这样,在建模的同时实现模型的可视化表达,提高了可视化建模的效率。第六十四页,共八十一页,2022年,8月28日3.6Arena模拟工具(3)输出分析器(OutputAnalyzer)输出分析器提供了一个易用的用户界面以帮助用户简化数据分析,使用户查看和分析输出数据更加快捷、简便。输出数据分析器可对数据进行多样的显示处理,包括条形图(Barchart)、柱状图(Histogram)、移动平均(MovingAverage)、曲线图(Plot)、表(Table)等。还可对数据进行功能强大的数理统计分析。(4)Arena的定制与集成Arena2.0以上的版本能完全与MicrosoftWindows和MicrosoftWindowsNT等兼容。第六十五页,共八十一页,2022年,8月28日3.6Arena模拟工具Arena开发了两项Windows技术以增强桌面应用程序的集成性。一是ActiveX自动化(OLE自动化)。二是应用程序集成技术VisualBasicforApplication(VBA)。这两项Windows技术共同作用使得Arena可以和其它支持ActiveX自动化的程序集成到一起。Arena可以控制和定制用户化的输出报表。Arena还可以通过对象链结与嵌入(OLE),来使用其它应用程序的文件和函数。第六十六页,共八十一页,2022年,8月28日3.6Arena模拟工具三、基本模块1.流程图模块(1)生成模块:该模块是一个模拟模型开始点,用于产生到达的实体。(2)处理模块:该模块用于处理到达的实体。(3)判断模块:该模块表述系统中的决策过程,可用于到达实体的分类,也可用于实体流动的分流。(4)赋值模块:该模块用于对变量、实体特性、实体类型、实体图片或其他系统变量赋值,且一个模块可以完成多个赋值。第六十七页,共八十一页,2022年,8月28日3.6Arena模拟工具(5)批量模块:该模块用于模拟模型中的组合功能。(6)分解模块:该模块用于将一个输入实体拷入多实体中,或将已有的一组实体分解。(7)记录模块:该模块用于收集数据,包括各种类型的观察统计数据。同时提供了统计计算类型,而且指定了记录和计数集合。(8)清除模块:该模块是模拟模型的结束点,用于清除被处理完的实体,并记录实体的统计值。第六十八页,共八十一页,2022年,8月28日3.6Arena模拟工具2.数据模块(1)实体模块:该数据模块定义了模拟中各实体的类型和它们的初始图形值,也定义了实体初始成本信息和维持成本。(2)排队模块:该数据模块用于改变一个特定的排队系统的排队规则。缺省的排队规则是先进先出。(3)资源模块:该数据模块定义在模拟系统中的资源,包括成本信息和资源能力。(4)时间表模块:该数据模块同资源模块一起定义一个资源运作的时间表,或者同产生模块一起定义一个到达时间表。另外,时间表还用于基于模拟时间的因子时间延迟。(5)集合模块:该数据模块定义了各种类型的集合,包括资源、记数器、记录实体类型以及实体图形。(6)变量模块:该数据模块用于定义变量的维数和初始值。第六十九页,共八十一页,2022年,8月28日3.6Arena模拟工具四、Arena的建模过程示例1.示例考察一个简单的抵押申请处理过程,以显示如何用Arena5.0建模、模拟及进行可视化和分析。图3.43抵押申请处理流程图第七十页,共八十一页,2022年,8月28日3.6Arena模拟工具2.Arena建模环境从WindowsStart菜单中选择Programs/Arena/ArenaBasicEdition开始运行。此时,Arena的建模环境就打开了,这是一个新的模型窗口。模型窗口中有三个主要区域:①基本处理模块区域(BasicProcess):包含建模图标,称为模块,可用它们定义业务处理流程;②报告区(Reports):包含很多报告,这些报告用来显示模拟运行结果;③导航区(Navigate):允许显示不同的模型。还有两个主要的小窗口:流程图窗口和变量、参数清单窗口。第七十一页,共八十一页,2022年,8月28日3.6Arena模拟工具3.将处理过程映射为流程图首先将建立一个流程图。“流程图”这个词涉及到了两个概念:建模和模拟。(1)产生抵押申请单实体流程图是从产生模块(CreateModule)开始的。这是实体流经模型的起始点。用鼠标从基本处理模块区中拖动Create模块到模型窗口中,一个缺省的名为“Createl”,就赋给了该模块。图3.45添加Create模块第七十二页,共八十一页,2022年,8月28日3.6Arena模拟工具(2)处理申请单的过程选中Create模块,用鼠标将Process模块从基本处理模块区中拖至模型窗口,将它放至Create右边。

(3)如何使用Snap和Grid如果流程图窗口中模块排列得不整齐,可以使用Arena中的Snap和Grid功能调整

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论