Progress Example Simulation (Mult Proc) Module¶
- class progress.example_simulation_mult_proc.ProgressMultiProcess¶
Bases:
object
Handles multi-process execution (via
mpi4py
) of a Mixed Time Sequential Monte Carlo Simulation (MCS) for reliability analysis.This class sets up MPI parameters and provides methods to perform system reliability simulations. It leverages parallel processing to distribute Monte Carlo samples across multiple ranks.
- MCS(input_file)¶
Performs a Mixed Time Sequential Monte Carlo Simulation for system reliability assessment.
High-level Steps:
1. Read Configuration: Loads user settings (file paths, simulation hours, etc.) from
input_file
.2. Data Import & Pre-Processing: - Reads system data (generators, branches, buses, loads, storage) using
RASystemData
. - Prepares reliability- and capacity-related variables (e.g., MTTF, MTTR, capacities). - Conditionally loads and processes wind data (ifwind_directory
is defined). - Conditionally loads and processes solar data (ifsolar_directory
is defined). - Builds matrices required for optimization usingRAMatrices
.3. Monte Carlo Loop: Repeats the following for each sample: - Initializes each component in an up state or random initial state (e.g., wind class). - Iterates through the specified simulation hours (
sim_hours
):Updates next states (up/down) via random draws from reliability transition rates.
Adjusts ESS states of charge to account for potential failures.
Retrieves wind and solar power outputs (if configured).
Performs an optimization-based dispatch (zonal or copper-sheet) to meet load while minimizing generation costs and curtailment.
Tracks Loss of Load (LOL) occurrences for reliability indices.
4. Convergence Checks: Tracks reliability indices such as LOLP and EUE, and evaluates partial convergence at each sample (using rank 0 to aggregate data across processes).
5. Final Aggregation: - Uses MPI to combine results across ranks. - Returns final reliability indices, record arrays, and references for plotting.
- Parameters:
input_file (str) – Path to the YAML configuration file containing simulation parameters.
- Returns:
A tuple containing:
rank (int): Rank of the current MPI process.
SOC_rec (numpy.ndarray): State of charge records for storage units across simulation.
curt_rec (numpy.ndarray): Load curtailment records over simulation hours.
renewable_rec (dict): Recorded wind & solar power generation for visualization.
bus_name (list[str]): List of bus names from system data.
essname (list[str]): List of storage device names.
main_folder (str): Path to the folder containing the running script.
sim_hours (int): Number of hours simulated.
mLOLP_rec (numpy.ndarray): Running average of LOLP values across samples.
COV_rec (numpy.ndarray): Coefficient of Variation array for checking convergence.
samples (int): Number of Monte Carlo samples.
size (int): Total number of MPI processes.
- Return type:
tuple
- Raises:
FileNotFoundError – If input files (configuration, CSV, Excel) cannot be located.
ValueError – If any required key/parameter is missing or invalid in the config.
RuntimeError – If optimization constraints fail or cannot converge.