Source code for edisgo.flex_opt.heat_pump_operation

import logging

import pandas as pd

logger = logging.getLogger("edisgo")


[docs] def operating_strategy( edisgo_obj, strategy="uncontrolled", heat_pump_names=None, ): """ Applies operating strategy to set electrical load time series of heat pumps. See :attr:`~.edisgo.EDisGo.apply_heat_pump_operating_strategy` for more information. Parameters ---------- edisgo_obj : :class:`~.EDisGo` strategy : str Defines the operating strategy to apply. See `strategy` parameter in :attr:`~.edisgo.EDisGo.apply_heat_pump_operating_strategy` for more information. Default: 'uncontrolled'. heat_pump_names : list(str) or None Defines for which heat pumps to apply operating strategy. See `heat_pump_names` parameter in :attr:`~.edisgo.EDisGo.apply_heat_pump_operating_strategy` for more information. Default: None. """ if heat_pump_names is None: heat_pump_names = edisgo_obj.heat_pump.cop_df.columns if strategy == "uncontrolled": ts = ( edisgo_obj.heat_pump.heat_demand_df.loc[:, heat_pump_names] / edisgo_obj.heat_pump.cop_df.loc[:, heat_pump_names] ) edisgo_obj.timeseries.add_component_time_series( "loads_active_power", ts, ) else: raise ValueError( f"Heat pump operating strategy {strategy} is not a valid option. " f"The only operating strategy currently implemented is 'uncontrolled'." ) # set reactive power time series to 0 Mvar edisgo_obj.timeseries.add_component_time_series( "loads_reactive_power", pd.DataFrame( data=0.0, index=edisgo_obj.timeseries.timeindex, columns=heat_pump_names, ), ) logger.debug(f"Heat pump operating strategy {strategy} completed.")