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
: AStorageDevice
times
: AVector
ofDateTime
stau
: 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
: AStorageDevice
times
: AVector
ofDateTime
stau
: 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
: AStorageDevice
times
: AVector
ofDateTime
stau
: 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
: AVector
ofDateTime
stau
: 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
: AVector
ofDateTime
sd_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:
StandardArbitrage
ArbitrageThroughputPenalty
, up to a certain throughput penalty
Arguments
model
: JuMP modelstorage
: AStorageDevice
times
: AVector
ofDateTime
s
Methods
_add_constraints_charge_state!(model, storage, times)
defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/constraints.jl:18
.