VeraGridEngine.Simulations.Reliability packageο
Submodulesο
VeraGridEngine.Simulations.Reliability.blackout_driver moduleο
- class VeraGridEngine.Simulations.Reliability.blackout_driver.CascadingDriver(grid: MultiCircuit, options: PowerFlowOptions, triggering_idx=None, max_additional_islands=1, cascade_type_: CascadeType = LHS, n_lhs_samples_=1000)[source]ο
Bases:
DriverTemplate- cascade_typeο
- current_stepο
- get_failed_idx()[source]ο
Return the array of all failed Branches Returns:
array of all failed Branches
- max_additional_islandsο
- n_lhs_samplesο
- name = 'Cascading'ο
- optionsο
- static remove_elements(circuit: MultiCircuit, loading_vector, idx=None)[source]ο
Remove Branches based on loading Returns:
Nothing
- static remove_probability_based(numerical_circuit: NumericalCircuit, results: StochasticPowerFlowResults, max_val, min_prob)[source]ο
Remove Branches based on their chance of overload :param numerical_circuit: :param results: :param max_val: :param min_prob: :return: list of indices actually removed
- tpe = 'Cascade'ο
- triggering_idxο
- class VeraGridEngine.Simulations.Reliability.blackout_driver.CascadingReportElement(removed_idx, pf_results, criteria)[source]ο
Bases:
object- criteriaο
- pf_resultsο
- removed_idxο
VeraGridEngine.Simulations.Reliability.reliability moduleο
- VeraGridEngine.Simulations.Reliability.reliability.compose_states(mttf: float, mttr: float, horizon: int, initially_working: bool = True)[source]ο
Compose random states vector (on -> off -> on -> β¦) :param mttf: Mean time to failure (h) :param mttr: Mean time to recovery (h) :param horizon: Time horizon (h) :param initially_working: is the component initially working? :return: Vector of states (size horizon) [1: on, 0: off]
- VeraGridEngine.Simulations.Reliability.reliability.compute_loss_of_load_because_of_lack_of_generation(gen_pmax: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], load: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], dt: ndarray[tuple[Any, ...], dtype[float64]])[source]ο
Compute the loss of load because of lack of generation :param gen_pmax: Matrix of available generation (MW) :param load: Matrix of load (MW) :param dt: Time step array (h) :return: loss of load values in MWh
- VeraGridEngine.Simulations.Reliability.reliability.find_different_states(mat1: ndarray[tuple[Any, ...], dtype[int64]], mat2: ndarray[tuple[Any, ...], dtype[int64]])[source]ο
Find different states :param mat1: Matrix 1 of states :param mat2: Matrix 1 of states :return: Array of states
- VeraGridEngine.Simulations.Reliability.reliability.find_time_blocks(horizon: int, all_actives: ndarray[tuple[Any, ...], dtype[int64]])[source]ο
Get the contigous time blocks of failure :param horizon: number of time steps (ntime) :param all_actives: matrix of active states (ntime, n_device) :return:
- VeraGridEngine.Simulations.Reliability.reliability.generate_states_matrix(mttf: ndarray[tuple[Any, ...], dtype[float64]], mttr: ndarray[tuple[Any, ...], dtype[float64]], horizon: int, initially_working: bool = True)[source]ο
Generate random states vector (on -> off -> on -> β¦) :param mttf: Vector of Mean time to failure (h) :param mttr: Vector of Mean time to recovery (h) :param horizon: Time horizon (h) :param initially_working: is the component initially working? :return: matrix of states (size horizon, size mttf) [1: on, 0: off]
- VeraGridEngine.Simulations.Reliability.reliability.reliability_grid_simulation(nc, grid, n_sim: int, branch_mttf: ndarray[tuple[Any, ...], dtype[float64]], branch_mttr: ndarray[tuple[Any, ...], dtype[float64]], dt: ndarray[tuple[Any, ...], dtype[float64]], tol=1e-06)[source]ο
- Parameters:
n_sim
gen_mttf
gen_mttr
dt
tol
- Returns:
- VeraGridEngine.Simulations.Reliability.reliability.reliability_simulation(n_sim: int, load_profile: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], gen_profile: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], gen_p_max: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], gen_p_min: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], gen_dispatchable: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], gen_active: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], gen_cost: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], gen_mttf: ndarray[tuple[Any, ...], dtype[float64]], gen_mttr: ndarray[tuple[Any, ...], dtype[float64]], batt_active: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], batt_p_max_charge: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], batt_p_max_discharge: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], batt_energy_max: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], batt_eff_charge: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], batt_eff_discharge: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], batt_cost: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]], batt_soc0: ndarray[tuple[Any, ...], dtype[float64]], batt_soc_min: ndarray[tuple[Any, ...], dtype[float64]], dt: ndarray[tuple[Any, ...], dtype[float64]], force_charge_if_low: bool = True, tol=1e-06)[source]ο
- Parameters:
n_sim
load_profile
gen_profile
gen_p_max
gen_p_min
gen_dispatchable
gen_active
gen_cost
gen_mttf
gen_mttr
batt_active
batt_p_max_charge
batt_p_max_discharge
batt_energy_max
batt_eff_charge
batt_eff_discharge
batt_soc0
batt_soc_min
batt_cost
dt
force_charge_if_low
tol
- Returns:
VeraGridEngine.Simulations.Reliability.reliability2 moduleο
- VeraGridEngine.Simulations.Reliability.reliability2.compute_transition_probabilities(mttf: ndarray[tuple[Any, ...], dtype[float64]], mttr: ndarray[tuple[Any, ...], dtype[float64]], forced_mttf: None | float, forced_mttr: None | float) Tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]][source]ο
Compute the transition probabilities :param mttf: Vector of mean-time-to-failures :param mttr: Vector of mean-time-to-recoveries :param forced_mttf: forced mttf value (used if not None) :param forced_mttr: forced mttr value (used if not None) :return: Probability of being up, Probability of being down
- VeraGridEngine.Simulations.Reliability.reliability2.get_failure_time(mttf)[source]ο
Get an array of possible failure times :param mttf: mean time to failure
- VeraGridEngine.Simulations.Reliability.reliability2.get_reliability_events(horizon, mttf, mttr, tpe: DeviceType)[source]ο
Get random fail-repair events until a given time horizon in hours
- Parameters:
horizon β maximum horizon in hours
mttf β Mean time to failure (h)
mttr β Mean time to repair (h)
tpe β device type (DeviceType)
- Returns:
list of events, each event tuple has: (time in hours, element index, activation state (True/False))
- VeraGridEngine.Simulations.Reliability.reliability2.get_reliability_scenario(nc: NumericalCircuit, horizon=10000)[source]ο
Get reliability events :param nc: numerical circuit instance :param horizon: time horizon in hours :return: dictionary of events, each event tuple has: (time in hours, DataType, element index, activation state (True/False))
- VeraGridEngine.Simulations.Reliability.reliability2.get_repair_time(mttr)[source]ο
Get an array of possible repair times :param mttr: mean time to recovery
- VeraGridEngine.Simulations.Reliability.reliability2.get_transition_probabilities(lbda: ndarray[tuple[Any, ...], dtype[float64]], mu: ndarray[tuple[Any, ...], dtype[float64]]) Tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]][source]ο
Probability of the component being unavailable See: Power distribution system reliability p.67 :param lbda: failure rate ( 1 / mttf) :param mu: repair rate (1 / mttr) :return: availability probability, unavailability probability
- VeraGridEngine.Simulations.Reliability.reliability2.run_events(nc: NumericalCircuit, events_list: list)[source]ο
- Parameters:
nc
events_list
VeraGridEngine.Simulations.Reliability.reliability_driver moduleο
- class VeraGridEngine.Simulations.Reliability.reliability_driver.ReliabilityStudyDriver(grid: MultiCircuit, pf_options: PowerFlowOptions, reliability_mode: ReliabilityMode = Generation Adequacy, time_indices=None, n_sim: int = 1000000)[source]ο
Bases:
DriverTemplate- greedy_dispatch_inputsο
- n_simο
- name = 'Reliability analysis'ο
- pf_optionsο
- progress_callback(lmbda: float)[source]ο
Send progress report :param lmbda: lambda value :return: None
- reliability_modeο
- time_indicesο
- tpe = 'Reliability'ο
- VeraGridEngine.Simulations.Reliability.reliability_driver.count_device_incidences(active_states: ndarray[tuple[Any, ...], dtype[float64]] | ndarray[tuple[int, int], dtype[float64]]) int[source]ο
Count device incidence starts in an active-state matrix.
An incidence is counted when one device changes from active to inactive. If one device is already inactive at
t=0, that also counts as one incidence. The matrix is organized as(time, device).- Parameters:
active_states β Boolean matrix of shape (time, device)
- Returns:
Number of incidences.
- VeraGridEngine.Simulations.Reliability.reliability_driver.get_gen_pmax(nt: int, k: int, Snom: float, P_array: ndarray[tuple[Any, ...], dtype[float64]], active_array: ndarray[tuple[Any, ...], dtype[bool]], dispatchable_array: ndarray[tuple[Any, ...], dtype[bool]])[source]ο
Get a generator array of Pmax given the active and dispatchable conditions :param nt: Number of time steps :param k: Generator index :param Snom: Nominal power :param P_array: Array of P :param active_array: array of active :param dispatchable_array: array of dispatchable :return: Array of possible Pmax
VeraGridEngine.Simulations.Reliability.reliability_iterable moduleο
- class VeraGridEngine.Simulations.Reliability.reliability_iterable.ReliabilityIterable(grid: MultiCircuit, forced_mttf: None | float = None, forced_mttr: None | float = None, logger: Logger = <VeraGridEngine.basic_structures.Logger object>)[source]ο
Bases:
objectRealTimeStateEnumeration
VeraGridEngine.Simulations.Reliability.reliability_results moduleο
- class VeraGridEngine.Simulations.Reliability.reliability_results.ReliabilityResults(nsim: int)[source]ο
Bases:
ResultsTemplate- CAIDI_evolutionο
- CLASS_DATA_VARIABLES = {'CAIDI_evolution': <VeraGridEngine.Simulations.results_template.ResultsProperty object>, 'ENS_evolution': <VeraGridEngine.Simulations.results_template.ResultsProperty object>, 'LOLET_evolution': <VeraGridEngine.Simulations.results_template.ResultsProperty object>, 'LOLE_evolution': <VeraGridEngine.Simulations.results_template.ResultsProperty object>, 'LOLFT_evolution': <VeraGridEngine.Simulations.results_template.ResultsProperty object>, 'LOLF_evolution': <VeraGridEngine.Simulations.results_template.ResultsProperty object>, 'SAIDI_evolution': <VeraGridEngine.Simulations.results_template.ResultsProperty object>, 'SAIFI_evolution': <VeraGridEngine.Simulations.results_template.ResultsProperty object>}ο
- CLASS_RESULTS_DECLARATIONS = (<VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>)ο
- ENS_evolutionο
- LOCAL_RESULTS_DECLARATIONS = (<VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>, <VeraGridEngine.Simulations.results_template.ResultsProperty object>)ο
- LOLET_evolutionο
- LOLE_evolutionο
- LOLFT_evolutionο
- LOLF_evolutionο
- SAIDI_evolutionο
- SAIFI_evolutionο
- mdl(result_type: ResultTypes) ResultsTable[source]ο
Plot the results. :param result_type: ResultTypes :return: ResultsModel