建模方法
用于指定系统的形式称为建模方法。
连续建模(有时称为过程建模)用于描述值流。
离散事件模型跟踪唯一实体。
离散速率模型共享连续事件建模和离散事件建模的某些方面。
在所有三种类型的仿真中,需要关注的是建模内容的颗粒度以及导致模型状态变化的原因。
连续建模
时间步长在仿真开始时是固定的,时间以相等的增量前进,值直接根据时间的变化而变化。在这种类型的模型中,值反映了建模系统在任何特定时间的状态,并且模拟时间从一个时间步长均匀地推进到下一个时间步长。
例如,在自动驾驶仪上飞行的飞机代表一个连续系统,因为它的状态(如位置或速度)随时间不断变化。连续仿真类似于恒定流体流通过管道。体积可能在每个时间步长增加或减少,但流量是连续的。
离散事件
系统在事件发生时更改状态,并且仅在这些事件发生时更改状态;时间的流逝对模型没有直接影响。与连续模型不同,模拟时间从一个事件推进到下一个事件,事件之间的时间不太可能相等。
组装零件的工厂是离散事件系统的一个很好的例子。各个实体(部件)根据事件(订单的接收或预期)进行组装。使用管道类比进行离散事件模拟,管道可能是空的,或者有任意数量的独立水桶通过它。不是连续的流动,而是以随机间隔从管道中流出的水桶。
离散速率
离散速率仿真是一种混合类型,结合了连续和离散事件建模的各个方面。像连续模型一样,它们模拟的是物品而不是物品的流动;与离散事件模型一样,每当事件发生时,它们都会重新计算速率和值。
使用管道类比进行离散速率仿真,有恒定的流体流通过管道。但是,当事件发生时,流速和路由可能会发生变化。
下表对这 3 种主要建模类型进行了比较和对比。
在某些工程分支中,术语离散用于描述具有周期性或恒定时间步长的系统。离散,当它指的是时间步长时,表示一个连续的模型;它与离散事件或离散速率的含义不同。ExtendSim 中的连续模型使用恒定的时间间隔进行步进;离散事件和离散速率模型则不然。
其他建模方法
尽管还有其他几种建模方法,但它们通常属于三个主要类别之一。例如,系统动力学和键合图是连续建模的子集,队列理论模型是离散事件建模的子集。
由于它们的特殊用途,下面描述了三种特定的建模方法——蒙特卡洛建模方法、基于State-Action状态决策建模方法和基于智能体的建模方法。
蒙特卡罗
蒙特卡罗模拟广泛用于解决统计学中的某些问题,它提供了一系列结果,而不是单个值。这种方法可以应用于任何 ExtendSim 模型,并在不确定性是一个因素的情况下使用。
蒙特卡罗建模使用随机数来改变输入参数以进行一系列计算。这些计算被执行多次,每次单独计算的结果都记录为观察结果。对各个观察结果进行统计总结,指出可能的结果和可能结果的范围。这不仅说明了在给定情况下可能发生的情况,而且说明了它发生的可能性。
通过在模型中合并随机元素并获取多个观测值,您可以在 ExtendSim 中构建蒙特卡罗仿真。有两种方法可以做到这一点:
- 经典的蒙特卡罗方法是取一个数学方程或一组方程,然后使该方程计算多次。在这种类型的模拟中,时间不是一个因素。整个模型运行完成,并在每个步骤中进行评估;每个后续步骤都会执行新的计算。
- 另一种蒙特卡罗方法(通常应用于离散事件模型)是将单个仿真运行划分为多个部分(批处理均值)或多次运行仿真(多运行分析)。蒙特卡洛是通过向模型添加随机性、多次运行并分析结果来合并的。此方法可以应用于任何连续、离散事件或离散速率模型。
基于智能体
使用基于智能体的建模,您通常事先不知道模型动力学;相反,您可以从模型中智能体的交互中获取该信息。
基于智能体的模型具有以下特征:
- 模型中各个实体的标识。
- 一组管理个体行为的规则。
- 本地实体相互影响行为的前提。
基于智能体的建模涉及与其指定位置内的其他智能体交互的单个实体(称为“智能体”)。所有智能体都有一套规则要遵循,但它们也具有一定程度的自主性,因此无法预定义模型动态。这是因为智能体可以具有智力、记忆力、社交互动、情境和空间意识以及学习能力。
基于State-Action状态决策
通过基于State-Action状态决策建模,系统被建模为离散状态的集合。状态/决策模型有时称为状态图,表示通过转换到另一个状态来响应事件的系统。该模型由一系列状态组成,其中每个状态都依赖于以前的状态。状态具有关联的决策和事件,该决策和事件将导致该状态更改为另一个状态。从一种状态到另一种状态的转换不是连续的;每个状态都可以转换任何其他状态。
有一些规则可以管理各模块之间的沟通和过渡:
- 所有模块都接受事件。
- 一个或多个状态可能会由于另一个状态或状态组的转换而创建事件。
- 可以将一组状态设置为有条件地转换,例如,仅当另一个状态或一组状态达到特定阶段时才更改。这些条件称为保护条件。
基于State-Action状态决策模型独立于三种建模方法(连续、离散事件或离散速率)中的任何一种。它们可用于从计算机程序到业务流程等许多领域的规范和验证。
建模方法比较
| 连续事件 | 离散事件 | 离散速率 |
ExtendSim 模块库 | Value模块库 Electronics模块库 | Item模块库 | Rate模块库 |
建模内容 | 过程 | 单个项目 | 东西的流动 |
例子 | 工艺: | 事物: | 基于速率的物体流: |
连续、离散事件和离散速率
使用此表作为指南,可帮助确定在对系统进行建模时要使用的方法。
| 连续事件 | 离散事件 | 离散速率 |
建模内容 | 流经模型的值。 | 不同的实体("items" 或 "things") | 大量同质物质的流动。或者不需要排序或分离的其他不同实体的流 |
是什么导致了状态的变化 | 时间的变化 | 一个事件 | 一个事件 |
时间步长 | 时间步长之间的间隔是恒定的。模型重新计算是连续的,并且与时间有关。 | 事件之间的间隔取决于事件发生的时间。模型仅在事件发生时重新计算。 | 事件之间的间隔取决于事件发生的时间。模型仅在事件发生时重新计算。 |
建模内容的特征 | 跟踪数据库中的特征或假设流是同构的。 | 使用属性,为项目分配唯一特征,然后可以在整个模型中跟踪。 | 跟踪数据库中的特征或假设流是同构的。 |
订购 | 先进先出 | 项目可以按 FIFO、LIFO、优先级、延时或自定义顺序移动。 | 先进先出 |
路由 | 需要通过在一个分支处关闭并在另一个分支处打开来显式路由值(值可以同时转到多个位置)。 | 默认情况下,项目会自动路由到第一个可用分支(项目一次只能位于一个位置)。 | 根据模型中定义的约束率和规则路由流(流可以划分为多个分支)。 |
统计细节 | 关于系统的一般统计数据:数量、效率等。 | 除了一般统计数据外,还可以单独跟踪每个项目:计数、利用率、周期时间。 | 除一般统计外,有效率、累计金额。 |
典型用途 | 科学(生物学、化学、物理学)、工程学(电子学、控制系统)、金融经济学、系统动力学。 | 制造业、服务业、商业运营、网络、系统工程。 | 粉末、流体和高速、大批量工艺的制造。化学过程,ATM交易。供应链。 |