Objectives
NEMStorageUnderUncertainty._add_objective_cap_contracted!
— Method_add_objective_cap_contracted!(
model::JuMP.Model,
prices::Vector{<:AbstractFloat},
times::Vector{Dates.DateTime},
τ::Float64,
d_0::Float64,
d_lifetime::Float64,
e_rated::Float64,
c_capital::Float64,
C::Float64
) -> Any
Summary
Adds a revenue-maximising objective function that:
- Models the storage device defending a cap contract. Cap contracts are sold at a price in /MWh, and typically apply over a quarter or year. Futhermore, cap contracts that are sold by a generating participant can be defended across the entire portfolio of their generating assets (as opposed to any individual asset). As such, this representation only approximates how a storage device might be used to defend a cap contract.
- Penalises storage throughput/cycling. The penalty is the proportion of the warrantied throughput lifetime of the storage device expended during the modelled period, multiplied by the cost of a new storage device. In other words, the storage device replacement cost is amortised across throughput. This bears similarities to the energy throughput model in this paper.
\[\begin{aligned} \max \quad & \sum_{t \in T}\left(\tau\lambda_t(p_t - q_t) - \tau\beta_tC(\lambda_t - 300)\right) - \frac{d_T - d_0}{d_{lifetime}} e_{rated} c_{capital} \end{aligned}\]
Arguments
model
: JuMP modelprices
: AVector
of prices in /MWhtimes
: AVector
ofDateTime
sτ
: Frequency ofprices
in hoursd_0
: Initial throughput of storage device in MWhd_lifetime
: Warrantied throughput lifetime of the storage device in MWhe_rated
: Storage energy capacity in MWhc_capital
: Capital cost of storage device in AUD/MWhC
: Quantity of capacity "contracted" under cap contract (MW)
Methods
_add_objective_cap_contracted!(
model,
prices,
times,
τ,
d_0,
d_lifetime,
e_rated,
c_capital,
C
)
defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/objectives.jl:116
.
NEMStorageUnderUncertainty._add_objective_discounted!
— Method_add_objective_discounted!(
model::JuMP.Model,
prices::Vector{<:AbstractFloat},
times::Vector{Dates.DateTime},
τ::Float64,
d_0::Float64,
d_lifetime::Float64,
e_rated::Float64,
c_capital::Float64,
discount_function::Function,
r::Float64
) -> Any
Summary
Adds a revenue-maximising objective function that:
- Models the storage device discounting decisions in the future based on a discount function $DF(r,t)$, where $r$ is the discount rate.
- Penalises storage throughput/cycling. The penalty is the proportion of the warrantied throughput lifetime of the storage device expended during the modelled period, multiplied by the cost of a new storage device. In other words, the storage device replacement cost is amortised across throughput. This bears similarities to the energy throughput model in this paper.
\[\begin{aligned} \max \quad & \sum_{t \in T}\left(\tau(p_t - q_t) \times \lambda_t DF(r, t)\right) - \frac{d_T - d_0}{d_{lifetime}} e_{rated} c_{capital} \end{aligned}\]
Arguments
model
: JuMP modelprices
: AVector
of prices in /MWhtimes
: AVector
ofDateTime
sτ
: Frequency ofprices
in hoursd_0
: Initial throughput of storage device in MWhd_lifetime
: Warrantied throughput lifetime of the storage device in MWhe_rated
: Storage energy capacity in MWhc_capital
: Capital cost of storage device in AUD/MWhdiscount_function
: Function that calculates discount factor $DF$. Should take aVector
of discount times (hours ahead) and the discount rate $r$ (per hour) as arguments.r
: Discount rate. Should have units $hr^{-1}$.
Methods
_add_objective_discounted!(
model,
prices,
times,
τ,
d_0,
d_lifetime,
e_rated,
c_capital,
discount_function,
r
)
defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/objectives.jl:177
.
NEMStorageUnderUncertainty._add_objective_standard!
— Method_add_objective_standard!(
model::JuMP.Model,
prices::Vector{<:AbstractFloat},
times::Vector{Dates.DateTime},
τ::Float64
) -> Any
Summary
Adds a standard revenue-maximising objective function:
\[\begin{aligned} \max \quad & \sum_{t \in T}{\tau\lambda_t(p_t - q_t)} \end{aligned}\]
Arguments
model
: JuMP modelprices
: AVector
of prices in /MWhtimes
: AVector
ofDateTime
sτ
: Frequency ofprices
in hours
Methods
_add_objective_standard!(model, prices, times, τ)
defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/objectives.jl:17
.
NEMStorageUnderUncertainty._add_objective_throughput_penalty!
— Method_add_objective_throughput_penalty!(
model::JuMP.Model,
prices::Vector{<:AbstractFloat},
times::Vector{Dates.DateTime},
τ::Float64,
d_0::Float64,
d_lifetime::Float64,
e_rated::Float64,
c_capital::Float64
) -> Any
Summary
Adds a revenue-maximising objective function that penalises storage throughput/cycling.
The penalty is the proportion of the warrantied throughput lifetime of the storage device expended during the modelled period, multiplied by the cost of a new storage device. In other words, the storage device replacement cost is amortised across throughput.
This bears similarities to the energy throughput model in this paper.
\[\begin{aligned} \max \quad & \sum_{t \in T}{\tau\lambda_t(p_t - q_t)} - \frac{d_T - d_{0}}{d_{\textrm{lifetime}}}e_{\textrm{rated}}c_{\textrm{capital}} \end{aligned}\]
Arguments
model
: JuMP modelprices
: AVector
of prices in /MWhtimes
: AVector
ofDateTime
sτ
: Frequency ofprices
in hoursd_0
: Initial throughput of storage device in MWhd_lifetime
: Warrantied throughput lifetime of the storage device in MWhe_rated
: Storage energy capacity in MWhc_capital
: Capital cost of storage device in AUD/MWh
Methods
_add_objective_throughput_penalty!(
model,
prices,
times,
τ,
d_0,
d_lifetime,
e_rated,
c_capital
)
defined at /home/runner/work/NEMStorageUnderUncertainty/NEMStorageUnderUncertainty/src/model/objectives.jl:59
.