Object Event Modeling and Simulation

Object Event Modeling and Simulation (OEM&S) is a general Discrete Event Simulation (DES) paradigm combining object-oriented modeling and event-based simulation (with event scheduling).

An OES design model, providing a computationally complete description of a DES model, consists of (1) an information design model and (2) a process design model. The information design model specifies the types of objects and events that occur in the process design model, while the process design model defines causal regularities involving events as causes and object state changes as well as follow-up events as effects.

The preferred approach in OEM&S is to use UML Class Diagrams for making information models and extended Event Graphs (or DPMN) for making process models, and use an OES framework, like the JavaScript-based simulation framework OESjs or the Python-based framework OESpy, for implementing them.

Like Petri Nets and DEVS, OES has a formal semantics. But while Petrie Nets and DEVS are purely computational formalisms without an ontological foundation, OES is based on the ontological categories of objects, events and causal regularities.

Agent/Object Event Modeling and Simulation (A/OEM&S), is an extension of basic OEM&S by adding the concepts of agents, perception, action and communication.

Sim4edu provides the OESjs simulation framework, which is a JavaScript implementation of the OES paradigm, or, more precisely, of its language OESL and its abstract simulator Omega-Epsilon-Sigma (ΩΕΣ) that supports both next-event time progression, as used in discrete event simulation, and fixed-increment time progression, as used in NetLogo-based social science simulations as well as in continuous state change simulations. A forthcoming version of the OESjs framework will implement the A/OES paradigm for agent-based discrete event simulation.

While the OESjs framework is quite a large piece of software, mainly due to its advanced user interfaces, there are also Object Event Core Simulators, the code of which is available (in various programming languages) as a starting point or reference for building your own simulator (possibly in another language).

A real-world discrete event system (or discrete dynamic system) consists of:

This means that in order to model a discrete event system using OES, we have to

  1. Describe its object types and event types.
  2. Specify, for any event type, which causal regularity, responsible for state changes of objects and follow-up events, is triggered by events of that type. Causal regularities are captured by event rules.

The OES language (OESL) allows defining:

  1. Object types in the form of classes (of an object-oriented language like UML or JavaScript),
  2. Event types in the form of classes, and their event rules in the form of a special onEvent method in the corresponding event class.

OESL is a historic successor of ERSL, since the OES paradigm has been developed as a continuation of an earlier R&D project called Entity-Relationship Modeling and Simulation. Likewise, A/OESL is a historic successor of AORSL, since the A/OES paradigm has been developed as a continuation of an earlier R&D project called Agent-Object-Relationship Simulation.

In OES, two categories of simulated events are distinguished:

  1. Exogenous events occur periodically, due to factors that are external to the simulation model. Their re-occurrence pattern is modeled in the form of a recurrence function.
  2. Caused events are simulated events that are caused by other simulated events.

An OES scenario consists of:

An OES model may include definitions of

An OES scenario simulation can be configured with