A graphical tool for modelling, simulation, validation, and experimentation of Discrete-Event System Specification (DEVS) models.
https://github.com/murf85/DEVS_Graph_GUI_DataTypes Improvements on: https://github.com/ucheeaa/DEVS-Graph-GUI
- 1. Overview
- 2. Main Features
- 3. System Requirements
- 4. Installation and Setup
- 5. Running the System
- 6. GUI Overview
- 7. Standard Modelling Workflow
- 8. Experiment Workflow
- 9. Oracle Validation
- 10. File Operations
- 11. Interaction Features
- 12. Help
- 13. Troubleshooting
The DEVS-Graph GUI is a low-code modelling environment for DEVS systems.
- Create atomic models visually
- Create coupled models
- Define state and behavior
- Run simulations
- Design experiments (MUT + EF)
- Validate outputs using an oracle
All DEVSMap generation, C++ generation, compilation, and execution occur in the backend automatically. Users do NOT manually trigger these steps.
A brief walkthrough of the DEVS-Graph GUI demonstrating modelling, simulation, validation, and experiment workflows:
- Drag-and-drop modelling interface
- Atomic model creation
- Coupled model creation
- State variable definition
- Internal / External transitions
- Output & time advance functions
- Simulation execution
- Experiment design (MUT + EF)
- Oracle-based validation
- XML save/load support
- PNG export
- Output logs and CSV view
Ensure the following are installed:
- Git
- Python 3.9+
- Modern browser (Chrome recommended)
- g++ (C++ compiler)
Install dependencies:
pip install flask flask-cors
git clone https://github.com/murf85/DEVS_Graph_GUI_DataTypes.git
cd DEVS_Graph_GUI_DataTypes
Do NOT work on main:
git checkout -b your_name_branch
Run:
python start_all.py
This starts:
- Backend server
- Parser
- Cadmium execution pipeline
- Oracle validation server
Open in browser:
http://localhost:5500/index.html
- Model palette
- Build and connect models
- Properties tab (model configuration)
- Experiment tab (experiment setup)
- Logs
- CSV outputs
- Validation results
-
Drag atomic model
-
Configure:
- Model name
- Ports
- State variables
- Transitions
- Output
- Time advance
-
Create coupled model
-
Define couplings (IC, EIC, EOC)
-
Run simulation
Backend automatically:
- Generates DEVSMap
- Generates C++
- Compiles and executes
- View output in bottom panel
- Ensure models exist on canvas
- Open Experiment tab
- Select MUT (Model Under Test)
- Select EF (Experimental Frame)
- Configure initial states
- Define CPIC / POCC couplings
- Run experiment
- View results
The oracle validation compares simulation output against expected states defined by the user.
The system must already be running:
python start_all.py
Before running validation, you must define expected outputs in:
DEVS-Graph/Oracle/expected_DEVS_states.csv
In this file, you must manually add your expected states.
Follow the exact format used in the existing rows inside the file.
- Run a simulation or experiment
- Navigate to:
DEVS-Graph/Oracle/expected_DEVS_states.csv - Add expected states using the same structure as existing examples
- Save the file
- In the GUI, open the validation section
- Click Run Validation
- PASS → Output matches expected states
- FAIL → Output deviates from expected states
- NOT TESTED → Validation did not execute correctly
- Validation depends entirely on correctly formatted expected states
- Always follow the structure of existing examples in the CSV file
- Common mistakes:
- Missing rows or columns
- Incorrect formatting
- Mismatched values with simulation output
- Start by copying an existing example row and modifying it
- Keep naming consistent with your model definitions
- If validation fails unexpectedly, double-check the CSV formatting first
- New graph
- Save XML
- Load XML
- Export PNG
Toolbar:
- Copy / Paste
- Undo / Redo
- Delete
- Zoom
Right-click:
- Model actions
Inside GUI → Help button:
- About
- User Manual (Google Docs version)
ModuleNotFoundError: No module named 'flask_cors'
Fix:
pip install flask flask-cors
- Ensure model name is filled
- Use different model name and ID
- Fill all parameters
- Verify couplings
- Ensure simulation time is numeric
- Use descriptive names
- Follow example models (e.g., counter / step counter)
- Check bottom output panel after running