Source code for relsad.reliability.indices.system

from relsad.network.systems import PowerNetwork
from relsad.Time import Time
from relsad.utils import eq


[docs]def SAIFI(network: PowerNetwork): """ Returns the current SAIFI (System average interruption failure index) Parameters ---------- network : PowerNetwork A PowerNetwork element Returns ---------- saifi : float The SAIFI value """ interrupted_customers = sum( bus.acc_interruptions * bus.n_customers for bus in network.buses ) total_customers = sum(bus.n_customers for bus in network.buses) if total_customers == 0: saifi = 0 else: saifi = interrupted_customers / total_customers return saifi
[docs]def SAIDI(network: PowerNetwork): """ Returns the current SAIDI (System average interruption duration index) Parameters ---------- network : PowerNetwork A PowerNetwork element Returns ---------- saidi : float The SAIDI value """ sum_outage_time_x_n_customer = sum( bus.acc_outage_time.get_hours() * bus.n_customers for bus in network.buses ) total_customers = sum(bus.n_customers for bus in network.buses) if total_customers == 0: saidi = 0 else: saidi = sum_outage_time_x_n_customer / total_customers return saidi
[docs]def CAIDI(network: PowerNetwork): """ Returns the current CAIFI (Customer average interruption duration index) Parameters ---------- network : PowerNetwork A PowerNetwork element Returns ---------- caidi : float The CAIDI value """ saifi = SAIFI(network) if not eq(saifi, 0): caidi = SAIDI(network) / saifi else: caidi = 0 return caidi
[docs]def ASUI(network: PowerNetwork, current_time: Time): """ Returns the current ASUI (average service unavailability index) Parameters ---------- network : PowerNetwork A PowerNetwork element current_time : Time Current time Returns ---------- asui : float The ASUI value """ hours = current_time.get_hours() asui = SAIDI(network) / hours return asui
[docs]def ASAI(network: PowerNetwork, current_time: Time): """ Returns the current ASAI (average service avaialbility index) Parameters ---------- network : PowerNetwork A PowerNetwork element current_time : Time Current time Returns ---------- asai : float The ASAI value """ asai = 1 - ASUI(network, current_time) return asai
[docs]def ENS(network): """ Returns the current ENS (Energy not Supplied) Parameters ---------- network : PowerNetwork A PowerNetwork element Returns ---------- ens : float The ENS value """ ens = sum(bus.acc_p_energy_shed for bus in network.buses) return ens