事件调度法及仿真示例
3离散事件系统仿真基础和建模

24
模型的人工运行(续)
2020/8/10
25
示例2-窗口售票系统
剧院雇一名售票员同时负责窗口销售和对电 话问讯者的咨询服务。
窗口服务比电话服务有更高的优先级。 问讯者打来的电话由电话系统存储后按先来
先服务的原则一一予以答复 建模的目的是研究售票员的忙闲率。2020/8/Fra bibliotek026
实体 流程图分析
常用图示符号
菱形框(表示判断) 矩形框(表示事件、状态、活动等中间过程) 圆端矩形框(表示开始和结束) 箭头线(表示逻辑关系)
2020/8/10
开始 结束
15
建模步骤-八个步骤
2020/8/10
16
示例1
理发店系统
有一个小理发店只有一个理发员。顾客来到理发店 后,如果有人正在理发就坐在一 旁等候。理发员按 先来先理的原则为每一位顾客服务,而且只要有顾 客就不停歇。
库所
变迁
输入
输出
函数
函数
2020/8/10
29
Petri网的变迁
2020/8/10
30
变迁实例
t1
t4
2020/8/10
t2 t3
31
应用举例
一条工业生产线,完成两项工业操作,第一 个操作将传入生产线的半成品S1和部件S2用 2个螺丝钉S3固定在一起,变成半成品S4。 第二个操作再将S4和部件S5用3个螺 丝钉S3 固定在一起,得到新的半成品S6。完成两项 工业操作时都要用到工具S7。假定由于存放 空间的限制,停放在生产线上的半成品S4最 多不能超过5件。
考察目的
建立实体流程图模型; 在假定顾客到达间隔和理发时间服从一定的概率分
布时,考察理发员的忙闲情况。
第五章 生产系统仿真方法

5.2.3 进程交互法
LOGO
5.2.3 进程交互法
进程交互法兼有事件调度法和活动扫描法的特点,但其算法 比两者更为复杂。根据进程交互法建立的仿真模型称为面向 进程的仿真模型。 面向进程仿真模型总控程序设计采用两个事件表: 未来事件表(Future Event List,FEL) 当前事件表(Current Event List,CEL)
LOGO
仿真模型中的事件存放于“事件表”中,通过时间控制模块从事 件表中选择最先发生的事件;重置仿真时钟,并调用与该事件 对应的事件处理模块;更新系统状态,决定未来将要发生的事 件;当当前事件结束后,返回时间控制模块;重复事件的选择 与处理,直到仿真结束。
5.2.1事件调度法
事件调度法的仿真过程:
LOGO
(2)相对时间法:将时间元的时钟值设 定为相应实体确定事件发生的时间间 隔。此时的时间扫描算法为: FOR i=1 to m IF (time-cell[i]>0)THEN IF (time-cell[i] <MIN) THEN MIN= time-cell[i] END IF END IF END FOR TIME= TIME+ MIN FOR i=1 to m time-cell[i]=time-cell[i] - MfN END FOR
总控程序调用
总控程序调用
LOGO
现为到达 时间? Y 顾客进入等待队列 产生下一到达时间 安排下一到达事件
N
服务结束时间 是否已到? Y 顾客离开系统 服务台空闲
N
返回总控程序
返回总控程序
5.2.3 进程交互法
进程:
进程是有序的事件与活动组成的过程,它描述了其中的事件、 活动的相互逻辑关系和时序关系。
第6章 离散事件系统仿真策略

4
6.2 事件调度法
事件调度法基本思想: 用事件的观点来分析真实系统,通过定义事件及每个 事件发生引起系统状态的变化,按时间顺序确定并执行每 个事件发生时有关的逻辑关系。 所有事件均放在事件表中。模型中有一个时间控制成 分,该成分从事件表中选择具有最早发生时间的事件,并 将仿真钟修改到该事件发生的时间,再调用与该事件相应 的事件处理模块,该事件处理完后返回时间控制成分。这 样,事件的选择与处理不断地进行,直到仿真终止的条件 或程序事件产生为止。
2
6.1 主要术语
描述变量:成分状态、属性的描述。 成分间的相互关系:描述成分之间相互影响的规则。 在一个模型中,主动成分对被动成分可能产生作用, 而主动成分之间也可能产生作用。 C={1, 2, …, n} 成分集合,i是第i个成分分量 (1≤i≤n)。 CA={1, 2, …, m}主动成分子集,j是第j个成分分 量(1≤j≤m, m<n)。 CP={1, 2, …, l}被动成分子集,k是第k个成分分 量(1≤k≤l, l<n)。 一个模型中,n = m + l
b0 b1 t0 t1 A1
0 15
A1 15, A2 32, A3 24, A4 40, A5 22,...
S1 S2 S4 W3 W4 W5 b7 b8 b9 b5 b6 C2 t4 C3 t5 C4 A4 A5 150
第4讲 面向事件调度的仿真

面向事件调度的仿真 用于事件调度的手工仿真
用于事件调度的手工仿真
例1:书上的排队例子:小杂货店只有一 个收款台,顾客随机地分别以1-8分钟 的间隔到达,到达间隔时间值是等概率 的。服务时间为1-6分钟,其概率为表 所示。 仿真20个顾客来分析此系统。
分析:
模型为:
状态: LQ(t)(排队的顾客数), LS(t)(正在服 务的顾客数)。
若t1=顾客服务完成事件的发生时间,如果存在 下一个顾客,则开始服务。那么产生的未来事 件为 t*=t+s* ( s*为服务时间)
停止事件的产生?
两种方式:
在时间0时刻时,安排一个未来时间 TE停止仿真的事件,仿真长度[0,TE]
运行长度在仿真过程中自己确定。TE 是某一规定事件E出现的时间。(如顾客 数、故障发生事件)
到达间隔时 8 6 1 8
3
8
7
间
服务时间 4 1 4 3
2
4
5
小杂货店手工仿真(基于事件表)
CLOCK
System State
Future
comment
Event List
Cumulative Statistics
LQ(t) LS(t)
B MQ
0
01
(D,4), (A,8), a*=8, A
00
活动:装载、称重、运输
初始条件:
在时间0时已有5辆卡车在装载,另外一辆在地秤 上称重。
Loading Time 10 5 5 10 15 10 10 Weighing Time 5 4 6 4 3 1 Travel Time 10 12 8 15 13
作业:
对书上的库存模型采用面向事件的手工 仿真。
4-仿真策略

面向活动仿真模型的总控算法结构
时间扫描 活动例程扫描
进程交互法
前两种处理都是针对事件而建立的,而 且各个处理都是独立存在的。 进程交互法的基本模型单元是进程,进 程与处理的概念有着本质的区别
它是针对某类实体的生命周期而建立的 一个进程要处理实体流动中发生的所有事件 (包括确定事件和条件事件) 单服务台排队服务系统的例子
仅仅依据下一个最早发生事件的准则 是一种预定事件发生时间的策略 当事件的发生不仅与时间有关,而且还与其 他条件有关,即事件只有满足某些条件时才 会发生的情况下,该种方法不适合。
• 因为无法预定活动 的开始或终止时间
活动扫描法最早出现在1962年Buxton和Laski 发布的CSL语言中。 以活动为分析系统的基本单元,认为仿真系统 在运行的每一个时刻都由若干活动构成。 每一活动对应一个活动处理模块,处理与活动 相关的事件。 活动与实体有关。 活动的激发与终止都是事件引起的,活动周期 图中的任一活动都可以由开始和结束两个事件 表示。
活动扫描法的仿真过程
初始化
置仿真的开始时间和结束时间 置各实体的初始状态 置各个实体时间元的初值
置仿真时钟TIME=t 如果仿真时钟超过结束时间,转至(4), 否则执行活动处理扫描 仿真结束
关键点
活动扫描法要求在某一仿真时刻点上要 对所有当前可能发生的和过去应该发生 的事件反复进行扫描,直到确认没有已 没有可能发生的事件时才推进仿真时钟。
仿真程序设计
仿真模型设计:
第一层——总控程序 第二层——基本模型单元的处理程序 第三层——公共子程序(如随机数发生 器)
总控程序
处于仿真模型的最高层 负责安排下一事件的发生时间,并确保 在下一事件发生的时候完成正确的操作。 即第一层对第二层实施控制
两种调度算法结合的例子

两种调度算法结合的例子以下是 8 条关于两种调度算法结合的例子:1. 先来先服务和最短作业优先结合起来岂不是超厉害?就好比去超市排队结账,先到的人先服务就像先来先服务,这时候来了个只买一瓶水的人,那当然优先让他结账呀,这就是最短作业优先嘛!比如处理一批任务,先按照先来的顺序进行一部分,然后遇到短的任务就赶紧先处理它。
2. 时间片轮转和优先级调度结合也很有意思呀!你可以想象成玩游戏轮流上场,但是厉害的角色有优先上场的机会。
在计算机里,一些任务先轮流执行一小段时间,可要是有重要的高优先级任务来了,就先让它执行,多棒呀!像安排课程表的时候,先大家轮着上一些课,突然有个紧急重要的课程就插队先上。
3. 有没有想过最短剩余时间优先和多级反馈队列结合呀?这就像运动会比赛,看谁剩下的路程最短就优先让他跑,可又有不同等级的赛道。
比如在系统中,先关注剩余时间短的任务,同时又按照不同重要性把任务放在不同队列里,是不是感觉很神奇啊!好比医院看病,着急的病人先看,同时不同病症的病人又在不同区域等待。
4. 高响应比优先和抢占式调度结合不是很绝吗?响应比高就像人气高,该优先,而抢占式就像突然有人插队。
比如工作中,一直努力的人应该先得到机会,但要是来了个特别紧急的事情就得抢占先处理。
这不就是类似上课好好表现的同学有优先发言机会,但要是老师突然有重要事情要说,那就得先让老师说了嘛!5. 公平共享调度和彩票调度结合,哇塞,这怎么理解呢?就好比分蛋糕要公平,但偶尔也得靠运气。
处理任务时既要保证公平的分配资源,偶尔又来点惊喜靠运气决定顺序,这多有趣呀!就像抽奖一样,大家都有机会,但也有运气成分在呢!比如分配资源给不同团队,既要保证基本公平,又可能有意外的机会给某个团队。
6. 反馈调度和随机调度结合,岂不是充满了变数?就像是走路,大方向是按照反馈调整,但偶尔也会莫名其妙走个岔路。
在系统里,根据运行情况反馈调整,时不时又来个随机的安排,是不是很让人期待啊!就像准备出门,本来计划好了路线,可突然又心血来潮想去个别的地方。
系统仿真算法

系统仿真算法
事件调度法(event scheduling, ES) 活动扫描法(activity scanning, AS) 进程交互法(process interaction, PI) 三者比较
三种仿真方法
事件调度法是面向事件的,它记录事件发生的 过程,处理每个事件发生时系统状态变化的结 果。 活动扫描法是面向活动的,它记录每个活动开 始与终止的时间,从而记录实体从一种状态变 为另一种状态的过程。 进程交互法是面向进程的,它记录每个进程推 进的过程。由于各进程是并行进行的,为了便 于计算机处理,进程交互法采用交互推进的方 法,推进每个进程,最终完成全部进程的推进, 即完成系统的扫描法
活动扫描法的设置
活动扫描法建立在设立系统仿真钟、成分 仿真钟和条件测试模块的基础之上。
活动扫描法的步骤
活动扫描法的程序流程
进程交互法的设置
进程交互法的步骤
进程交互法的程序流图
三种方法的比较
术语
成分(component):系统模型中的实体。 主动成分(active-type component):可 以主动产生活动的成分,如排队系统中 的顾客。 被动成分(passive-type component):本 身不能激发活动,只有在主动成分作用 下才产生状态变化。
事件调度法
事件调度法设置
第03章.离散事件系统仿真ppt

仿真钟
• 仿真时钟用于表示仿真事件的变化。 • 在离散事件系统仿真中,由于系统状态变化是不连续 的,在相邻两个事件发生之间,系统状态不发生变化, 因而仿真时钟可以跨越这些“不活动”区域。从一个事
件 发生时刻,推进到下一个事件发生时刻。仿真时钟的推 进成跳跃性,推进速度具有随机性。由于仿真实质上是 对系统状态在一定时间序列的动态描述,因此,仿真时 钟一般是仿真的主要自变量,仿真时钟的推进是系统仿 真程序的核心部分。
• 离散事件系统仿真与连续系统仿真的方法很不相同。
1)离散事件系统模型只是一种稳态模型,无须研究状 态变量从一种状态变化到另一种状态的过程。而对于连 续系统,主要研究其动态过程,连续系统模型一般要用 微分方程模型描述。
2)离散事件系统中的变量大多数是随果来逼近总体分 布的统计特征值,因而需要进行多次仿真和较长事件 仿真。
• 对受随机因素影响的系统进行仿真时,首先要建立随 机变量模型,即确定系统的随机变量,并确定这些随机 变量的分布类型和参数。对于分布类型是已知或者是可 以根据经验确定的随机变量,只要确定它们的参数就可 以了。无论是确定随机变量的分布类型还是确定其参 数,都要以调研观测的数据为依据。
3.2 离散事件系统仿真方法
成分
• 描述系统的另一基本要素是成分。 • 成分与实体是同一概念,只是根据习惯,在描述系统时
用实体,而在模型描述中用成分。
• 成分分为主动成分和被动成分(待加工的零件)。 • 可以主动产生活动的成分称为主动成分。 • 本身不产生活动,只在主动成分作用下才产生状态变化
的那些成分称为被动成分。
进程
• 由若干事件与若干活动组成的过程称为进程。 • 它描述了各事件活动发生的相互逻辑关系及时序关系。 • 例如,工件由车辆装入进货台;经装卸搬运进入仓库;经保管、加
第四章 离散事件系统仿真方法1

第4章离散事件系统仿真方法4.1离散事件系统仿真一般概念4.1.1 一般概念离散事件系统:系统中的状态只在离散时间点上发生变化,而且这些离散时间点一般是不确定的。
系统状态是离散变化的,而引发状态变化的事件是随机发生的,因此这类系统的模型很难用数学方程来描述。
随着系统科学和管理科学的不断发展及其在军事、航空航天、CIMS和国民经济各领域中应用的不断深入,逐步形成一些与连续系统不同的建模方法:流程图和网络图。
离散事件系统建模与仿真的基本概念:⑴实体:是描述系统的三(四)要素之一,是系统中可单独辨识和刻画的构成要素。
如:工厂中的机器,商店中的服务员,生产线上的工件,道路上的车辆等。
从仿真角度看,实际系统就是由相互间存在一定关系的实体集合组成的,实体间的相互联系和作用产生系统特定的行为。
实体可分为两大类:临时实体和永久实体临时实体——在系统中只存在一段时间的实体。
一般是按一定规律有系统外部到达系统,在系统中接受永久实体的作用,按照一定的流程通过系统,最后离开系统。
临时实体存在一段后即自行消失,消失有时是指实体从屋里意义上退出了系统的边界或自身不存在了;有时仅是逻辑意义上的取消,意味着不必再予以考虑。
如:进入商店的顾客、路口的车辆、生产线上的工件、进入防空火力网的飞机、停车场的汽车等。
永久实体——永久驻留在系统中的实体。
是系统产生功能的必要条件。
系统要对临时实体产生作用,就必须有永久实体的活动,也就必须有永久实体。
可以说临时实体与永久实体共同完成了某项活动,永久实体作为活动的资源而被占用,如:理发店中的理发员、生产线上的加工装配机械、路口的信号灯等。
属性和行为相同或相近的实体可以用类来描述,这样可以简化系统的组成和关系。
如:理发店服务系统可以看成是由“服务员”和“顾客”两类实体组成的,两类实体之间存在服务与被服务的关系。
⑵属性是实体特征的描述,一般是系统所拥有的全部特征的一个子集,用特征参数或变量表示。
选用那些参数作为实体的属性与建模目的有关,一般按以下原则:便于实体分类:如按理发店顾客的性别;便于实体行为的描述:如飞机的速度便于排队规则的确定:如生产线上待处理工件的优先级水平。
5章_系统仿真算法2

3、如何产生未来事件(在STEP 5中)?(以排队模型为例) 若t1=到达事件的发生时间,则产生的未来事件是第二
个到达事件,t* =t+a* (a*为到达间隔) 若t1=顾客服务完成事件的发生时间,如果存在下一个
顾客,则开始服务。那么产生的未来事件为 t*=t+s* ( s* 为服务时间)
4、停止事件的产生? 两种方式:
STEP 1:初始化(时间、事件表、系统初始事件、成 分状态等)
STEP 2: 从FEL中移去即将来临的事件。 STEP 3:推进时钟到即将来临的事件。 STEP 4:执行即将来临事件:修改系统状态、改变实
体属性、以及设置所需成员数。 STEP 5:产生未来事件并放在FEL的正确位置。 STEP 6:修改累计统计及计数器。
表2 服务时间分布
服务时间/min
1 2 3 4 5 6
概率
0.10 0.20 0.30 0.25 0.10 0.05
随机数区间
.01—.10 .11—.30 .31—.60 .61—.85 .86—.95 .96—.99
仿真10个顾客来分析此系统。
产生的0-1之间的均匀分布随机数
排队系统
顾客总体
事件调度法:面向事件,记录事件发生的过程, 处理每个事件发生时系统状态变化的结果。
活动扫描法: 面向活动,记录每个活动开始与终 止的时间,从而记录实体从一种状态变为另一种状态 的过程。
进程交互法:面向进程。是建模最为直观的策略,
但进程交互法的传统实现很复杂。
5.1 事件调度法
离散事件系统中最基本的概念是事件,事件的发 生引起系统状态的变化。用事件的观点来分析真实系 统,通过定义事件及每个事件发生对系统状态的变化 按时间顺序确定,并执行每个事件发生时有关的逻辑 关系,这就是事件调度法的基本思想。
网络仿真事件集调度算法介绍

如 上所 述 ,离散 事件仿 真技 术是 指仿 真过程 的 推 进 以仿真 事件 为依 据 的技 术 。 虽 然 事 件驱 动 仿 真 技 术 以 事 件 为 仿 真 进 程 主 线 。 并不 是完 全脱离 时 间这个概 念 。 但 现实 生活 中任 何 事件 的发 生都 有先后 顺序 ,离 散事件 仿 真技术 所
个一 个地依 次被 执行 ,与 之相应 的是 仿真 时 间的 离 散 事 件 仿 真 过 程 中 ,仿 真 事 件 并 不 是 生 成
不 断更新 。
后 就 立 即 执 行 .而是 在 执 行 时 间小 于 自身 的事 件 都 执 行 完 后 才会 执 行 , 因此 仿 真 事 件 产 生 后 会 以
理应 优 先 执行 。
图 1 时 间 驱 动仿 真 并 行 事 件 示 意
而对 于事件 驱动 仿真 来讲 。并行 事件 意味着 多
个 事件 具有 相 同的执行 时 间 , 这些 事件执 行完前 , 在
虽 然 仿真 事 件 集 中 的事 件是 依 次被 执 行 的 , 然
而如何 向仿 真事 件集 中添加 事件 确是 一个 值得 考虑 的 问题 ,尤 其是 当仿真 事件 集 中的事 件数 达到一 定
一
定 形式 组织 起 来 以等 待 执 行 ,这 些 等 待 执 行 的
【 u m e
事 件 组成 了仿 真 事 件 集 。仿 真 事 件 集 中 的仿 真 事
件 通 常 以仿 真 时 间 的升 序 进 行 排 序 。这 样 才 能 保
证 事 件执 行 时 间上 的先 后 性 ,执 行 时 间早 的事 件
事件触发控制仿真简单例子

事件触发控制仿真简单例子
1. 想象一下,你在玩游戏的时候,每一次得分就会触发特殊效果,就像打地鼠游戏,每打中一次地鼠就会有惊喜出现,这就是事件触发控制!
2. 当你早上起床,闹钟响起就是一个事件触发,它控制着你开始新的一天,就好比是开启一天生活之旅的钥匙,这不是很神奇吗?
3. 你按下车钥匙的解锁键,车子发出“嘀嘀”的声音并解锁,这就是一个事件触发控制的简单例子呀,是不是很常见?
4. 去看电影的时候,到了开场时间灯光暗下来,这就是事件触发控制,就如同火车按时启动带着我们驶向未知的精彩,多有意思!
5. 你在手机上点击发送消息的按钮,立马就把你的想法传递出去了,这个点击动作就是事件触发控制呀,仿佛是信息的魔法棒!
6. 过生日的时候,吹灭蜡烛这个动作触发了大家一起唱歌的欢乐氛围,这也是事件触发控制呀,像不像打开了欢乐的宝箱?
7. 在智能音箱旁说一句播放音乐,它就开始播放了,这多神奇呀,这就是事件触发控制,不正像你掌握了音乐的开关吗?
8. 当你进入家门,感应灯会自动亮起,这就是事件触发呀,如同黑暗中突然出现的光明使者,真的很方便呢!
我觉得事件触发控制在我们生活中无处不在,给我们带来了很多便利和惊喜,它就像是一个神奇的魔法,让一切变得更加有趣和有序!。
计算机仿真原理及应用第三讲 离散事件系统仿真方法

到达事件的处理流程
CLOCK=t 到达事件发生
N
NUMR=1?
Y
NUMR=1 产 生 修 理 时 间 RT , 在 t+RT 安 排 新 的 离 开 事 件。
NUMQ=NUMQ+1
产生到达间隔时间AT,在 t+AT安排新的到达事件 收集统计 转向时间推进子程序,继续仿真
离开事件的处理流程
CLOCK=t 离开事件发生 Y NUMQ1? N
打印报告仿真结束yn建模建模变变量说明系统状态numqnumr当前时刻等待队列中的机器数当前时刻正在接受修理的机器数0或1实体属性和集合wqatqwqat1q等待队列中第q1个机器的到达时间现在正在接受修理的机器的到达时间等待队列中元素索引将来事件表evtievtflag类型为i的下一事件发生时间i12下一事件类型标志1或2已知条件seedeati变量说明系统状态numqnumr当前时刻等待队列中的机器数当前时刻正在接受修理的机器数0或1实体属性和集合wqatqwqat1q等待队列中第q1个机器的到达时间现在正在接受修理的机器的到达时间等待队列中元素索引将来事件表evtievtflag类型为i的下一事件发生时间i12下一事件类型标志1或2已知条件seedeatiert产生随机数的种子到达间隔时间均值产生随机数的种子到达间隔时间均值修理时间均值变量说明量说明erttimefmintimefmin修理时间均值仿真停止时间evt1和evt2的最小值最早发生事件的时间值仿真变量clock仿真时钟当前时间累积统计量btletlqtvalsnd到当前时间为止修理台工作的总时间上一事件发生时间当前队列中机器数与时间区间的乘积机器等待的总时间时间区间当前时间与上一事件发生时间之差到当前时间为止已离开的机器在系统中逗留的总时间到当前时间为止已离开的机器总数结果量pbclockwsndwqtlqnd修理台利用率机器在系统中平均逗留时间机器在队列中平均等待时间仿真停止时间evt1和evt2的最小值最早发生事件的时间值仿真变量clock仿真时钟当前时间累积统计量btletlqtvalsnd到当前时间为止修理台工作的总时间上一事件发生时间当前队列中机器数与时间区间的乘积机器等待的总时间时间区间当前时间与上一事件发生时间之差到当前时间为止已离开的机器在系统中逗留的总时间到当前时间为止已离开的机器总数结果量pbclockwsndwqtlqnd修理台利用率机器在系统中平均逗留时间机器在队列中平均等待时间到达事件的处理流程clockt到达事件发生clockt到达事件发生numr1
单服务台排队系统离散事件系统仿真实验

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

已用空间表
0 头
行号
可用空间表 头
行号
已用空间表 头
行号
可用空间表 头
行号
已用空间表 头
行号
可用空间表 头
2 2 10 4 3 3 15 5 1 0 1 25 4 尾 0 尾
10
5 3 15 2
15
0
1 25
25
5
0 4 40
40
0
Time=25,队伍中已有三个顾客
Time=40,有一个顾客到达
早出现在1963年兰德公司推出的SIMSCRIPT语言的早期版本中,他的基本思想是:
用事件的观点来分析真实系统,通过定义事件及每个事件发生引起系统状态的变化,按事件顺 序确定并执行每个事件发生时有关的逻辑关系
所有事件均放在事件表里。模型中有一个时间控制成分,该成分从事件表中选择具有最早发 生时间的事件,并将仿真钟修改到该事件发生的时间,再调用与该事件相应的事件处理模块, 该事件处理完后返回时间控制成分。这样,事件的选择与处理不断地进行,直到仿真终止的 条件或程序事件产生为止。
时间控制子程序
N
仿真结束? Y
调用输出子产生器
事件调度法程序结构
第三部分
算法介绍
算法介绍——参数
成分集合
成分相应于系统的实体,用于构造模型中的各个部分,
描述所有成分属性的变量
参数集合p={p1,p2,……,pr}
主动成分可以主动产生活动,被动成分只有在主动成分
While(TIME≤T∞)则执行 Case 根据事件类型 i=1 执行1类事件 i=2 执行2类事件 ………… i=m 执行m类事件 end case 取出具有T(s)=min{tα |α ∈CA}的事件记录 置仿真时间TIME=t(s)
事件调度法及仿真示例

1.4 面向事件的仿真模型
其总控程序完成如下工作: (1)时间扫描:确定下—事件发生时间并将仿真时钟推进到该时刻; (2)事件辨识:正确地辨识当前要发生的事件; (3)事件执行:正确地执行当前发生的事件。
Chapter 4 事件调度法及仿真示 例
1
主要内容
事件调度法 剧院系统逻辑流程图 剧院系统仿真程序设计
2
1.1 事件调度法
事件调度法最早出现在1963年兰德公司的 Markowtz等人推出的SIMSCRIPT语言的早期 版本中。它的基本思想是:
将事件例程作为仿真模型的基本模型单元,按照 事件发生的先后顺序不断执行相应的事件例程。
6 仿真结束
4
1.3事件调度法仿真模型设计
层次1一总控程序; 层次2一基本模型单元的处理程序 层次3一公共子程序:
仿真模型的最高层是它的总控程序,或执行机制。 仿真模型的总控程序负责安排下一事件的发生时 间,并确保在下一事件发生的时候完成正确的操 作。即第一层对第2层实施控制。对于专用的仿 真软件,总控程序已经隐含在程序的执行机制当 中。而使用C++,Fortran等通用语言,就要自己 编写一段仿真模型的总控程序。
每一事先可预知其发生时间的确定事件都带有一 个事件例程,用以处理事件发生后对实体状态所 产生的影响,并安排后续事件;条件事件不具有 事件例程,对它的处理隐含在某一确定事件的例 程中。
因此,事件调度法中听说的事件是指确定事 3
1.2 事件调度法的仿真策略
1 初始化
1)置仿真初始时钟T0,和结束时钟Tf; 2)置实体的初始状态; 3)置初始事件及发生时间Ts;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 因此,事件调度法中听说的事件是指确定事件。对实体流程法建立的 概念模型,一般可采用事件调度法建立其仿真模型
IE
3
1.2 事件调度法的仿真策略
IE
4
1.3事件调度法仿真模型设计 1.3事件调度法仿真模型设计
• 层次1一总控程序; • 层次2一基本模型单元的处理程序 • 层次3一公共子程序:
♪ 仿真模型的最高层是它的总控程序,或执行机制。仿真模型的总控程序 负责安排下一事件的发生时间,并确保在下一事件发生的时候完成正确 的操作。即第一层对第2层实施控制。对于专用的仿真软件,总控程序已 经隐含在程序的执行机制当中。而使用C++,Fortran等通用语言,就 要自己编写一段仿真模型的总控程序。 ♪ 仿真模型的第2层是基本模型单元。描述事件与实体状态之间的影响关系 及实体间的相互作用关系,是建模者所关心的主要内容。采用不同的仿 真策略时,仿真模型的第2层具有不同的构造,也就是说组成仿真模型的 基本单元各不相同,在事件调度法中,仿真模型的基本模型单元是事件 例程,因此其第2层由一系列事件例程组成。 ♪ 仿真模型的第3层是一组供第2层使用的公共子程序,用于生成随机变量 ,产生仿真结果报告,收集统计数据等用途。
IE 5
1.4 面向事件的仿真模型
• • • •
其总控程序完成如下工作: (1)时间扫描:确定下—事件发生时间并将仿真时钟推进到该时刻; (2)事件辨识:正确地辨识当前要发生的事件; (3)事件执行:正确地执行当前发生的事件。
♪ 面向事件仿真模型的主控程序使用事件表(Event List)来完成上述任务;事件表可以想象为 记录将来事件的”笔记”。在仿真运行中,事件的记录不断被列入或移出事件表。例如:在单 服务台排队服务系统中,顾客的到达可能会导致一个服务完毕事件的记录被列人事件表。每一 事件记录至少应由两部分组成:事件的发生时间、事件的标识,有时,事件记录中还会有参与 事件的实体名称等信息。
IE
11
E4 电话服务完毕事件例程
IE
12
模型实现过程示例
IE
13
模型实现过程示例
IE
14
模型实现过程示例
IE
15
模型实现过程示例
IE
16
Chapter 4 事件调度法及仿真示例
主要内容
• 事件调度法 • 剧院系统逻辑流程图 • 剧院系统仿真程序设计
IE
2
1.1 事件调度法
• 事件调度法最早出现在1963年兰德公司的Markowtz等人推出的 SIMSCRIPT语言的早期版本中。它的基本思想是:
♪ 将事件例程作为仿真模型的基本模型单元,按照事件发生的先后顺序不 断执行相应的事件例程。 ♪ 每一事先可预知其发生时间的确定事件都带有一个事件例程,用以处理 事件发生后对实体状态所产生的影响,并安排后续事件;条件事件不具 有事件例程,对它的处理隐含在某一确定事件的例程中。
• •
使用事件表后,面向事件仿真模型总控程序的算法结构如下: (1)时间扫描
♪ ♪ ♪ 扫描事件表,确定下一事件发生时间; 推进仿真时钟至下一事件发生时间; 从事件表中产生当前事件表CEL,CEL中包含了所有当前发生事件的事件记录;
•
(2)事件执行
♪ 依次安排CEL中的各个事件的发生,调用相应的事件例程。某一事件一旦发生,将其从事件表 中移出。 IE 6
7
2.0 剧院售票电话服务系统分析
• (1)该系统的事件:
♪ ♪ ♪ ♪ E1:购票顾客到达事件; E2:购票顾客服务完毕事件; E3:电话到达事件; E4:电话服务完毕事件;
IE
8
E1购票者到达事件例程 E1购票者到达事件例程
IE
9
E2 售票结束事件例程
IE
10
E3 电话到达事件例程