离散事件系统仿真策略

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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≤≤

αt 成分α的状态下一发生变化的时刻, 值域为}{),(+

∞0R

)S (D α 成分α在状态变量值为S 时的条件是否满足,

)S (D α =true ,表示满足,)S (D α =false 表示不满足。 TIME 模型仿真钟的值,值域为}{),(+

∞0R 。

事件调度法(Event Scheduling)

事件调度法基本思想:用事件的观点来分析真实系统,通过定义事件及每个事件发生引起系统状态的变化,按时间顺序确定并执行每个事件发生时有关的逻辑关系。

3

所有事件均放在事件表中。模型中设有一个时间控制成分,该成分从事件表中选择具有最早发生时间的事件,并将仿真钟修改到该事件发生的时间,再调用与该事件相应的事件处理模块,该事件处理完后返回时间控制成分。这样,事件的选择与处理不断地进行,直到仿真终止的条件或程序事件产生为止。 策略的非形式描述:

成分集合},,{C n A ααα 21=:主动成分集 },,{C m A ααα 21=,被动成分集

},,{C n m m P ααα 21++=

描述变量:描述每一主动成分A C ∈α的变量,α的状态αs 值域α

S ,

αs 下一变化时刻的时间变量αt

描述每一被动成分P C ∈α的变量,α的状态αs ,值域αS

(被动成分的状态变化只有在主动成分作用下才能发生,

其发生时间由主动成分来确定, 因而不需要时间变量。) 描述所有成分的属性的变量: 参数集合P={p 1, p 2, …, p r }

成分间的相互关系

4

每个主动成分A C ∈α的影响受主在α作用下其状态变化的描述, 称为事件处理流程; 各成分处理的优先级, 即同时发生时的处理顺序(解结规则)。

注意, 在事件调度法中, 一般主动成分也同时具有被动成分属性, 以便接受其它主动成分的作用。

事件调度法算法如下:

执行初始化操作, 包括: 置初始时间t=t 0, 结束时间t t e ∞= 事件表初始化, 置系统初始事件 成分状态初始化

)s ,s ),t ,s (),t ,s ((S n m m m αααααα 111+=

操作事件表, 包括 取出具有}C t min{)s (t A ∈=αα事件记录

修改事件表

推进仿真钟 TIME=t (s) While(TIME<=t ∞)则执行 Case 根据事件类型i

i =1执行第1类事件处理程序*

(*第i 类事件处理程序对成分的状态变化进行建模,而且要进行统计计算) i =2执行第2类事件处理程序 …

i =m 执行第m 类事件处理程序

2

endcase

取出具有}C t min{)s (t A ∈=αα事件记录**

(**若具有}C t min{)s (t A ∈=αα事件记录有若干个,则按解结规则处理)

置仿真时间 TIME=t (s)

endwhile***

(***该算法中未包括仿真结束后对结果的分析等内容)

活动扫描法(Activity Scanning)

事件调度法中仿真钟的推进仅仅依据}C t min{)s (t A ∈=αα准则,而该事件发生的任何条件的测试必须在该事件处理程序内部去处理。如果条件满足,该事件发生,否则,则推迟或取消该事件发生。

从本质上来说,事件调度法是一种“预定事件发生时间”的策略。这样,仿真模型中必须预定系统中下一最先发生的事件。该策略对于活动持续时间确定性较强(可以是服从某种分布的随机变量)的系统是比较方便的。

当事件的发生不仅与时间有关,而且与其它条件有关,即只有满足某些条件时才会发生。在这种情况下,事件调度法策略的弱点则表现出来了,由于这类系统的活动持续时间的不确定性,因而无法预定活动的开

2

始或终止时间。

活动扫描法的基本思想是:用活动的观点建模。系统由成分组成,而成分包含着活动,这些活动的发生必须满足某些条件;每一个主动成分均有一个相应的活动子例程;仿真过程中,活动的发生时间也做为条件之一,而且是较之其它条件具有更高的优先权。

设)S (D α表示成分α在系统状态S 下的条件是否满足()S (D α=true 则表示满足,)S (D α=false 则表示不满足),αt 表示成分α的状态下一发生变化的时刻,活动扫描法每一步要对系统中所有主动成分进行扫描,当:

(i) αt ≤仿真钟当前值TIME ,且(ii) )S (D α=true 时, 执行该成分α的活动子例程。 所有主动成分扫描一遍后,则又按同样顺序继续进行扫描,直到仿真结束。

显然,活动扫描法由于包括了对事件发生时间的扫描,因而它也具有事件调度法的功能。 实现措施:

相关文档
最新文档