battery_optimizer.uk.mel_mil#

Functions

Classes

BMKneePoint(*, time_from, power_MW[, ...])

BMKneePointMetadata(*, result)

BMPosition(*, time_from, time_to, power_MW)

BOA(*, BOATimepoints)

BOATimepoint(*, time_from, power_kW)

BaselinePoint(*, time_from, power_kW[, ...])

EnergyInterval(*, start_time, end_time, ...)

NESO-style interval carrying an energy value at each of its two ends.

MDOMDBResult(*, request_id[, problem_type, ...])

MELMILResult(*, request_id[, problem_type, ...])

PowerInterval(*, start_time, end_time, ...)

NESO-style interval carrying a power value at each of its two ends.

class battery_optimizer.uk.mel_mil.BMKneePoint(*, time_from, power_MW, energy_MWh=None, energy_slope=False, anchor, metadata=None)#

Bases: BaseModel

Parameters:
anchor: SoEAnchor#
energy_MWh: float | None#
energy_slope: bool#
metadata: BMKneePointMetadata | None#
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].

power_MW: float#
time_from: datetime#
class battery_optimizer.uk.mel_mil.BMKneePointMetadata(*, result)#

Bases: BaseModel

Parameters:

result (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].

result: DataFrame#
class battery_optimizer.uk.mel_mil.BMPosition(*, time_from, time_to, power_MW, energy_MWh=None)#

Bases: BaseModel

Parameters:
energy_MWh: float | None#
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].

power_MW: float#
time_from: datetime#
time_to: datetime#
class battery_optimizer.uk.mel_mil.BOA(*, BOATimepoints)#

Bases: BaseModel

Parameters:

BOATimepoints (list[BOATimepoint])

BOATimepoints: list[BOATimepoint]#
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.mel_mil.BOATimepoint(*, time_from, power_kW)#

Bases: BaseModel

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].

power_kW: float#
time_from: datetime#
class battery_optimizer.uk.mel_mil.BaselinePoint(*, time_from, power_kW, expected_soc_fraction=None)#

Bases: BaseModel

Parameters:
expected_soc_fraction: float | None#
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].

power_kW: float#
time_from: datetime#
class battery_optimizer.uk.mel_mil.EnergyInterval(*, start_time, end_time, start_mwh, end_mwh)#

Bases: BaseModel

NESO-style interval carrying an energy value at each of its two ends.

Parameters:
end_mwh: float#
end_time: datetime#
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].

start_mwh: float#
start_time: datetime#
class battery_optimizer.uk.mel_mil.MDOMDBResult(*, request_id, problem_type=ProblemType.MDO_MDB, asset_id, request_creation_time, result_creation_time, mel, mil, mdo, mdb, request, trace=None)#

Bases: BaseModel

Parameters:
asset_id: str | int#
mdb: list[EnergyInterval]#
mdo: list[EnergyInterval]#
mel: list[PowerInterval]#
mil: list[PowerInterval]#
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].

problem_type: ProblemType#
request: UKRequest | dict#
request_creation_time: datetime#
request_id: str#
result_creation_time: datetime#
trace: Any#
class battery_optimizer.uk.mel_mil.MELMILResult(*, request_id, problem_type=ProblemType.MELMIL, asset_id, request_creation_time, result_creation_time, mel, mil, request, trace=None)#

Bases: BaseModel

Parameters:
asset_id: str | int#
mel: list[BMPosition]#
mil: list[BMPosition]#
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].

problem_type: ProblemType#
request: UKRequest | dict#
request_creation_time: datetime#
request_id: str#
result_creation_time: datetime#
trace: Any#
class battery_optimizer.uk.mel_mil.PowerInterval(*, start_time, end_time, start_mw, end_mw)#

Bases: BaseModel

NESO-style interval carrying a power value at each of its two ends.

Parameters:
end_mw: float#
end_time: datetime#
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].

start_mw: float#
start_time: datetime#
battery_optimizer.uk.mel_mil.create_melmil_result_from_dataframe(request_id, problem_type, asset_id, request_creation_time, mel_df, mil_df, request, trace=None)#
Parameters:
Return type:

MELMILResult

battery_optimizer.uk.mel_mil.optimize_mel_mil_request(request)#