Constraints
NEMStorageUnderUncertainty._add_constraint_binding_throughput_limit! — Method_add_constraint_binding_throughput_limit!(
model::JuMP.Model,
binding_end::Dates.DateTime,
d_binding_max::Float64
) -> JuMP.ConstraintRef{JuMP.Model}
Summary
Adds a throughput limit constraint that applies to the final binding time period in a simulation.
Adds the following constraint to model:
$d_{t_{binding, end}} ≤ d_{binding_{max}}$
where $d_{binding_{max}}$ is supplied
Arguments
model: JuMP modelbinding_end: End of the binding period, DateTimed_binding_max: Throughput limit in MWh, applicable at the end of the binding period
Methods
_add_constraint_binding_throughput_limit!(
model,
binding_end,
d_binding_max
)defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/constraints.jl:214.
NEMStorageUnderUncertainty._add_constraint_initial_soc! — Method_add_constraint_initial_soc!(
model::JuMP.Model,
storage::NEMStorageUnderUncertainty.StorageDevice,
times::Vector{Dates.DateTime},
τ::Float64
) -> JuMP.ConstraintRef{JuMP.Model}
Summary
Initial state of charge constraint that uses soc₀ from storage.
Adds the following constraint to model:
$e_1 - e_0 - \left( q_1\eta_{charge}\tau\right)+\frac{p_1\tau}{\eta_{discharge}} = 0$
where $e_0$ and $\eta$ are obtained from storage.
Arguments
model: JuMP modelstorage: AStorageDevicetimes: AVectorofDateTimestau: Interval length in hours
Methods
_add_constraint_initial_soc!(model, storage, times, τ)defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/constraints.jl:51.
NEMStorageUnderUncertainty._add_constraint_initial_throughput! — Method_add_constraint_initial_throughput!(
model::JuMP.Model,
storage::NEMStorageUnderUncertainty.StorageDevice,
times::Vector{Dates.DateTime},
τ::Float64
) -> JuMP.ConstraintRef{JuMP.Model}
Summary
Initial throughput constraint that uses throughput₀ from storage.
Adds the following constraint to model:
$d_1 - d_0 - p_1\tau = 0$
where $d_0$ is obtained from storage.
Arguments
model: JuMP modelstorage: AStorageDevicetimes: AVectorofDateTimestau: Interval length in hours
Methods
_add_constraint_initial_throughput!(
model,
storage,
times,
τ
)defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/constraints.jl:127.
NEMStorageUnderUncertainty._add_constraint_intertemporal_soc! — Method_add_constraint_intertemporal_soc!(
model::JuMP.Model,
storage::NEMStorageUnderUncertainty.StorageDevice,
times::Vector{Dates.DateTime},
τ::Float64
) -> JuMP.Containers.DenseAxisArray
Summary
Intertemporal state of charge constraints that describe state of charge evolution.
Adds the following constraint to model if times has length ≥ 2:
$e_t-e_{t-1}- \left( q_t\eta_{charge}\tau\right)+\frac{p_t\tau}{\eta_{discharge}} = 0$
$\eta$ are obtained from storage.
Arguments
model: JuMP modelstorage: AStorageDevicetimes: AVectorofDateTimestau: Interval length in hours
Methods
_add_constraint_intertemporal_soc!(model, storage, times, τ)defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/constraints.jl:86.
NEMStorageUnderUncertainty._add_constraint_intertemporal_throughput! — Method_add_constraint_intertemporal_throughput!(
model::JuMP.Model,
times::Vector{Dates.DateTime},
τ::Float64
) -> JuMP.Containers.DenseAxisArray
Summary
Intertemporal throughput constraints that track throughput. See _add_variable_throughput!.
Adds the following constraint to model if times has length ≥ 2:
$d_t-d_{t-1} - p_t\tau = 0$
Arguments
model: JuMP modeltimes: AVectorofDateTimestau: Interval length in hours
Methods
_add_constraint_intertemporal_throughput!(model, times, τ)defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/constraints.jl:156.
NEMStorageUnderUncertainty._add_constraint_throughput_limit! — Method_add_constraint_throughput_limit!(
model::JuMP.Model,
times::Vector{Dates.DateTime},
d_max::Float64
) -> JuMP.ConstraintRef{JuMP.Model}
Summary
Adds a throughput limit constraint that applies to the final time period in a simulation.
Adds the following constraint to model:
$d_{end} ≤ d_{max}$
where $d_{max}$ is supplied
Arguments
model: JuMP modeltimes: AVectorofDateTimesd_max: Throughput limit in MWh, applicable at the end oftimes
Methods
_add_constraint_throughput_limit!(model, times, d_max)defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/constraints.jl:191.
NEMStorageUnderUncertainty._add_constraints_charge_state! — Method_add_constraints_charge_state!(
model::JuMP.Model,
storage::NEMStorageUnderUncertainty.StorageDevice,
times::Vector{Dates.DateTime}
) -> Tuple{JuMP.Containers.DenseAxisArray, JuMP.Containers.DenseAxisArray}
Summary
Constraints that explicitly prevent simultaneous charging and discharging during a time interval $t$. Adds two constraints to model:
- $p_t - \bar{p}\left(1-u_t\right) \leq 0$
- $q_t - \bar{p}u_t \leq 0$
In the absence of these constraints, simultaneous charging and discharging was observed for a BESS device simulated for the following model formulations:
StandardArbitrageArbitrageThroughputPenalty, up to a certain throughput penalty
Arguments
model: JuMP modelstorage: AStorageDevicetimes: AVectorofDateTimes
Methods
_add_constraints_charge_state!(model, storage, times)defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/constraints.jl:18.