battery_optimizer.uk.legacy.legacy_request#

Functions

Classes

BatteryParameters(*, battery_capacity, ...)

EFASetting(*, EFA, DCH, DCL, Market_DCH, ...)

IndustrialCosts(*, perspective, AAHEDC, CfD, ...)

LegacyRequest(*, name, strategy, local_tz, ...)

PortfolioOverview(*, datetime, spot_price, ...)

StrategyParameters(*, industrial_costs, ...)

VolumeWeightedMeanPrices(*, datetime, ...)

class battery_optimizer.uk.legacy.legacy_request.BatteryParameters(*, battery_capacity, soc_min, soc_max, soc_initial, max_charge_power, charging_efficiency, max_discharge_power, discharging_efficiency, total_battery_cycle, invest_cost, grid_connection_export, grid_connection_import, PV_kWp, activation_likelihood, charged_energy, discharged_energy, cycle_cost)#

Bases: BaseModel

Parameters:
PV_kWp: float#
activation_likelihood: float#
battery_capacity: float#
charged_energy: float#
charging_efficiency: float#
cycle_cost: float#
discharged_energy: float#
discharging_efficiency: float#
grid_connection_export: float#
grid_connection_import: float#
invest_cost: float#
max_charge_power: float#
max_discharge_power: float#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

soc_initial: float#
classmethod soc_initial_sensible(soc_initial, values)#
soc_max: float#
soc_min: float#
total_battery_cycle: int#
class battery_optimizer.uk.legacy.legacy_request.EFASetting(*, EFA, DCH, DCL, Market_DCH, Market_DCL)#

Bases: BaseModel

Parameters:
DCH: float#
DCL: float#
EFA: Literal['EFA1', 'EFA2', 'EFA3', 'EFA4', 'EFA5', 'EFA6']#
Market_DCH: bool#
Market_DCL: bool#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class battery_optimizer.uk.legacy.legacy_request.IndustrialCosts(*, perspective, AAHEDC, CfD, CM, RO, FiT, LLF, TLM, BSUoS, Energy, MgmFee, ImbalRiskChar, TNUoS, DUoS_ch, DUoS_dch)#

Bases: BaseModel

Parameters:
AAHEDC: float#
BSUoS: float#
CM: float#
CfD: float#
DUoS_ch: list[float]#
DUoS_dch: list[float]#
Energy: list[float]#
FiT: float#
ImbalRiskChar: float#
LLF: float#
MgmFee: float#
RO: float#
TLM: float#
TNUoS: float#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

perspective: Literal['customer', 'EON']#
class battery_optimizer.uk.legacy.legacy_request.LegacyRequest(*, name, strategy, local_tz, strategy_parameters, lookahead_time='3D', settlement_period='30min', start_time, end_time, portfolio_overview, volume_weighted_mean_prices, perfect_price_forecast, battery_parameters)#

Bases: BaseModel

Parameters:
battery_parameters: BatteryParameters#
end_time: datetime#
classmethod ensure_consistent_datetime_index(volume_weighted_mean_prices, values)#
local_tz: Literal['Europe/London']#
lookahead_time: str#
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'frozen': False, 'json_encoders': {<class 'pandas._libs.tslibs.timedeltas.Timedelta'>: <function LegacyRequest.<lambda>>, <class 'pandas.core.frame.DataFrame'>: <function LegacyRequest.<lambda>>}}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str#
perfect_price_forecast: bool#
portfolio_overview: list[PortfolioOverview]#
settlement_period: str#
start_time: datetime#
strategy: Literal['uk_battery']#
strategy_parameters: StrategyParameters#
volume_weighted_mean_prices: list[VolumeWeightedMeanPrices]#
class battery_optimizer.uk.legacy.legacy_request.PortfolioOverview(*, datetime, spot_price, PV_prod_normalized, dch_price, dcl_price, triad_time, optimize_dc_time, optimize_spot_time, spot_bought, spot_sold, dch_marketed, dcl_marketed, DUoS_ch, DUoS_dch, cust_energy_costs)#

Bases: BaseModel

Parameters:
DUoS_ch: float#
DUoS_dch: float#
PV_prod_normalized: float#
cust_energy_costs: float#
datetime: datetime#
dch_marketed: float#
dch_price: float#
dcl_marketed: float#
dcl_price: float#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

optimize_dc_time: bool#
optimize_spot_time: bool#
spot_bought: float#
spot_price: float#
spot_sold: float#
triad_time: bool#
class battery_optimizer.uk.legacy.legacy_request.StrategyParameters(*, industrial_costs, DC_settings, battery_name, date_range_freq='3D', cycle_limit=2, power_swing, power_swing_limit, market_access, DC_access, Target_SOC_end, Target_SOC_end_lower_limit, Target_SOC_end_upper_limit)#

Bases: BaseModel

Parameters:
DC_access: bool#
DC_settings: list[EFASetting]#
Target_SOC_end: bool#
Target_SOC_end_lower_limit: float#
Target_SOC_end_upper_limit: float#
battery_name: Literal['Warrington']#
cycle_limit: int#
date_range_freq: str#
industrial_costs: IndustrialCosts#
market_access: bool#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

power_swing: bool#
power_swing_limit: float#
class battery_optimizer.uk.legacy.legacy_request.VolumeWeightedMeanPrices(*, datetime, volume_weighted_mean_price_eur_mwh)#

Bases: BaseModel

Parameters:
datetime: datetime#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

volume_weighted_mean_price_eur_mwh: float#
battery_optimizer.uk.legacy.legacy_request.datetime_records_as_dataframe(cls, records)#
battery_optimizer.uk.legacy.legacy_request.is_fraction(fraction)#
Parameters:

fraction (float)

Return type:

float

battery_optimizer.uk.legacy.legacy_request.records_as_dataframe(cls, records)#
battery_optimizer.uk.legacy.legacy_request.string_timedelta_to_pandas_timedelta(timedelta)#
Parameters:

timedelta (str)

Return type:

Timedelta