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:
objectFast 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.