Heuristic Load Following Dispatch
- class hopp.simulation.technologies.dispatch.power_storage.heuristic_load_following_dispatch.HeuristicLoadFollowingDispatch(pyomo_model: ConcreteModel, index_set: Set, system_model: BatteryStateful, financial_model: Singleowner, fixed_dispatch: List | None = None, block_set_name: str = 'heuristic_load_following_battery', dispatch_options: dict | None = None)
Bases:
SimpleBatteryDispatchHeuristic- Operates the battery based on heuristic rules to meet the demand profile based power available from power generation profiles and
power demand profile.
Currently, enforces available generation and grid limit assuming no battery charging from grid
- __init__(pyomo_model: ConcreteModel, index_set: Set, system_model: BatteryStateful, financial_model: Singleowner, fixed_dispatch: List | None = None, block_set_name: str = 'heuristic_load_following_battery', dispatch_options: dict | None = None)
Initialize HeuristicLoadFollowingDispatch.
- Parameters:
pyomo_model (pyomo.ConcreteModel) – Pyomo concrete model.
index_set (pyomo.Set) – Indexed set.
system_model (BatteryModel.BatteryStateful) – System model.
financial_model (Singleowner.Singleowner) – Financial model.
fixed_dispatch (Optional[List], optional) – List of normalized values [-1, 1] (Charging (-), Discharging (+)). Defaults to None.
block_set_name (str, optional) – Name of the block set. Defaults to ‘heuristic_load_following_battery’.
dispatch_options (Optional[dict], optional) – Dispatch options. Defaults to None.
- set_fixed_dispatch(gen: list, grid_limit: list, goal_power: list)
- Sets charge and discharge power of battery dispatch using fixed_dispatch attribute
and enforces available generation and grid limits.
- Parameters:
gen (list) – List of power generation.
grid_limit (list) – List of grid limits.
goal_power (list) – List of goal power.
- _heuristic_method(gen, goal_power)
Enforces battery power fraction limits and sets _fixed_dispatch attribute. Sets the _fixed_dispatch based on goal_power and gen (power generation profile).
- Parameters:
gen – Power generation profile.
goal_power – Goal power.
- static _check_efficiency_value(efficiency)
Checks efficiency is between 0 and 1 or 0 and 100. Returns fractional value
- _check_initial_soc(initial_soc)
Checks initial state-of-charge.
- Parameters:
initial_soc – Initial state-of-charge value.
- Returns:
Checked initial state-of-charge.
- Return type:
float
- _create_capacity_parameter(storage)
Creates storage capacity parameter.
- Parameters:
storage – Storage instance.
- _create_efficiency_parameters(storage)
Creates storage efficiency parameters.
- Parameters:
storage – Storage instance.
- _create_lifecycle_count_constraint()
Creates lifecycle count constraint.
- _create_lifecycle_model()
Creates lifecycle model.
- _create_port(hybrid)
Creates storage port.
- Parameters:
hybrid – Hybrid instance.
- Returns:
Storage port.
- Return type:
Port
- _create_soc_inventory_constraint(storage)
Creates state-of-charge inventory constraint for storage.
- Parameters:
storage – Storage instance.
- _create_soc_linking_constraint()
Creates state-of-charge linking constraint.
- _create_storage_constraints(storage)
- _create_storage_parameters(storage)
Creates storage parameters.
- Parameters:
storage – Storage instance.
- static _create_storage_port(storage)
Creates storage port.
- Parameters:
storage – Storage instance.
- _create_storage_variables(storage)
Creates storage variables.
- Parameters:
storage – Storage instance.
- _create_variables(hybrid)
Creates storage variables.
- Parameters:
hybrid – Hybrid instance.
- Returns:
Tuple containing battery discharge and charge variables.
- Return type:
Tuple
- _enforce_power_fraction_limits()
Enforces battery power fraction limits and sets _fixed_dispatch attribute.
- _fix_dispatch_model_variables()
Fixes dispatch model variables based on the fixed dispatch values.
- _lifecycle_count_rule(m, i)
Calculates lifecycle count rule.
- Parameters:
m – Model instance.
i – Index.
- Returns:
Lifecycle count.
- Return type:
float
- _set_control_mode()
Sets control mode.
- _set_model_specific_parameters(round_trip_efficiency=88.0)
Sets model-specific parameters.
- Parameters:
round_trip_efficiency (float, optional) – The round-trip efficiency including converter efficiency. Defaults to 88.0, which includes converter efficiency.
- _set_power_fraction_limits(gen: list, grid_limit: list)
Set battery charge and discharge power fraction limits based on available generation and grid capacity, respectively.
- Parameters:
gen (list) – Generation blocks.
grid_limit (list) – Grid capacity.
NOTE: This method assumes that battery cannot be charged by the grid.
- property blocks: Block
- property capacity: float
Capacity.
- property charge_efficiency: float
Charge efficiency.
- property charge_power: list
Charge power.
- check_gen_grid_limit(gen: list, grid_limit: list)
Checks if generation and grid limit lengths match fixed_dispatch length.
- Parameters:
gen (list) – Generation blocks.
grid_limit (list) – Grid capacity.
- Raises:
ValueError – If gen or grid_limit length does not match fixed_dispatch length.
- property cost_per_charge: float
Cost per charge.
- property cost_per_discharge: float
Cost per discharge.
- property current: list
Current.
- property discharge_efficiency: float
Discharge efficiency.
- property discharge_power: list
Discharge power.
- dispatch_block_rule(storage)
- Initializes storage parameters, variables, and constraints.
Called during Dispatch’s __init__.
- Parameters:
storage – Storage instance.
- static enforce_power_fraction_simple_bounds(power_fraction: float) float
Enforces simple bounds (0, .9) for battery power fractions.
- Parameters:
power_fraction (float) – Power fraction from heuristic method.
- Returns:
Bounded power fraction.
- Return type:
power_fraction (float)
- property fixed_dispatch: list
List of fixed dispatch.
- Type:
list
- property generation: list
Generation.
- property initial_soc: float
Initial state-of-charge.
- initialize_parameters()
Initializes parameters.
- property is_charging: list
Storage is charging.
- property is_discharging: list
Storage is discharging.
- property lifecycle_cost: float
Lifecycle cost.
- property lifecycle_cost_per_kWh_cycle: float
Lifecycle cost per kWh cycle.
- property lifecycles: float
Lifecycles.
- max_gross_profit_objective(hybrid_blocks)
Sets the max gross profit objective for the dispatch.
- Parameters:
hybrid_blocks (Pyomo.block) – A generalized container for defining hierarchical models by adding modeling components as attributes.
- property maximum_power: float
Maximum power.
- property maximum_soc: float
Maximum state-of-charge.
- min_operating_cost_objective(hybrid_blocks)
Sets the min operating cost objective for the dispatch.
- Parameters:
hybrid_blocks (Pyomo.block) – A generalized container for defining hierarchical models by adding modeling components as attributes.
- property minimum_power: float
Minimum power.
- property minimum_soc: float
Minimum state-of-charge.
- property model: ConcreteModel
- property power: list
Power.
- property round_trip_efficiency: float
Round trip efficiency.
- property soc: list
State-of-charge.
- property time_duration: list
Time duration.
- update_dispatch_initial_soc(initial_soc: float | None = None)
Updates dispatch initial state of charge (SOC).
- Parameters:
initial_soc (float, optional) – Initial state of charge. Defaults to None.
- update_soc(power_fraction: float, soc0: float) float
Updates SOC based on power fraction threshold (0.1).
- Parameters:
power_fraction (float) – Power fraction from heuristic method. Below threshold is charging, above is discharging.
soc0 (float) – Initial SOC.
- Returns:
Updated SOC.
- Return type:
soc (float)
- update_time_series_parameters(start_time: int)
Updates time series parameters.
- Parameters:
start_time (int) – The start time.
- property user_fixed_dispatch: list
List of user fixed dispatch.
- Type:
list