Including budget limits for HydroDispatch

  • `HydroDispatch: can include budget limits if the HydroDispatchRunOfRiverBudget formulation is used. By adding a hydro_budgettimeseries with values between 0 and 1, normalized by theget_active_power_limits(hydro).max, a single constraint is imposed as the budget during the simulation horizon:

\[\begin{align*} \sum_{t=1}^T p^\text{hy}_t \le \sum_{t=1}^T \text{EnergyBudgetTimeSeriesParameter}_t \end{align*}\]

Setting an interval budget for HydroDispatchRunOfRiverBudget

The attribute hydro_budget_interval can be used to set-up a budget constraint with smaller interval than the full horizon of the simulation. For example if a problem has an horizon of Hour(48), with an hourly resolution, the attribute hydro_budget_interval = Hour(24) can be used to also impose a budget constraint in the first 24 hours (in addition of the full 48 hours constraint):

hydro_model = DeviceModel(
    HydroDispatch,
    HydroDispatchRunOfRiverBudget;
    attributes = Dict{String, Any}(
        "hydro_budget_interval" => Hour(24),
    ),
)

set_device_model!(template, hydro_model)

If no attribute is passed, only the horizon constraint is imposed.

Including budget limits for HydroReservoir

reservoir_model = DeviceModel(
    HydroReservoir,
    HydroEnergyModelReservoir;
    attributes = Dict{String, Any}(
        "energy_target" => false,
        "hydro_budget" => true,
    ),
)

set_device_model!(template, reservoir_model)

Setting a budget for HydroEnergyModelReservoir

\[\begin{align*} \sum_{t=1}^T p^\text{hy}_t \le \sum_{t=1}^T \text{EnergyBudgetTimeSeriesParameter}_t \end{align*}\]

Including storage target for HydroReservoir

reservoir_model = DeviceModel(
    HydroReservoir,
    HydroEnergyModelReservoir;
    attributes = Dict{String, Any}(
        "energy_target" => true,
        "hydro_budget" => false,
    ),
)

set_device_model!(template, reservoir_model)

Setting a target for HydroEnergyModelReservoir

\[\begin{align*} \text{energy}_T + \text{shortage}_T + \text{surplus}_T = \text{EnergyTargetTimeSeriesParameter}_T, \end{align*}\]