Model Formulations
NEMStorageUnderUncertainty.ArbitrageCapContracted — Typestruct ArbitrageCapContracted <: NEMStorageUnderUncertainty.StorageModelFormulationd_lifetime::Float64c_capital::Float64C::Float64
Summary
Maximises storage revenue subject to:
- Pro-rata penalisation of throughput/cycling
- Device defending cap contract
- All periods are treated (weighted) equally
- No cycling/throughput limits are imposed on the storage device
- Revenue is defined by the spot price for energy and is penalised based on throughput and cap contract defence
- 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
- 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.
- Intertemporal SoC constraints are applied, including from
e₀(initial SoC of storage device) toe₁(first modelled SoC)
\[\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} \\ \textrm{s.t.} \quad & u_t \in \{0,1\} \\ & p_t \geq 0 \\ & q_t \geq 0 \\ & p_t - \bar{p}\left(1-u_t\right) \leq 0\\ & q_t - \bar{p}u_t \leq 0\\ & \underline{e} \leq e_t \leq \bar{e} \\ & e_t-e_{t-1}- \left( q_t\eta_{charge}\tau\right)+\frac{p_t\tau}{\eta_{discharge}} = 0\\ & e_1 - e_0 - \left( q_1\eta_{charge}\tau\right)+\frac{p_1\tau}{\eta_{discharge}} = 0\\ & d_t-d_{t-1} - p_t\tau = 0\\ & d_1 - d_0 - p_1\tau = 0\\ \end{aligned}\]
Attributes
d_lifetime: Warrantied throughput lifetime of the storage device in MWhc_capital: Capital cost of storage device in AUD/MWhC: Quantity of capacity "contracted" under cap contract (MW)
```
NEMStorageUnderUncertainty.ArbitrageDiscounted — Typestruct ArbitrageDiscounted <: NEMStorageUnderUncertainty.StorageModelFormulationd_lifetime::Float64c_capital::Float64discount_function::Functionr::Float64
Summary
Maximises storage revenue subject to:
- Pro-rata penalisation of throughput/cycling
- Discounted future decisions (based on a discount function & discount rate)
- Future periods are discounted by a discount factor
- No cycling/throughput limits are imposed on the storage device
- Revenue is defined by the (discounted) spot price for energy and is penalised based on throughput
- 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
- Intertemporal SoC constraints are applied, including from
e₀(initial SoC of storage device) toe₁(first modelled SoC)
\[\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} \\ \textrm{s.t.} \quad & u_t \in \{0,1\} \\ & p_t \geq 0 \\ & q_t \geq 0 \\ & p_t - \bar{p}\left(1-u_t\right) \leq 0\\ & q_t - \bar{p}u_t \leq 0\\ & \underline{e} \leq e_t \leq \bar{e} \\ & e_t-e_{t-1}- \left( q_t\eta_{charge}\tau\right)+\frac{p_t\tau}{\eta_{discharge}} = 0\\ & e_1 - e_0 - \left( q_1\eta_{charge}\tau\right)+\frac{p_1\tau}{\eta_{discharge}} = 0\\ & d_t-d_{t-1} - p_t\tau = 0\\ & d_1 - d_0 - p_1\tau = 0\\ \end{aligned}\]
Attributes
d_lifetime: Warrantied throughput lifetime of the storage device in MWhc_capital: Capital cost of storage device in AUD/MWhdiscount_function: Function that calculates discount factors. Should take aVectorof discount times (hours ahead) and the discount rate $r$ (per hour) as arguments.r: Discount rate. Should have units $hr^{-1}$.
```
NEMStorageUnderUncertainty.ArbitrageThroughputPenalty — Typestruct ArbitrageThroughputPenalty <: NEMStorageUnderUncertainty.StorageModelFormulationd_lifetime::Float64c_capital::Float64
Summary
Maximises storage revenue subject to pro-rata penalisation of throughput/cycling:
- All periods are treated (weighted) equally
- No cycling/throughput limits are imposed on the storage device
- Revenue is defined by the spot price for energy and is penalised based on throughput
- 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
- Intertemporal SoC constraints are applied, including from
e₀(initial SoC of storage device) toe₁(first modelled SoC)
\[\begin{aligned} \max \quad & \sum_{t \in T}{\tau\lambda_t(p_t - q_t)} - \frac{d_T - d_0}{d_{lifetime}} e_{rated} c_{capital} \\ \textrm{s.t.} \quad & u_t \in \{0,1\} \\ & p_t \geq 0 \\ & q_t \geq 0 \\ & p_t - \bar{p}\left(1-u_t\right) \leq 0\\ & q_t - \bar{p}u_t \leq 0\\ & \underline{e} \leq e_t \leq \bar{e} \\ & e_t-e_{t-1}- \left( q_t\eta_{charge}\tau\right)+\frac{p_t\tau}{\eta_{discharge}} = 0\\ & e_1 - e_0 - \left( q_1\eta_{charge}\tau\right)+\frac{p_1\tau}{\eta_{discharge}} = 0\\ & d_t-d_{t-1} - p_t\tau = 0\\ & d_1 - d_0 - p_1\tau = 0\\ \end{aligned}\]
Attributes
d_lifetime: Warrantied throughput lifetime of the storage device in MWhc_capital: Capital cost of storage device in AUD/MWh
```
NEMStorageUnderUncertainty.DegradationModel — Typeabstract type DegradationModel <: NEMStorageUnderUncertainty.FormulationNEMStorageUnderUncertainty.NoDegradation — Typestruct NoDegradation <: NEMStorageUnderUncertainty.DegradationModelNo storage degradation modelled in simulations.
NEMStorageUnderUncertainty.StandardArbitrage — Typestruct StandardArbitrage <: NEMStorageUnderUncertainty.StorageModelFormulationSummary
Maximises storage revenue:
- All periods are treated (weighted) equally
- No cycling/throughput limits are modelled
- Revenue is purely defined by the spot price for energy
- Intertemporal SoC constraints are applied, including from
e₀(initial SoC of storage device) toe₁(first modelled SoC)
\[\begin{aligned} \max \quad & \sum_{t \in T}{\tau\lambda_t(p_t-q_t)}\\ \textrm{s.t.} \quad & u_t \in \{0,1\} \\ & p_t \geq 0 \\ & q_t \geq 0 \\ & p_t - \bar{p}\left(1-u_t\right) \leq 0\\ & q_t - \bar{p}u_t \leq 0\\ & \underline{e} \leq e_t \leq \bar{e} \\ & e_t-e_{t-1}- \left( q_t\eta_{charge}\tau\right)+\frac{p_t\tau}{\eta_{discharge}} = 0\\ & e_1 - e_0 - \left( q_1\eta_{charge}\tau\right)+\frac{p_1\tau}{\eta_{discharge}} = 0\\ \end{aligned}\]
NEMStorageUnderUncertainty.StandardArbitrageThroughputLimit — Typestruct StandardArbitrageThroughputLimit <: NEMStorageUnderUncertainty.StorageModelFormulationthroughput_mwh_per_year::Float64
Summary
Maximises storage revenue subject to pro-rata application of throughput limits:
- All periods are treated (weighted) equally
- A throughput limit is modelled, with an annual throughput limit (
d_max) specified- Each simulation includes this limit applied on a pro rata basis (i.e. proportion of year in each model horizon)
d_maxfor a model period is given by (whered₀is the initial storage device throughput): $d_{max} = d_0 + \frac{t_T - t_1 + 5}{60 \times 24 \times 365} \times d_{limit}$d_binding_maxapplies a similar limit to the binding periodd_limitis the throughput limit in MWh/year
- Each simulation includes this limit applied on a pro rata basis (i.e. proportion of year in each model horizon)
- Revenue is purely defined by the spot price for energy
- Intertemporal SoC constraints are applied, including from
e₀(initial SoC of storage device) toe₁(first modelled SoC)
\[\begin{aligned} \max \quad & \sum_{t \in T}{\tau\lambda_t(p_t-q_t)}\\ \textrm{s.t.} \quad & u_t \in \{0,1\} \\ & p_t \geq 0 \\ & q_t \geq 0 \\ & p_t - \bar{p}\left(1-u_t\right) \leq 0\\ & q_t - \bar{p}u_t \leq 0\\ & \underline{e} \leq e_t \leq \bar{e} \\ & e_t-e_{t-1}- \left( q_t\eta_{charge}\tau\right)+\frac{p_t\tau}{\eta_{discharge}} = 0\\ & e_1 - e_0 - \left( q_1\eta_{charge}\tau\right)+\frac{p_1\tau}{\eta_{discharge}} = 0\\ & d_t-d_{t-1} - p_t\tau = 0\\ & d_1 - d_0 - p_1\tau = 0\\ & d_{t_{binding, end}} ≤ d_{binding_{max}} \\ & d_T ≤ d_{max}\\ \end{aligned}\]
NEMStorageUnderUncertainty.StorageModelFormulation — Typeabstract type StorageModelFormulation <: NEMStorageUnderUncertainty.Formulation