仿真模型设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不管是采用哪一种仿真策略、仿真模 型都可分为三个层次进行设计: 层次1一总控程序; 层次2一基本模型单元的处理程序
层次3一公共子程序
4.2.1 面向事件的仿真模型
采用事件调度法建立的仿真模型称为面向事件的仿真模型。该仿真方法 由一个总控程序来控制整个仿真系统的运行。 其总控程序完成如下工作: • ������ • ������ • ������ 时间扫描:确定下—事件发生时间并将仿真时钟推进到该时刻; 事件辨识:正确地辨识当前要发生的事件; 事件执行:正确地执行当前发生的事件。
4.1.1 事件调度法
基本思想:将事件例程作为仿真模型的基本模型单元,
按照事件发生的先后顺序不断执行相应的事件例程。每一 事先可预知其发生时间的确定事件都带有一个事件例程,
用以处理事件发生后对实体状态所产生的影响,并安排后
续事件;条件事件不具有事件例程,对它的处理隐含在某 一确定事件的例程中。因此,事件调度法中所说的事件是
第四章 仿真模型设计与实现
将系统模型转换为一个可以在计算机上运行的仿 真模型,一般需要完成三部分工作。 (1)设计仿真策略,具体地说就是确定仿真模型的控 制逻辑和仿真时钟推进机制; (2)构造仿真模型,即确定模型的具体操作; (3)仿真程序设计与实现.
4.1 离散事件系统仿真策略
仿真策赂是仿真模型的核心,反映了仿真模型的本 质,从根本上决定了仿真模型的结构。迄今为止, 离散事件系统已形成三种基本的仿真策略.分别是 事件调度(Event Scheduling,ES)、活动扫描 (Activity Scanning,AS)和进程交互(Process Interaction,PI)。
第三列C3(到达时刻)的数值计算公式为: C3[i]=C2[i]+C3[i-1],i>1; 第五列C5(服务开始时刻)将使用自定义宏函数,选取该顾客到达时刻 C3和前一顾客服务结束时刻C7中的最大数值作为该顾客的服务开始时刻, 函数体见Excel表格中的ServiceStartTime函数;
面向事件仿真模型的主控程序使用事件表(Event List)来完成上述任 务;事件表可以想象为记录将来事件的”笔记”。在仿真运行中,事件 的记录不断被列入或移出事件表。例如:在单服务台排队服务系统中, 顾客的到达可能会导致一个服务完毕事件的记录被列人事件表。每一事 件记录至少应由两部分组成:事件的发生时间、事件的标识,有时,事 件记录中还会有参与事件的实体名称等信息。
else
下一事件[i]=1 endif 状态表中四列取值控制流程具体参见Excel中的SimuTime, HairmanStatus,QueueStatus,NextEvent四个函数。 事件表和详细时间表中的数据将对照下图中的顾客到达时间间隔数据流 和服务时间数据流通过手工填写。
第二列C2(顾客到达间隔时间)和第四列C4(服务时间)通过随机函数 直接得出,两个随机函数分别为:4+4*Rand(),2+6*Rand();
指确定事件。对实体流程法建立的概念模型,一般可采用
事件调度法建立其仿真模型。
事件调度法的仿真策略如下:
(1)初始化
1)臵仿真的开始时间t0和结束时间tf 2)臵实体的初始状态; 3)臵初始事件及其发生时间,
(2)臵仿真时钟TIME=ts . (3)确定在当前时钟TIME下发生的事件类型 (4)如果TIME<tf,执行 Case Ei of E1:执行E1的事件例程:产生后续事件类型及发生时间; …… En:执行En的事件例程:产生后续事件类型及发生时间; endcase 否则,转(6) 将仿真时钟TIME推进到下一最早事件发生时刻;转(3); (6)仿真结束
(3)手工仿真演示
使用事件调度法对理发店进行手工仿真至少需要事件表和状态表,为 了更清晰的描绘出仿真运行过程,使用一个详细事件表表示在不同仿 真时刻将来事件表FEL的赋值情况,具体见下图。
上图中状态表中的数据除了第一行,剩余行的取值都是根据条件判断来 作出的。例如下一事件列中的取值根据如下条件获得的: if 顾客到达[i]>服务完毕[i] ‘比较服务完毕事件是否在顾客到达事件 之前发生’ 下一事件[i]=2
仿真运行示例
理发店系统仿真 假设顾客到达时间间隔服从[4,8]Min的均匀分布,理发 师理发时间服从[2,8]Min的均匀分布;顾客容量无限; 顾客不会流失;服务规则为先到先服务FIFO。 试仿真运行该理发店第100位顾客到达时,顾客最长等待 时间、平均等待时间、理发师忙率。 (1)该系统的事件: E1:顾客到达事件; E2:顾客服务完毕事件; (2)各事件的例程:
4.1.2活动扫描法
活动扫描法与活动周期模型有较好的对应关系。ACD中的任一活 动都可以由开始和结束两个事件来表示,每一事件都有相应的活动例 程。例程中的操作能否进行取决于一定的测试条件,该条件一般与时 间和系统的状态有关,而且时间条件须优先考虑。确定事件的发生时 间事先可以确定,因此其活动例程的测试条件只与时间有关;条件事 件的例程测试条件与系统状态有关。一个实体可以有几个活动例程; 协同活动的活动例程只归属于参与的一个实体(一般为水久实体)。在 活动扫描法中,除设臵系统仿真时钟外,每一实体都带有标志自身时 钟值的时间元(time cell)。 活动扫描法的基本思想:用各实体时间元的最小值推进仿真时钟; 将时钟推进到一个新的时刻点后.按优先序执行可激活实体的活动例 程,使测试通过的事件得以发生并改变系统的状态和安排相关确定事 件的发生时间。因此.与事件调度法中的事件例程相当,活动例程是 活动扫描总控程序的 算法结构如下: (1)时间扫描 ������ 扫描事件表,确定下一事件发生时间; ������ 推进仿真时钟至下一事件发生时间; ������ 从事件表中产生当前事件表CEL,CEL 中 包含了所有当前发生事件的事件记录; (2)事件执行 依次安排CEL中的各个事件的发生,调用相应的 事件例程。某一事件一旦发生,将其从事件表 中移出,见下图。
第六列C6(顾客在队列等待时长)的数值计算公式为:
C6[i]=C5[i]-C3[i],i>1; 第七列C7(服务结束时间)的数值计算公式为:C7[i]=C5[i]+C4[i]; 第八列C8(顾客通过系统时间)的数值计算公式为: C8[i]=C4[i]+C6[i]; 第九列C9(理发师空闲时间)的数值计算公式为:C9[i]=C5[i]-C7[i1],i>1; 通过一次随机实验,获得该系统的运行指标:顾客平均等待 时间为2.1Min,最长等待时间为9.7分钟,理发师忙率为(594-71.9) /594=87.9%。对于这个理发店系统,顾客满意度和理发师工作量还是比 较合理的。