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 (if wind_directory is defined). - Conditionally loads and processes solar data (if solar_directory is defined). - Builds matrices required for optimization using RAMatrices.

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.