battery_optimizer.uk.result#
Classes
|
|
|
|
|
|
|
- class battery_optimizer.uk.result.CommercialResults(*, timestamp, delivery_date, third_party_buy_GBP, third_party_sell_GBP, third_party_sum_GBP, dc_high_revenue_GBP, dc_low_revenue_GBP, dc_sum_revenue_GBP, dm_high_revenue_GBP, dm_low_revenue_GBP, dr_high_revenue_GBP, dr_low_revenue_GBP, commodity_buy_GBP, commodity_sell_GBP, commodity_sum_GBP, commodity_buy_MWh, commodity_sell_MWh, pv_revenue_GBP, pv_volume_MWh, sum_mas_GBP, sum_dc_mas_GBP, sum_pv_dc_mas_GBP, imbalance_import_MWh, imbalance_export_MWh)#
Bases:
BaseModel- Parameters:
timestamp (datetime)
delivery_date (date)
third_party_buy_GBP (float)
third_party_sell_GBP (float)
third_party_sum_GBP (float)
dc_high_revenue_GBP (float)
dc_low_revenue_GBP (float)
dc_sum_revenue_GBP (float)
dm_high_revenue_GBP (float)
dm_low_revenue_GBP (float)
dr_high_revenue_GBP (float)
dr_low_revenue_GBP (float)
commodity_buy_GBP (float)
commodity_sell_GBP (float)
commodity_sum_GBP (float)
commodity_buy_MWh (float)
commodity_sell_MWh (float)
pv_revenue_GBP (float)
pv_volume_MWh (float)
sum_mas_GBP (float)
sum_dc_mas_GBP (float)
sum_pv_dc_mas_GBP (float)
imbalance_import_MWh (float)
imbalance_export_MWh (float)
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'ignore', 'frozen': False, 'json_encoders': {<class 'datetime.datetime'>: <function BaseModel.<lambda>>, <class 'pandas._libs.tslibs.timedeltas.Timedelta'>: <function BaseModel.<lambda>>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>: <function BaseModel.<lambda>>, <class 'pandas.core.frame.DataFrame'>: <function BaseModel.<lambda>>, <class 'pandas.core.series.Series'>: <function BaseModel.<lambda>>}, 'validate_default': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class battery_optimizer.uk.result.DynamicServicesEnergyThroughputBuffer(*, start, dcl_MWh_per_MW=0.0, dch_MWh_per_MW=0.0, dml_MWh_per_MW=0.0, dmh_MWh_per_MW=0.0, drl_MWh_per_MW=0.0, drh_MWh_per_MW=0.0, ds_energy_throughput_buffer_low, ds_energy_throughput_buffer_high)#
Bases:
DSEnergyThroughput- Parameters:
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'ignore', 'frozen': False, 'json_encoders': {<class 'datetime.datetime'>: <function BaseModel.<lambda>>, <class 'pandas._libs.tslibs.timedeltas.Timedelta'>: <function BaseModel.<lambda>>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>: <function BaseModel.<lambda>>, <class 'pandas.core.frame.DataFrame'>: <function BaseModel.<lambda>>, <class 'pandas.core.series.Series'>: <function BaseModel.<lambda>>}, 'validate_default': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class battery_optimizer.uk.result.UKMarketPositions(*, intraday, imbalance, n2ex1h, epex30min, dcl, dch, dml, dmh, drl, drh)#
Bases:
MarketPositions- Parameters:
intraday (list[EnergyMarketContinuousPositions] | DataFrame)
n2ex1h (list[EnergyMarketAuctionedPositions] | DataFrame)
epex30min (list[EnergyMarketAuctionedPositions] | DataFrame)
dcl (list[CapacityMarketPositions] | DataFrame)
dch (list[CapacityMarketPositions] | DataFrame)
dml (list[CapacityMarketPositions] | DataFrame)
dmh (list[CapacityMarketPositions] | DataFrame)
drl (list[CapacityMarketPositions] | DataFrame)
drh (list[CapacityMarketPositions] | DataFrame)
- dch: list[CapacityMarketPositions] | DataFrame#
- dcl: list[CapacityMarketPositions] | DataFrame#
- dmh: list[CapacityMarketPositions] | DataFrame#
- dml: list[CapacityMarketPositions] | DataFrame#
- drh: list[CapacityMarketPositions] | DataFrame#
- drl: list[CapacityMarketPositions] | DataFrame#
- epex30min: list[EnergyMarketAuctionedPositions] | DataFrame#
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'ignore', 'frozen': False, 'json_encoders': {<class 'datetime.datetime'>: <function BaseModel.<lambda>>, <class 'pandas._libs.tslibs.timedeltas.Timedelta'>: <function BaseModel.<lambda>>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>: <function BaseModel.<lambda>>, <class 'pandas.core.frame.DataFrame'>: <function BaseModel.<lambda>>, <class 'pandas.core.series.Series'>: <function BaseModel.<lambda>>}, 'validate_default': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- n2ex1h: list[EnergyMarketAuctionedPositions] | DataFrame#
- class battery_optimizer.uk.result.UKResult(*, asset_id, request_id, battery_optimizer_commit_sha, user_id, request_creation_time, result_creation_time, request, market_positions, markets_optimized, markets_already_auctioned, soe, discharge_over_daily_cycle_limit_kWh=None, discharge_over_daily_cycle_limit_count=None, intraday_buckets=None, aggregated_intraday_buckets=None, trace=None, pulp_solver_variables_values_delta_false=None, pulp_solver_variables_values_delta_true=None, optimizer_object=None, commercial_results_per_settlement_period=None, commercial_results=None, dynamic_services_energy_throughput_buffer=None)#
Bases:
Result- Parameters:
request_id (str)
battery_optimizer_commit_sha (str | None)
request_creation_time (datetime)
result_creation_time (datetime)
request (UKRequest)
market_positions (UKMarketPositions)
discharge_over_daily_cycle_limit_kWh (dict | None)
discharge_over_daily_cycle_limit_count (dict | None)
intraday_buckets (Dict[datetime, IntradayBuckets] | None)
aggregated_intraday_buckets (Dict[datetime, IntradayBuckets] | None)
trace (Any)
pulp_solver_variables_values_delta_false (list[dict] | None)
optimizer_object (str | None)
commercial_results_per_settlement_period (list[CommercialResults] | DataFrame | None)
commercial_results (list[CommercialResults] | DataFrame | None)
dynamic_services_energy_throughput_buffer (list[DynamicServicesEnergyThroughputBuffer] | DataFrame | None)
- classmethod amend_result_dict(result_dict, solved_problem, delta=False)#
Amend the result dictionary with additional information.
- Parameters:
result_dict: The result dictionary to amend.
solved_problem: The solved optimization problem.
delta: Whether to use delta values.
- Returns:
The amended result dictionary.
- Parameters:
result_dict (dict)
solved_problem (UKBatteryOptimizer)
- Return type:
- commercial_results: list[CommercialResults] | DataFrame | None#
- commercial_results_per_settlement_period: list[CommercialResults] | DataFrame | None#
- classmethod create_dataframe_from_solved_problem(solved_problem, delta=False)#
- Parameters:
solved_problem (UKBatteryOptimizer)
- Return type:
- classmethod create_melmil_result_from_solved_problem(solved_problem, delta=False, mel_mil=ObjectiveName.mel)#
Create Result object from solved BatteryOptimizer problem.
- Parameters:
solved_problem: The solved optimization problem.
markets: Markets that we want to compute the objective for, especially for the commercial results.
- Parameters:
solved_problem (UKBatteryOptimizer)
mel_mil (ObjectiveName)
- dynamic_services_energy_throughput_buffer: list[DynamicServicesEnergyThroughputBuffer] | DataFrame | None#
- static get_commercial_results(solved_problem, market_positions, frequency, markets_commercial_results)#
- Parameters:
solved_problem (UKBatteryOptimizer)
market_positions (UKMarketPositions)
- static get_dynamic_services_energy_throughput_buffer(solved_problem, delta=False)#
- Parameters:
solved_problem (UKBatteryOptimizer)
- Return type:
- classmethod get_solved_problem_dataframe_additional_columns()#
- market_positions: UKMarketPositions#
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'ignore', 'frozen': False, 'json_encoders': {<class 'datetime.datetime'>: <function BaseModel.<lambda>>, <class 'pandas._libs.tslibs.timedeltas.Timedelta'>: <function BaseModel.<lambda>>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>: <function BaseModel.<lambda>>, <class 'pandas.core.frame.DataFrame'>: <function BaseModel.<lambda>>, <class 'pandas.core.series.Series'>: <function BaseModel.<lambda>>}, 'validate_default': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].