对象事件建模和仿真(OEM&S)是一种通用的离散事件仿真范例,它将面向对象的建模与事件调度范例相结合。 在OEM中,系统的状态结构可以使用定义对象和事件类型的UML类图来建模,并且系统的动态建模可以用概念过程模型(可表达的,例如在BPMN中表示)和过程设计模型(可表达的,例如,在DPMN)。
代理/对象事件模拟(A / OES)是基础对象事件模拟(OES)的扩展,通过添加代理,感知,动作和通信的概念。
Sim4edu目前提供对象事件仿真JavaScript(之后简称OESjs)仿真框架,它是OES范例的JavaScript实现,或者更确切地说,是其语言OESL及其抽象模拟器 Omega-Epsilon-Sigma (ΩEΣ),它支持下一个事件时间进程,如所使用的 离散事件模拟和固定增量时间进展,用于基于NetLogo 的社会科学模拟以及连续状态变化模拟。 Sim4edu路线图上的下一个模拟器/框架实现了基于代理的离散事件模拟的A/OES范例,称为A-OESjs。
一个真实的>离散事件系统(或离散动态系统)包括:
- 某些类型的对象,其状态可能会被更改
- 在一组离散时间点的某个时间点发生的事件(某些类型)。
这意味着为了使用OES对离散事件系统进行建模,我们必须这样做
- 描述其对象类型和事件类型。
- 对于任何事件类型,指定负责对象状态更改和后续事件的因果规律由该类型的事件触发。 事件规则捕获因果规律。
OES语言(OESL)允许定义:
- 对象的形式的对象类型(面向对象的语言,如UML或JavaScript),
- 对象的形式的事件类型,以及它们的事件规则,在相应的事件类中以特殊的onEvent方法的形式。
OESL 是 ERSL历史继承者, 因为OES范式是作为早期研发项目 (实体 - 关系建模和模拟)。 同样, A/OESL 是AORSL的及争着, 因为A / OES范式已经发展成为早期研发项目 称为代理 - 对象 - 关系模拟。
在OES中,区分了两类模拟事件:
- 由于模拟模型外部的因素,周期性地发生外部事件。 它们的重现模式以递归函数的形式建模。
- 引发事件是由其他模拟事件引起的模拟事件。
一个 OES场景包括:
- 一个OES模型定义
对象类型
和事件类型
(带有事件规则),以及输出统计信息。 它可能包括空间模型定义。 - 模拟参数定义,如模拟的长度或随机数生成器的种子。
- 一个初始状态定义。
一个OES模型可以包括的定义:
- 对象类型
- 具有事件规则的事件类型,用于定义状态更改和后续事件的原因
- 一个时间模型:离散或连续时间
- 一个空间模型,例如网格空间或2D / 3D连续空间
- 统计变量
- 全局模型变量和/或函数
可以配置OES场景模拟
- 一个可视化定义(如2D空间模型的3D可视化)
- 一个用于制作模拟游戏的用户交互定义
- 各种用户界面(UI)定义,例如, 用于定义初始状态的UI或用于定义可视化形式的UI