MIDAS Cascade Propagation
The cascade propagation engine is the simulation core of MIDAS. It models how disruptions injected into one infrastructure system (IS) ripple through internal graph topology and cross-IS dependencies, turn by turn.
Cascade Propagation Example
Three Injection Modes
Effects propagate SEQUENTIALLY (turn-by-turn), NOT instantaneously.
This prevents systemic feedback runaway — a disruption at time
This prevents systemic feedback runaway — a disruption at time
t cannot circle back to amplify itself at time t.
Each turn computes a new state based on the previous turn's frozen snapshot. Feedback loops can still emerge across turns, but they are bounded
and observable, making the simulation deterministic and debuggable.
Indicators Computed per Turn
| Indicator | Full Name | Scope | Description |
|---|---|---|---|
IEG_NOEUDS |
Global Node Health Index | Per IS | Weighted average of all node operational_state values within an IS, normalized to [0, 100]. |
IEG_LIAISONS |
Global Edge Health Index | Per IS | Weighted average of all edge operational_state values within an IS, normalized to [0, 100]. |
IEG_IS |
Global IS Health Index | Per IS | Composite indicator combining IEG_NOEUDS and IEG_LIAISONS to give an overall IS health score. |
IEG_PNAIV |
Global PNAIV Index | Per IS | Reflects the IS contribution to the national resilience posture (PNAIV weighting). |
IEP_ISx→ISy |
Inter-IS Dependency Index | Per IS pair | Measures how much ISx contributes to ISy's operational capacity. Drops when ISx degrades. |
Celery Task Chain
Simulation Execution Pipeline
Each simulation turn is executed as a Celery task chain, ensuring reliable asynchronous processing with retry logic and progress tracking.
start_simulation— Validates scenario, initializes turn counter, snapshots the initial graph state, and enqueues the first turn.run_turn— Executes the propagation algorithm: internal propagation within each IS, then cross-IS dependency propagation. Produces updated node/edge states.compute_indicators— Calculates all IEG and IEP indicators from the post-turn graph state. Stores results per turn for time-series analysis.notify_simulation_service— Pushes turn results toaesop_simulationvia REST callback. Triggers WebSocket broadcast so the frontend updates in real time.
Stopping Conditions
When Does the Simulation Stop?
The propagation engine continues executing turns until one of the following conditions is met:
- Manual stop — An operator explicitly halts the simulation via the control panel or API endpoint.
- Max turns reached — The simulation has executed the maximum number of turns configured in the scenario (default: 50). This prevents runaway simulations.
- All indicators stabilized — Every
IEG_ISandIEPindicator has changed by less than a configurable epsilon threshold (default: 0.1%) for two consecutive turns, indicating convergence.