This repository contains a system designed for DEVS (Discrete Event System Specification) modeling and simulation. It separates the execution engine (C++) from the orchestration and analysis layer (Python).
The entire development environment is deterministic and managed via Nix.
-
Initialize the environment: Load the Nix shell. This will download the exact version of the C++ compiler, Python,
uv, and fetch the Cadmium framework directly into the Nix store.direnv allow # Or manually: nix develop -
Build the C++ Simulation Engine: The simulator must be compiled before running any experiments.
cd simulator
mkdir build && cd build
cmake ..
make -j$(nproc)
- Run an Experiment: Experiments are managed by Python. The orchestrator reads the configuration, creates isolated output directories with timestamps, and triggers the C++ binary.
cd orchestration
uv run python -m belbin_orchestration.experiments --scenario scenario_base
simulator/: Contains the C++ DEVS models and theCMakeLists.txtbuild configuration. It executes blindly based on CLI arguments.orchestration/: The Python ecosystem managing dependencies viauv. It handles data pipelines, experiment dispatching, and output analysis.experiments/: The physical boundary between static inputs and dynamic outputs. Each scenario directory holds a version-controlledconfig.jsonand a localoutputs/folder (ignored by Git) for storing simulation results.datasets/: Read-only directory for empirical data used as references or initial states.