2.4.2.1. 事件调度法(Event Scheduling)
事件调度法基本思想是以事件的观点 来分析真实系统。以定义事件和其引起的系统状态量的变 化的方法,来按时间顺序确 定并执行不同事件发生的逻辑关系,进而得到事 件逻辑序列表。该策 略是一种事件发生已经固定下来的策略,必须预先设定下初始事件。它对于确定性较强(符合某种分布的随即变量)的离散事件系统仿 真较为方便。
2.4.2.2. 活动扫描法(Activity Scanning)
当事件的发生不仅与时 间有关还与一些其他条件有关时,事件调度法就策略就不好使用了,因为我们无 法预定每个事件的开始和终止时间,也就不能推演出事件发生的序列表。这时我们可 以采用活动扫描法。它的基本思想是:以活动的观点建立模型。系统中实体的活动 是否会发生是依据它 是否满足规定的条件而定。若条件满足就激活活动模块。而是否去判 断这些活动的条件是根据当 前系统时间是否等于时间控制模块中 每个活动发生时间而定。 2.4.2.3. 进程交互法(Process Interaction)
进程交互法是一种综合了事件调度法 和活动扫描法的仿真策略。它将模型的主动成分通过系统过程中所发生的事件和活 动以时间顺序组合,从而形成 进程表。一个程序调用了进程,只要满足条件,它将完成该进程 的全部活动。这种策略采用两张事件表,当前事件表CEL(Current Events List)和将来事件表(FEL:Future Events List)。在模型仿真运行前CEL为空,FEL是将来不同时刻发生事件的事件表。仿真运行开始后依据FEL中进程开始时间逐个将进程调入到CEL中去,在CEL中都是被调入的进程所包括的所有有资格执行的事件的记录,但事件是否会发 生还不能确定,要依据仿真系统当时的状态变量而定。直到FEL中所有进程被调用到CEL,CEL中所有进程执行完毕,仿真才结束。 2.5. 建立仿真模型
建立好系统模型别确定了仿真策略后我们就可以开始建立仿真模型了。仿真模型与系统模型不同。系统模型只需要用逻辑语言或流程图将现实情况描述出来,然而仿真模型是以计算机的语言来模拟实际情况的程序。仿真模型建立好以后一定能要在计算机上运行,并且模型中加入实验设计的成分。 2.5.1. 仿真模型主要成分
首先,我们要先了解仿真模型中包含成分都有哪些,一般的仿真模型程序所包含的主要成分有:
a.系统仿真钟:用来记录系统仿真时间的当前值。 b.系统变量:记录系统在不同时刻的状态的变量。
11
c.统计计数器:用来记录仿真系统一些实时性能的统计信息,已达到关联系统不同时刻状态的目的。
d.初始化子程序:用来在仿真开始前对系统进行初始化
e.时钟推进子程序:即将仿真时钟推进到下一个仿真时间点的子程序。根据不同的仿真策略,有不同的时钟推进方式。
f.事件逻辑序列表:以实际系统中发生事件的时序关系为模版,根据不同的仿真策略,以不同方式描述出仿真系统中各个事件的组织情况。它是系统事件控制的核心。
g.事件表:以仿真中事件发生的顺序,记录仿真中将会发生的事件。 h.调度子程序:以事件逻辑序列表中事件发生的逻辑条件为基础,根据当前系统中状态,调度不同事件插入到事件表。
i.事件子程序:每一个事件都会有一个事件子程序与之对应。通过子程序的处理、输出来描述该事件。来达到更新系统、实体状态和参数的作用。
j.统计报告子程序:用于记录仿真模型的输出数据
k.随机数产生子程序:用以产生随机数的子程序。这些随即数满足输入的数据分布。
l.主程序:用于将上述程序集合起来完成系统仿真的总体控制。 2.5.2. 仿真程序流程管理
确定了仿真程序中所包含的主要成分后我们还要确定仿真程序流程管理。 所谓仿真程序流程管理(即仿真事件的调度)是仿真建模的核心,他通过事件序列表和调度子程序来实现。调度管理方式包括对时间进程管理的方式和对同时事件管理方式。
2.5.2.1. 对时间进程的管理
时间进程的管理主要是对于仿真时钟推进方式的管理。所谓仿真时钟是指能够描述真实系统中事件发生的时间的时钟,它与计算机运行仿真模型的时间没有关系。在离散事件系统仿真中,典型的仿真时钟推进方式有两种:
a.面向时间间隔的时钟推进方式。这种推进方式指仿真时钟以足够小的时间间隔等距推进。每个时间间隔以后都会扫 描所有活动完成时刻,来检查这个间隔中是否有事件的发生,从而引起系统状态变量的改变。时间间隔选择的要求是每个时间间隔中基本上不会出现两个或两个 以上的离散事件。这种管理方式的优点是当仿真事件较多或事 件的变化具有周期性时,计算机运行仿真的速度较快。
b.面向事件的时钟推进方式。这种推进方式是指仿真时 钟按照事件表中将要的子事件的时刻,进行间隔不同的推进。时钟的时间由此事件发 生点直接跳跃
12
到下一个事件的发生点。没当开始一个事件,系统便会计算出事件对应的相关活动,来计算出该事件在未来将会触 发的所有事件的发生时刻,经过一系列活动处理后,得到一个发生事件的事件时间顺序表,按照该表把 仿真时钟推进到触发下一个事件的时间,以触发下一个事件。再对这个触发的新事件进行活动处理,进而修改事件时间顺序表。如此往复直到仿真结束为止。这种管理方式在事件较少、两事件间隔较长时比较适合采用。 2.5.2.2. 对同时事件的管理
同时事件管理是指在同一时间点上发生了多个事件时,程序对于这多个事件的处理方法。同时事件管理按管理事件类型的相同与否,可以分为两方面内容:
a.同类同时事件管理。当同时发生的事件隶属于同一类型的事件时,属于同类同时事件管理。我们预先定制好事件规则,使同类事件发生时其状态变量为以固定值。例如:本文课题的仿真模型在被调度时间点时,所有接受被调度信息的旅客都会触发调度事件,都会以相同的调度规则进行判断,符合调度规则的所有旅客的状态都会由等待状态变为行走状态。
b.混合同时事件管理。当同时发生的事件不属于同一类型的事件时,属于混合同时事件管理。通常有一步法采用或解结法。所谓一步法是指,一步直接形成混合事件发生后的系统状态。所谓解结法是指将几 个同时发生的事件分成多个单独事件,按照一个事件的逻辑序列对事件进行处理。通常一步法在构建 程序时比较困难,管理起来也较为复杂,而解结法构建的模型结构较简单。 2.5.3. 完成仿真模型
在完成了上述两步的工作以后,我们就可以真正的进行仿真建模了。这部分的主要工作可以概括为将系统模型中所描述的一些问题,用计算机语言表达出来。这是仿真模型建立的主要部分,依据不同课题的离散事件系统模型不同其情况也大不相同。
2.6. 仿真结果分析
结果分析部分的工作需要依据不同仿真模型具体情况,确定具体分析方法,没有通用性,因此在此不作过多阐述。
3. 北京西站售票大厅离散事件系统建模仿真
了解了离散事件系统仿真研究的一般步骤后,我们针对北京西站售票大厅这一离
13
散事件系统进行仿真研究。 3.1. 仿真目的
首先确立仿真研究目的:
3.1.1. 得到不同时段合理服务窗口数
开启窗口的个数永远是服务系统最为关心的问题。开启过多浪费资源,开启过少又不能即使满足顾客需要。基于这个问题,我们在模型中加入窗口动态开闭模块,当模型中队列人数状态的均值小于某值时,则关闭若干窗口,每次关闭窗口数不能多于3个。当当模型中队列人数状态的均值大于某值时,则开启若干窗口,开启窗口数为能够满足旅客需要的窗口数,但次开启数有上限。这样通过仿真模型的运行我们就能得到一个合理的针对不同时段的开启窗口数。 3.1.2. 验证规范行人间隔能够提高服务效果
在实地调研中我们发现,队长超过5后,旅客依据队列长度进行选队,然而这种选队方式并不能使旅客挑选出能够最快买到票对队列(我们先假定服务时间基本相同)。所以我们想到如果规范行人间隔是否能够显著减少那些旅客不该多等的时间,进而提高总体服务效果。我们通过对比规范行人间隔前和规范行人间隔后旅客等待时间的方差,来得出结论。
3.1.3. 优化调度间隔
由于咨询人员还需要进行咨询工作,一次调度间隔不能太短,但若调度间隔过长又会使左右两厅队列中人数差别较大。故需要用科学的方法选出合适的调度间隔。什么是合适的调度间隔呢?他需要满足两个条件: a. 每次调度观察行为后基本都发生调度
b. 在条件1符合的情况下调度间隔尽可能的小。 满足了这两个条件我们就得到了最佳的调度间隔。 3.2. 西站售票大厅离散事件系统建模
在大量的实地调研工作基础上,我们将西站售票大厅系统内各个实体的内在联系抽象出来,建立起系统模型 3.2.1. 建模思路
1. 确定系统中的实体及其属性
2. 分析各种实体的状态和活动,及其相互间的影响。
14
3. 确定引起实体状态变化的事件。
4. 分析各种事件发生时,实体状态的变化规律
5. 在一定的服务流程下,分析与队列实体有关的特殊操作(如换队等) 6. 以临时实体的流动为主线,画出仿真系统实体流程图
7. 给出模型参数的取值、参变量的计算方法及属性描述变量的取值方法。 8. 给出队列的排队规则。
3.2.2. 实体及其属性、状态、活动和相互影响
建立离散系统模型的
系统中的临时实体有:进入大厅的旅客、(我们把队列看作为一种特殊的实体)各窗口前的队列。
永久实体有:窗口内的服务人员,服务台的调度人员,窗口开闭调度(由模型的程序控制)。其中旅客、咨询台调度人员(由于系统中由咨询台服务人员执行两个大厅之间调度活动),售票大厅建筑实体。窗口开闭调度属于主动成分,窗口内服务人员属于被动成分。
我们把相似的实体归为一类,分析他们的属性、状态、活动、以及相互影响。 a.旅客类实体:
旅客类实体所具有的属性:到达人数时间,速度属性,所在位置,所属队列,队列中所属位置,换队视野,选队所属类型。
状态:行走状态,等待状态,接受服务状态。
活动:旅客行走,队列中等待,换队,被调度,买票。 对其他实体的影响有:影响队列状态,影响窗口服务人员状态。 b.队列类实体:
属性:行人间隔大小分布,队列编号 状态:队列人数、队列长度
对其他实体的影响:影响旅客选队活动,影响调度人员调度活动,影响窗口开闭调度人员活动。
c.窗口内服务人员 属性:服务速度。
状态:繁忙,空闲,停止服务。 活动:售票活动。
对其他实体的影响:影响旅客买票活动,旅客买票状态。 d.服务台调度人员: 属性:调度规则参数。 状态:咨询状态,调度状态。 对其他实体的影响:影响旅客状态。
15