离散事件

我们周围的世界似乎是连续的:我们观察到的绝大部分过程由连续的变化构成。然而,当我们分析那些过程时,很多情况下我们需要从连续特性中抽象出一些事件来,只对系统生命中的一些重要“瞬间”和“事件”加以考虑。用这些事件来接近真实世界过程的建模方式就叫做离散事件建模。Discrete Event Modeling

下面是一些例子:一个顾客到了一家商店;一辆卡车完成了卸载;一台运输机停止工作;新产品的推出;库存达到了一定程度等。在离散事件建模中,如一辆火车从A地到达B地的运动可以建模成出发和到达这两个事件,实际的运动就是这两者间的时间间隔。(但这并不是说你不能将火车动态化,事实上你可以用AnyLogic为逻辑上的离散模型制造出视觉上连续的动画)。

离散事件这个术语主要采用它的狭义定义,用来表示以过程为中心的建模,以过程为中心的建模建议将系统作为一系列连续的操作过程来分析:(到达、延迟、使用资源、分裂、结合等),将操作程序看作是在某些类型的实体(顾客、文件、零件、数据包、车辆、电话)上运行。实体是消极的,但它们的某些特性却可以影响处理方式(例如,通话类型、任务的复杂度),或随着实体在过程(累计等待时间或费用)中的流动而改变。以过程为中心的建模的复杂度为中等偏下:虽然每个对象作为实体单独进行建模,但建模者通常丢掉了很多“物理层”的细节,如精确的几何、加速、减速。以过程为中心的建模广泛运用于商业流程、制造、物流和保健领域。

在决定使用这种方法前,我们建议先(从项目目标的角度)验证系统确实被描述为(可能是分层的)一系列的操作秩序。同时我们还要清楚其他方法,例如,如果描述单个实体的行为比试图建立一个完整的工作流程更简单,基于主体建模是最好的选择。同样的,如果你对总体交互而非个体交互感兴趣,就应采用系统动力学建模。AnyLogic支持全部的三种建模方法,因此,只需一种工具,你就可以在理论层进行试验或者是对具体的方法进行试验。

AnyLogic Process Modeling Library

以过程为中心建模使用的AnyLogic主要工具是Process Modeling Library。Process Modeling Library集合了所有定义工作流程的对象如原始码、接受器、延时、服务、输出选择等以及相关的资源。所有对象都可以自定义:它们的参数可以进行动态改变,行动可能取决于实体的属性等。对象有输入/输出扩展点,你就能定义需要在实体上执行的行动。基于Process Modeling Library的模型组成部分能自然地和系统动力学基于主体模型组成部分或AnyLogic的要素(如事件,状态图)相互操作。

如果你所建模的系统很复杂,可以将其分解为几个部分,然后在不同的活动对象里进行分别建模。你可以定义子进程的起始和结束点,将它们作为模型组件的界面进行展示,或者隐藏子进程的执行过程。在最高级模型中,你将对那些高层组件进行实例化,并将它们联系在一起。由于每个活动对象都可以进行多次实例化和参数化,这为模型内和跨模型组件的重复使用提供了一个很好的基础。

Process Modeling Library和AnyLogic的显示/动画框架能密切配合,能使您开发非常复杂的过程动画。动画可以分为不同的层级,提供多种视角,如关于高层可能只显示关键的总指标,但你可以转换到一些子过程,那里有详细的子过程动画。

基于网络的建模

Process Modeling Library还包含一系列特别为“空间感知”所设计的对象,这些对象在某类物理空间中发生并涉及实体和资源的运动。对象集很大程度上简化了建模,被称为网络建模。使用这项技术,你需要定义网络布局(通过绘制作为背景的设施地图的AnyLogic形状)、资源地和流程本身。流程定义可能由特定网络对象(“移向定点”或“附加资源单位”)和常规Process Modeling Library对象结合而成。实体和资源会自动活动,沿着网络成分移动或待在节点,并能和常规动画交错。

Process Flow in AnyLogic

参见网络模型库的AnyLogic离散时间模型程序。