事件调度法及仿真示例
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 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 电话到达事件例程