Simulator Module

The simulator module provides the high-performance infrastructure simulation engine with model dependency injection and rich displays.

Main Simulator

Fast vectorized infrastructure simulator with model dependencies and rich displays.

This module provides a high-performance simulator for infrastructure maintenance systems with support for:

  • Model dependency injection via ModelContext

  • Rich terminal status displays

  • Vectorized operations with Numba acceleration

  • Comprehensive performance tracking and metrics

  • Flexible observability modes (full, partial, noisy)

  • Batch policy evaluation capabilities

Example

Basic usage with model dependencies:

from infralib.models.dynamics import MarkovDynamics
from infralib.models.cost import SimpleCost
from infralib.models.budget import FixedBudget
from infralib.simulator import Simulator
import numpy as np

# Setup models
dynamics = MarkovDynamics(n_states=10)
cost = SimpleCost()
budget = FixedBudget(initial_budget=10000)

# Create simulator with rich displays
sim = Simulator(dynamics, cost, budget, rich_display=True)
sim.reset(n_components=5)

# Run simulation step
actions = np.array([0, 1, 2, 0, 1])
states, info = sim.step(actions)

print(f"Total cost: {info['total_cost']:.2f}")
print(f"Failures: {info['failures']}")

Classes

Simulator : Main infrastructure simulation class with model dependencies

Functions

_fast_budget_check : Numba-accelerated budget constraint enforcement

class infralib.simulator.Simulator(dynamics: DynamicsModel, cost: CostModel, budget: BudgetModel, hierarchy: HierarchyModel | None = None, metadata: MetadataModel | None = None, rich_display: bool = False, seed: int | None = None)[source]

Bases: object

Fast vectorized infrastructure simulator with hierarchy and metadata support.

__init__(dynamics: DynamicsModel, cost: CostModel, budget: BudgetModel, hierarchy: HierarchyModel | None = None, metadata: MetadataModel | None = None, rich_display: bool = False, seed: int | None = None)[source]
reset(n_components: int, initial_states: ndarray | None = None) ndarray[source]

Reset simulator state.

step(actions: ndarray, display_status: bool = False) tuple[ndarray, dict[str, Any]][source]

Execute one simulation step with budget constraints.

get_observation(observability: str = 'full') ndarray[source]

Get observation based on observability setting.

batch_rollout(policy_fn, horizon: int, n_rollouts: int = 1) dict[str, ndarray][source]

Run multiple rollouts in parallel for Monte Carlo evaluation.

get_performance_metrics() dict[str, Any][source]

Get comprehensive performance metrics from simulation history.

create_status_display(info: dict[str, Any] | None = None) tuple[Panel, Progress][source]

Create rich status display components.

Parameters:

info (dict, optional) – Information from last simulation step

Returns:

Rich panel with status table and progress bar for budget usage

Return type:

tuple[Panel, Progress]

clear_terminal()[source]

Clear the terminal screen in a cross-platform way.

display_status(info: dict[str, Any] | None = None)[source]

Display the current simulation status using rich formatting.

Parameters:

info (dict, optional) – Information from the last simulation step