O2DES

O2DESStudio

Untitled.o2des

Design Simulations Visually

O2DES Studio is a visual modeling platform for building discrete-event simulations. It allows users to define detailed event logic through Event Graphs, package the logic into reusable Standard Activities, and connect these activities using Entity Flow Diagrams to represent how entities move through a system. By combining event-level behavior with system-level process flows, O2DES Studio makes complex simulation models easier to design, understand, reuse, and execute.

Event Graph

Define event-level logic with events, schedules, timing rules, conditions, parameters, and state updates.

Activity Template

Package recurring event logic into reusable activity patterns that can be configured and shared across models.

Entity Flow Diagram

Connect generators, activities, and exits to show how entities move through the simulation system.

Drag blank canvas to pan Ctrl + wheel to zoom Ctrl + arrows to pan
100%

Event Graph Document

.o2des JSON representation

R=∅; S=∅; D=∅; F=∅; vm=P; vq=Q; Signal Start m (oᵐ) oᵐ Signal Finish n (oⁿ) oⁿ Request Start (l) Signal Start m (oᵐ) Signal Finish n (oⁿ) Attempt Start Start (l) Ready Finish (l) Attempt Finish Finish (l) Depart (l) Request Start (l) l lₖ t~T lₖ On Start (l) On Finish (l) Depart (l)
{
  "kind": "activityHandlerTemplate",
  "name": "ActivityHandler Base",
  "ports": {
    "input": ["request_start", "depart", "signal_start", "signal_finish"],
    "output": ["on_start", "on_finish"]
  },
  "states": ["R", "S", "D", "F"]
}
Vessel Shipment Berth Awaiting Instructions Sailing Queuing for Berth Being Served Waiting for Loading at Origin Port Waiting for Loading at Transshipment Port Being Transported Idle Berthing Handling Cargo Shipment
{
  "format": "o2des-studio.diagram",
  "kind": "efd",
  "nodes": [
    { "id": "vessel", "kind": "generator", "label": "Vessel" },
    { "id": "being_served", "kind": "activity", "label": "Being Served" },
    { "id": "shipment_exit", "kind": "terminate", "label": "Shipment" }
  ],
  "edges": [
    { "kind": "StartToStart", "from": "vessel", "to": "awaiting_instructions" },
    { "kind": "FinishToStart", "from": "being_transported", "to": "being_served" },
    { "kind": "FinishToFinish", "from": "handling_cargo", "to": "being_served" }
  ]
}