Skip to content

Commit

Permalink
try some updates to documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Lavin committed Feb 7, 2024
1 parent 676061f commit ee9435b
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 54 deletions.
108 changes: 56 additions & 52 deletions docs/src/formulation_library/StorageDispatchWithReserves.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ StorageDispatchWithReserves

## Attributes

- `"reservation"`: Forces the battery to operate exclusively on charge or discharge mode through the entire operation interval. We recommend setting this to false for models with relatively large resolutions (e.g., 1-Hr) since the storage can take simultaneous charge or discharge positions on average over the period.
- `"cycling_limits"`: This limits the battery's energy cycling. The calculation uses the total energy charge/discharge and the number of cycles. Currently, the formulation only supports a fixed value per operation period. Additional variables for [`StorageChargeCyclingSlackVariable`](@ref) and [`StorageDischargeCyclingSlackVariable`](@ref) are included in the model if `use_slacks` is set to `true`.
- `"energy_target"`: Set a target at the end of the model horizon for the state of charge. Currently, the formulation only supports a fixed value per operation period. Additional variables for [`StorageEnergyShortageVariable`](@ref) and [`StorageEnergySurplusVariable`](@ref) are included in the model if `use_slacks` is set to `true`.
- `"reservation"`: Forces the storage to operate exclusively on charge or discharge mode through the entire operation interval. We recommend setting this to false for models with relatively longer time resolutions (e.g., 1-Hr) since the storage can take simultaneous charge or discharge positions on average over the period.
- `"cycling_limits"`: This limits the storage's energy cycling. A single cycle is fully charing and discharge the storage once. The calculation uses the total energy charge/discharge and the number of cycles. Currently, the formulation only supports a fixed value per operation period. Additional variables for [`StorageChargeCyclingSlackVariable`](@ref) and [`StorageDischargeCyclingSlackVariable`](@ref) are included in the model if `use_slacks` is set to `true`.
- `"energy_target"`: Set a target at the end of the model horizon for the storage's state of charge. Currently, the formulation only supports a fixed value per operation period. Additional variables for [`StorageEnergyShortageVariable`](@ref) and [`StorageEnergySurplusVariable`](@ref) are included in the model if `use_slacks` is set to `true`.

!!! warning

Combining the cycle limits and energy target attributes is not recommended. Both
attributes impose constraints on the energy; there is no guarantee that the constraints can be satisfied simultaneously.
Combining cycle limits and energy target attributes is not recommended. Both
attributes impose constraints on energy. There is no guarantee that the constraints can be satisfied simultaneously.

- `"complete_coverage"`: This attribute implements constraints that require the battery to cover the sum of all the ancillary services it participates in simultaneously. It is equivalent to holding energy in case all the services get deployed simultaneously. This constraint is added to the constraints that cover each service independently and corresponds to a more conservative operation regime.
- `"regularization"`: This attribute smooths the charge/discharge profiles to avoid bang-bang solutions via a penalty on the absolute value of the intra-temporal variations of the charge and discharge power. The model can stall in models with large amounts of curtailment or long periods with negative or zero prices due to numerical degeneracy. The regularization term is scaled by the power limits to normalize the term and avoid additional penalties to larger storage units.
- `"regularization"`: This attribute smooths the charge/discharge profiles to avoid bang-bang solutions via a penalty on the absolute value of the intra-temporal variations of the charge and discharge power. Solving for optimal storage dispatch can stall in models with large amounts of curtailment or long periods with negative or zero prices due to numerical degeneracy. The regularization term is scaled by the storage device's power limits to normalize the term and avoid additional penalties to larger storage units.

!!! danger

Expand All @@ -32,25 +32,29 @@ StorageDispatchWithReserves
&\mathcal{P}^{\text{as}_\text{dn}} & \text{Down Ancillary Service Products Set}\\
&\mathcal{P}^{\text{as}} := \bigcup\left\{ \mathcal{P}^{\text{as}_\text{up}}, \mathcal{P}^{\text{as}_\text{dn}}\right\} & \text{Ancillary Service Products Set}\\
&\mathcal{T} := \{1,\dots,T\} & \text{Time steps} \\
&\mathcal{S} := \{1,\dots,S\} & \text{Storage devices} \\
\end{align*}
```

### Parameters

#### Operational Parameters
```{r echo=FALSE, eval=FALSE}

Check warning on line 42 in docs/src/formulation_library/StorageDispatchWithReserves.md

View workflow job for this annotation

GitHub Actions / build (1, x86, ubuntu-latest)

[JuliaFormatter] reported by reviewdog 🐶 Raw Output: docs/src/formulation_library/StorageDispatchWithReserves.md:42:+
# I do not understand the indexing of st. I think what is meant is to index by device and timestep, so I put that, but feel free to correct.
```

```math
\begin{align*}
&P^{max,ch}_{st} &\text{Max Charge Power Storage [MW]}\\
&P^{max,ds}_{st} &\text{Max Discharge Power Storage [MW]}\\
&\eta^{ch}_{st} &\text{Charge Efficiency Storage [\%/hr]}\\
&\eta^{ds}_{st} &\text{Discharge Efficiency Storage [\%/hr]}\\
&P^{max,ch}_{s, t} &\text{Max Charge Power Storage [MW]}\\
&P^{max,ds}_{s, t} &\text{Max Discharge Power Storage [MW]}\\
&\eta^{ch}_{s, t} &\text{Charge Efficiency Storage [\%/hr]}\\
&\eta^{ds}_{s, t} &\text{Discharge Efficiency Storage [\%/hr]}\\
&R^{*}_{p, t} &\text{Ancillary Service deployment Forecast at time $t$ for service $p \in \mathcal{P}^{\text{as}}$ [\$/MW]}\\
&E^{max}_{st} &\text{Max Energy Storage Capacity [MWh]}\\
&E^{st}_{0} &\text{Storage initial energy [MWh]}\\
&E^{st}_{T} &\text{Storage Energy Target at the end of the horizon, i.e., time-step $T$ [MWh]}\\
&E^{max}_{s, t} &\text{Max Energy Storage Capacity [MWh]}\\
&E^{s, t}_{0} &\text{Storage initial energy [MWh]}\\
&E^{s, t}_{T} &\text{Storage Energy Target at the end of the horizon, i.e., time-step $T$ [MWh]}\\
&\Delta t &\text{Timestep length}\\
&C_{st} & \text{Maximum number of cycles over the horizon.} \\
&C_{s, t} & \text{Maximum number of cycles over the horizon.} \\
&& \text{For DA the value is fixed to 3 and in RT the value depends on the DA allocation of cycles} \\
&N_{p} & \text{Number of periods of compliance to supply an AS.}\\
&& \text{For example Spinning reserve has 12 for 1 hour of compliance when $\Delta_t$ is 5-minutes.}
Expand All @@ -73,66 +77,66 @@ StorageDispatchWithReserves

```math
\begin{align*}
&p^{st, ch}_{t} & \in [0, P^{max,ch}_{st}] &\quad\text{Expected Storage charging power}\\
&p^{st, ds}_{t} & \in [0, P^{max,ds}_{st}] &\quad\text{Expected Storage discharging power}\\
&e^{st}_{t} & \in [0, E^{max}_{st}] &\quad \text{Expected Storage Energy}\\
&\text{ss}^{st}_{t} & \in \{ 0, 1 \} &\quad \text{Charge/Discharge status Storage. Used when \texttt{"reservation" => true}}\\
&sb_{stc,p,t} & \in [0, P^{max,ch}_{st}] & \quad \text{Ancillary service fraction assigned to Storage Charging}\\
&sb_{std,p,t} & \in [0, P^{max,ds}_{st}] & \quad \text{Ancillary service fraction assigned to Storage Discharging}\\
&e^{st+} & \in [0, E^{max}_{st}] &\quad \text{Storage Energy Surplus above target. Used when \texttt{use\_slacks = true}}\\
&e^{st-} & \in [0, E^{max}_{st}] &\quad \text{Storage Energy Shortage below target. Used when \texttt{use\_slacks = true}}\\
&c^{ch-} & \in [0, T C_{st}] &\quad \text{Charging Cycling Shortage. Used when \texttt{use\_slacks = true}}\\
&c^{ds-} & \in [0, T C_{st}] &\quad \text{Discharging Cycling Shortage. Used when \texttt{use\_slacks = true}}\\
&z^{st, ch}_{t} & \in [0, P^{max,ch}_{st}] &\quad \text{Regularization charge variable. Used when \texttt{"regularization" => true}}\\
&z^{st, ds}_{t} & \in [0, P^{max,ds}_{st}] &\quad \text{Regularization discharge variable. Used when \texttt{"regularization" => true}}\\
&p^{st, ch}_{t} & \in [0, P^{max,ch}_{s, t}] &\quad\text{Expected Storage charging power}\\
&p^{st, ds}_{t} & \in [0, P^{max,ds}_{s, t}] &\quad\text{Expected Storage discharging power}\\
&e^{s, t}_{t} & \in [0, E^{max}_{s, t}] &\quad \text{Expected Storage Energy}\\
&\text{ss}^{s, t}_{t} & \in \{ 0, 1 \} &\quad \text{Charge/Discharge status Storage. Used when \texttt{"reservation" => true}}\\
&sb_{stc,p,t} & \in [0, P^{max,ch}_{s, t}] & \quad \text{Ancillary service fraction assigned to Storage Charging}\\
&sb_{std,p,t} & \in [0, P^{max,ds}_{s, t}] & \quad \text{Ancillary service fraction assigned to Storage Discharging}\\
&e^{st+} & \in [0, E^{max}_{s, t}] &\quad \text{Storage Energy Surplus above target. Used when \texttt{use\_slacks = true}}\\
&e^{st-} & \in [0, E^{max}_{s, t}] &\quad \text{Storage Energy Shortage below target. Used when \texttt{use\_slacks = true}}\\
&c^{ch-} & \in [0, T C_{s, t}] &\quad \text{Charging Cycling Shortage. Used when \texttt{use\_slacks = true}}\\
&c^{ds-} & \in [0, T C_{s, t}] &\quad \text{Discharging Cycling Shortage. Used when \texttt{use\_slacks = true}}\\
&z^{st, ch}_{t} & \in [0, P^{max,ch}_{s, t}] &\quad \text{Regularization charge variable. Used when \texttt{"regularization" => true}}\\
&z^{st, ds}_{t} & \in [0, P^{max,ds}_{s, t}] &\quad \text{Regularization discharge variable. Used when \texttt{"regularization" => true}}\\
\end{align*}
```

### Model

```math
\begin{aligned}
\min_{\substack{\boldsymbol{p}^{st, ch}, \boldsymbol{p}^{st, ds}, \boldsymbol{e}^{st}, \\ e^{st+}, e^{st-}, c^{ch-} + c^{ds-}}}
& \rho^{e+} e^{st+} + \rho^{e-} e^{st-} + \rho^{c} \left(c^{ch-} + c^{ds-} \right) + \rho^{z} \left(\frac{z^{ch}}{P^{max,ch}_{st}} + \frac{z^{ds}}{P^{max,ds}_{st}} \right)\\
& +\Delta t \sum_{t \in \mathcal{T}} \text{VOM}_{st} \left ( \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} \right) + \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t}\right) \right) &
\min_{\substack{\boldsymbol{p}^{st, ch}, \boldsymbol{p}^{st, ds}, \boldsymbol{e}^{s, t}, \\ e^{st+}, e^{st-}, c^{ch-} + c^{ds-}}}
& \rho^{e+} e^{st+} + \rho^{e-} e^{st-} + \rho^{c} \left(c^{ch-} + c^{ds-} \right) + \rho^{z} \left(\frac{z^{ch}}{P^{max,ch}_{s, t}} + \frac{z^{ds}}{P^{max,ds}_{s, t}} \right)\\
& +\Delta t \sum_{t \in \mathcal{T}} \text{VOM}_{s, t} \left ( \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} \right) + \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t}\right) \right) &
\end{aligned}
```

```math
\begin{aligned}
\text{s.t.} & &\\
&\text{Power Limit Constraints.}&\\
&p^{st, ch}_{t} + \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} sb_{stc,p,t} \leq (1 - \text{ss}^{st}_{t})P^{max,ch}_{st} & \quad \forall t \in \mathcal{T} \\
&p^{st, ch}_{t} + \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} sb_{stc,p,t} \leq (1 - \text{ss}^{s, t}_{t})P^{max,ch}_{s, t} & \quad \forall t \in \mathcal{T} \\
& p^{st, ch}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} sb_{stc,p,t} \geq 0 & \quad \forall t \in \mathcal{T}\\
& p^{st, ds}_{t} + \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} sb_{std,p,t} \leq \text{ss}^{st}_{t}P^{max,ds}_{st} & \forall t \in \mathcal{T}\\
& p^{st, ds}_{t} + \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} sb_{std,p,t} \leq \text{ss}^{s, t}_{t}P^{max,ds}_{s, t} & \forall t \in \mathcal{T}\\
& p^{st, ds}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} sb_{std,p,t} \geq 0 & \forall t \in \mathcal{T}\\
&\text{Energy Storage Limit Constraints}&\\
&e^{st}_{t} \leq E^{max}_{st} & \forall t \in \mathcal{T}\\
& e^{st}_{t} \geq E^{min}_{st} & \forall t \in \mathcal{T}\\
&e^{s, t}_{t} \leq E^{max}_{s, t} & \forall t \in \mathcal{T}\\
& e^{s, t}_{t} \geq E^{min}_{s, t} & \forall t \in \mathcal{T}\\
&\text{Energy Bookkeeping constraints}&\\
& E^{st}_{0} + \Delta t \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,1} sb_{stc,p,1} + p^{st,ch}_{1} - \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,1} sb_{stc,p,1}\right)\eta^{ch}_{st}&\\
&-\Delta t\left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,1} sb_{std,p,1} + p^{st,ds}_{1} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{std,p,1}\right)\frac{1}{\eta^{ds}_{st}}=e^{st}_{1}\\
&e^{st}_{t-1} + \Delta t \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{stc,p,t}\right)\eta^{ch}_{st}&\\
&-\Delta t\left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{std,p,t}\right)\frac{1}{\eta^{ds}_{st}} =e^{st}_{t} & \forall t \in \mathcal{T} \setminus {1}\\
& E^{s, t}_{0} + \Delta t \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,1} sb_{stc,p,1} + p^{st,ch}_{1} - \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,1} sb_{stc,p,1}\right)\eta^{ch}_{s, t}&\\
&-\Delta t\left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,1} sb_{std,p,1} + p^{st,ds}_{1} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{std,p,1}\right)\frac{1}{\eta^{ds}_{s, t}}=e^{s, t}_{1}\\
&e^{s, t}_{t-1} + \Delta t \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{stc,p,t}\right)\eta^{ch}_{s, t}&\\
&-\Delta t\left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{std,p,t}\right)\frac{1}{\eta^{ds}_{s, t}} =e^{s, t}_{t} & \forall t \in \mathcal{T} \setminus {1}\\
&\text{End of period energy target constraint. Used when \texttt{"energy\_target" => true}}&\\
&e^{st}_{T} + e^{st+} - e^{st-} = E^{st}_{T}&\\
&e^{s, t}_{T} + e^{st+} - e^{st-} = E^{s, t}_{T}&\\
&\text{Storage Cycling Limits Constraints. Used when \texttt{"cycling\_limits" => true}}&\\
& \sum_{t \in \mathcal{T}} \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t}\right)\frac{1}{\eta^{ds}_{st}} \Delta t - c^{ds-} \leq C_{st} E^{max}_{st} &\\
& \sum_{t \in \mathcal{T}} \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} \right)\eta^{ch}_{st} \Delta t - c^{ch-} \leq C_{st} E^{max}_{st} \\
& \sum_{t \in \mathcal{T}} \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t}\right)\frac{1}{\eta^{ds}_{s, t}} \Delta t - c^{ds-} \leq C_{s, t} E^{max}_{s, t} &\\
& \sum_{t \in \mathcal{T}} \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} \right)\eta^{ch}_{s, t} \Delta t - c^{ch-} \leq C_{s, t} E^{max}_{s, t} \\
&\text{Single Ancillary Services Energy Coverage}&\\
& sb_{stc,p,t} \eta^{ch}_{st} N_{p} \Delta t \le E_{st}^{max} - e^{st}_{t} & \forall p \in \mathcal{P}^{as_{dn}} \ \forall t \in \mathcal{T}\\
& sb_{std,p,t} \frac{1}{\eta^{ds}_{st}} N_{p} \Delta t \leq e^{st}_{t}- E^{min}_{st} & \forall p \in \mathcal{P}^{as_{up}}, \ \forall t \in \mathcal{T}\\
& sb_{stc,p,1} \eta^{ch}_{st} N_{p} \Delta t \le E_{st}^{max} - e^{st}_0 & \forall p \in \mathcal{P}^{as_{dn}}\\
& sb_{stc,p,t} \eta^{ch}_{st} N_{p} \Delta t \le E_{st}^{max} - e^{st}_{t-1} & \forall p \in \mathcal{P}^{as_{dn}} \ \forall t \in \mathcal{T} \setminus 1\\
&sb_{std,p,1} \frac{1}{\eta^{ds}_{st}} N_{p} \Delta t \leq e^{st}_0 - E^{min}_{st} & \forall p \in \mathcal{P}^{as_{up}}\\
& sb_{std,p,t} \frac{1}{\eta^{ds}_{st}} N_{p} \Delta t \leq e^{st}_{t-1} - E^{min}_{st} & \forall p \in \mathcal{P}^{as_{up}}, \ \forall t \in \mathcal{T} \setminus 1 \\
& sb_{stc,p,t} \eta^{ch}_{s, t} N_{p} \Delta t \le E_{s, t}^{max} - e^{s, t}_{t} & \forall p \in \mathcal{P}^{as_{dn}} \ \forall t \in \mathcal{T}\\
& sb_{std,p,t} \frac{1}{\eta^{ds}_{s, t}} N_{p} \Delta t \leq e^{s, t}_{t}- E^{min}_{s, t} & \forall p \in \mathcal{P}^{as_{up}}, \ \forall t \in \mathcal{T}\\
& sb_{stc,p,1} \eta^{ch}_{s, t} N_{p} \Delta t \le E_{s, t}^{max} - e^{s, t}_0 & \forall p \in \mathcal{P}^{as_{dn}}\\
& sb_{stc,p,t} \eta^{ch}_{s, t} N_{p} \Delta t \le E_{s, t}^{max} - e^{s, t}_{t-1} & \forall p \in \mathcal{P}^{as_{dn}} \ \forall t \in \mathcal{T} \setminus 1\\
&sb_{std,p,1} \frac{1}{\eta^{ds}_{s, t}} N_{p} \Delta t \leq e^{s, t}_0 - E^{min}_{s, t} & \forall p \in \mathcal{P}^{as_{up}}\\
& sb_{std,p,t} \frac{1}{\eta^{ds}_{s, t}} N_{p} \Delta t \leq e^{s, t}_{t-1} - E^{min}_{s, t} & \forall p \in \mathcal{P}^{as_{up}}, \ \forall t \in \mathcal{T} \setminus 1 \\
&\text{Complete Ancillary Services Energy Coverage. Used when \texttt{"complete\_coverage" => true}}&\\
& \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} sb_{stc,p,t} \eta^{ch}_{st} N_{p} \Delta t \le E_{st}^{max} - e^{st}_{t} & \forall t \in \mathcal{T}\\
& \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} sb_{std,p,t} \frac{1}{\eta^{ds}_{st}} N_{p} \Delta t \leq e^{st}_{t}- E^{min}_{st} & \forall t \in \mathcal{T}\\
& \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} sb_{stc,p,1} \eta^{ch}_{st} N_{p} \Delta t \le E_{st}^{max} - e^{st}_0 &\\
&\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} sb_{stc,p,t} \eta^{ch}_{st} N_{p} \Delta t \le E_{st}^{max} - e^{st}_{t-1} & \forall t \in \mathcal{T} \setminus 1\\
&\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} sb_{std,p,1} \frac{1}{\eta^{ds}_{st}} N_{p} \Delta t \leq e^{st}_0- E^{min}_{st} & \\
& \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} sb_{std,p,t} \frac{1}{\eta^{ds}_{st}} N_{p} \Delta t \leq e^{st}_{t-1}- E^{min}_{st} & \forall t \in \mathcal{T} \setminus 1\\
& \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} sb_{stc,p,t} \eta^{ch}_{s, t} N_{p} \Delta t \le E_{s, t}^{max} - e^{s, t}_{t} & \forall t \in \mathcal{T}\\
& \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} sb_{std,p,t} \frac{1}{\eta^{ds}_{s, t}} N_{p} \Delta t \leq e^{s, t}_{t}- E^{min}_{s, t} & \forall t \in \mathcal{T}\\
& \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} sb_{stc,p,1} \eta^{ch}_{s, t} N_{p} \Delta t \le E_{s, t}^{max} - e^{s, t}_0 &\\
&\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} sb_{stc,p,t} \eta^{ch}_{s, t} N_{p} \Delta t \le E_{s, t}^{max} - e^{s, t}_{t-1} & \forall t \in \mathcal{T} \setminus 1\\
&\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} sb_{std,p,1} \frac{1}{\eta^{ds}_{s, t}} N_{p} \Delta t \leq e^{s, t}_0- E^{min}_{s, t} & \\
& \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} sb_{std,p,t} \frac{1}{\eta^{ds}_{s, t}} N_{p} \Delta t \leq e^{s, t}_{t-1}- E^{min}_{s, t} & \forall t \in \mathcal{T} \setminus 1\\
&\text{Regularization Constraints. Used when \texttt{"regularization" => true}}&\\
& \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t-1} sb_{stc,p,t-1} + p^{st,ch}_{t-1} - \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t-1} sb_{stc,p,t-1}\right) &\\
& - \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{stc,p,t}\right) \le z^{st, ch}_{t} & \forall t \in \mathcal{T} \setminus 1\\
Expand Down
4 changes: 2 additions & 2 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ CurrentModule = StorageSystemsSimulations
## Overview

`StorageSimulations.jl` is a `PowerSimulations.jl` extension to support formulations and models
related to energ storage.
related to energy storage.

Operational Storage Model can have multiple combinations of different restrictions. For instance,
An Operational Storage Model can have multiple combinations of restrictions. For instance,
it might be relevant to a study to consider cycling limits or employ energy targets coming from a planning model. To manage all these variations `StorageSimulations.jl` heavily uses the `DeviceModel` attributes feature.

For example, the formulation `StorageDispatchWithReserves` can be parametrized as follows:
Expand Down

0 comments on commit ee9435b

Please sign in to comment.