Source code for relsad.simulation.monte_carlo.history

import copy
import os

from relsad.network.systems import PowerSystem
from relsad.results.storage import save_monte_carlo_history_from_dict


def save_network_monte_carlo_history(
    power_system: PowerSystem,
    save_dir: str,
    save_dict: dict,
):
    """
    Saves the history of the energy.shedding in the power system

    Parameters
    ----------
    power_system : PowerSystem
        A power system element
    save_dir : str
        The saving path
    save_dict : dict
        Dictionary with simulation results

    Returns
    ----------
    None

    """
    if not os.path.isdir(save_dir):
        os.makedirs(save_dir)
    network_state_list = list(save_dict[power_system.name].keys())
    power_system_save_dir = os.path.join(save_dir, power_system.name)
    for state_var in network_state_list:
        save_monte_carlo_history_from_dict(
            save_dict, [power_system], state_var, power_system_save_dir
        )
    for network in power_system.child_network_list:
        network_save_dir = os.path.join(save_dir, network.name)
        for state_var in network_state_list:
            save_monte_carlo_history_from_dict(
                save_dict, [network], state_var, network_save_dir
            )
    for bus in power_system.buses:
        bus_save_dir = os.path.join(save_dir, bus.name)
        bus_state_list = list(save_dict[bus.name].keys())
        for state_var in bus_state_list:
            save_monte_carlo_history_from_dict(
                save_dict, [bus], state_var, bus_save_dir
            )
        if bus.ev_park is not None:
            ev_park_save_dir = os.path.join(bus_save_dir, bus.ev_park.name)
            ev_park_state_list = list(save_dict[bus.ev_park.name].keys())
            for state_var in ev_park_state_list:
                save_monte_carlo_history_from_dict(
                    save_dict, [bus.ev_park], state_var, ev_park_save_dir
                )


[docs]def merge_monte_carlo_history( power_system: PowerSystem, iteration_dicts: list, ): """ Merges the Monte Carlo history from all the iterations in the simulation Parameters ---------- power_system : PowerSystem A power system element iteration_dicts : list List containing information about all the iterations Returns ---------- save_dict : dict Dictionary with simulation results """ save_dict = copy.deepcopy(iteration_dicts[0]) for it_dict in iteration_dicts: curr_it_dict = it_dict[power_system.name] network_state_list = list(curr_it_dict.keys()) it = list(curr_it_dict[network_state_list[0]].keys())[0] for state_var in network_state_list: save_dict[power_system.name][state_var][it] = ( curr_it_dict[state_var][it] ) save_dict = merge_monte_carlo_child_network_history( power_system, it_dict, it, save_dict ) save_dict = merge_monte_carlo_comp_history( power_system, it_dict, it, save_dict ) return save_dict
[docs]def merge_monte_carlo_child_network_history( power_system: PowerSystem, it_dict: dict, it: int, save_dict: dict, ): """ Merges the lists used for history variables from the Monte Carlo simulation Parameters ---------- power_system : PowerSystem A power system element it_dict : dict Dictionary with iteration results it : int Iteration number save_dict : dict Dictionary with simulation results Returns ---------- save_dict : dict Dictionary with simulation results """ for network in power_system.child_network_list: curr_it_dict = it_dict[network.name] network_state_list = list(curr_it_dict.keys()) for state_var in network_state_list: save_dict[network.name][state_var][it] = ( curr_it_dict[state_var][it] ) return save_dict
[docs]def merge_monte_carlo_comp_history( power_system: PowerSystem, it_dict: dict, it: int, save_dict: dict, ): """ Merges the lists used for component history variables from the Monte Carlo simulation Parameters ---------- power_system : PowerSystem A power system element it_dict : dict Dictionary with iteration results it : int The iteration number save_dict : dict Dictionary with simulation results Returns ---------- save_dict : dict Dictionary with simulation results """ for bus in power_system.buses: curr_bus_it_dict = it_dict[bus.name] bus_state_list = list(curr_bus_it_dict.keys()) for state_var in bus_state_list: save_dict[bus.name][state_var][it] = ( curr_bus_it_dict[state_var][it] ) if bus.ev_park is not None: curr_ev_park_it_dict = it_dict[bus.ev_park.name] ev_park_state_list = list(curr_ev_park_it_dict.keys()) for state_var in ev_park_state_list: save_dict[bus.ev_park.name][state_var][it] = ( curr_ev_park_it_dict[state_var][it] ) return save_dict