Energy Storage

Storages can optionally be set in urbs. They introduce additional variables and constraints, contribute to the cost function but do not increase the index depth of all variables and parameters. For this and all the further features all variables will be written in the full index depth, i.e. for intertemporal models with multiple vertices. For storages the capacity and the charging/discharging power are expanded independently. For each storage one commodity is specified which is stored. It is thus not necessary to specify the commodity as an extra index in the variables and parameters. With added storages the variable vector then reads:

\[\begin{split}x^{\text{T}}=(&\zeta, \underbrace{\rho_{yvct}}_{\text{commodity variables}}, \underbrace{\kappa_{yvp}, \widehat{\kappa}_{yvp}, \tau_{yvpt}, \epsilon^{\text{in}}_{yvcpt}, \epsilon^{\text{out}}_{yvcpt}}_{\text{process variables}}, \underbrace{\kappa_{yaf}, \widehat{\kappa}_{yaf}, \pi^{\text{in}}_{yaft}, \pi^{\text{out}}_{yaft}}_{\text{transmission variables}},\\\\ &\underbrace{\kappa^{\text{c}}_{yvs}, \kappa^{\text{p}}_{yvs}, \widehat{\kappa}^{\text{c}}_{yvs}, \widehat{\kappa}^{\text{p}}_{yvs}, \epsilon^{\text{in}}_{yvst}, \epsilon^{\text{out}}_{yvst}, \epsilon^{\text{con}}_{yvst}}_{\text{storage variables}}).\end{split}\]

Here, the new storage variables \(\kappa^{\text{c,p}}_{yvs}\) and \(\widehat{\kappa}^{\text{c,p}}_{yvs}\) stand for the total and new capacities of storage capacity and power of storage unit \(s\), in modeled year \(y\) at vertex \(v\), respectively, the variables \(\epsilon^{\text{in,out}}_{yvst}\) represent the input and output to storage \(s\) in year \(y\) at vertex \(v\) at time \(t\) and \(\epsilon^{\text{con}}_{yvst}\) the storage state.


The costs are changed in a straightforward way. The invest, fix and variable costs are now summed over the storage capacities, powers and the total amount of charged and discharged commodity in addition to the process indices. As in the case of transmissions there are no qualitative changes to the costs.

Storage Expansion Constraints

Storages are expanded in their capacity and charging and discharging power separately. The respective constraints read:

\[\begin{split}\kappa^{\text{c,p}}_{yvs}&=\sum_{y^{\prime}\in Y\\(s,v,y^{\prime},y)\in O} \widehat{\kappa}^{\text{c,p}}_{y^{\prime}vs} + K_{vs} ~,~~\text{if}~(s,v,y)\in O_{\text{inst}}\\\\ \kappa^{\text{c,p}}_{yvs}&=\sum_{y^{\prime}\in Y\\(s,v,y^{\prime},y)\in O} \widehat{\kappa}^{\text{c,p}}_{y^{\prime}vs}~,~~\text{else},\end{split}\]

where \(\kappa^{\text{c,p}}_{yvs}\) are the total installed capacity and power, repectively, in year \(y\) at site \(v\) of storage \(s\) and \(\widehat{\kappa}^{\text{c,p}}_{yvs}\) the corresponding newly installed storage capacities and powers. Both quantities are then also given an upper and a lower bound via:

\[\begin{split}&\forall y\in Y,~v\in V,~s\in S:\\ &\underline{K}^{\text{c}}_{yvs}\leq \kappa^{\text{c}}_{yvs}\leq \overline{K}^{\text{c}}_{yvs}\\ &\underline{K}^{\text{p}}_{yvs}\leq \kappa^{\text{p}}_{yvs}\leq \overline{K}^{\text{p}}_{yvs}\end{split}\]

Commodity Dispatch Constraints

The commodity unit utilization constraints are expanded by the use of storages.

Amendments to the Vertex Rule

The vertex rule is changed, since additional commodity flows into and out of the storages can occur. The commodity balance function is thus changed to:

\[\begin{split}&\forall y\in Y,~v\in V,~c \in C,~t\in T_m:\\\\ \text{CB}(y,v,c,t)=& \Bigg( \sum_{(y,v,c,p)\in C^{\text{in}}_{y,v,c,p}}\epsilon^{\text{in}}_{yvcpt}+ \sum_{(y,v,s,c)\in C^{\text{in}}_{y,v,s,c}}\epsilon^{\text{in}}_{yvst}+ \sum_{(y,a,f)\in A^{\text{in}}_{v}}\pi^{\text{in}}_{yaft}\\\\ &-\sum_{(y,v,c,p)\in C^{\text{out}}_{yvcp}}\epsilon^{\text{out}}_{vcpt}- \sum_{(y,v,s,c)\in C^{out}_{y,v,s,c}}\epsilon^{\text{out}}_{yvst}- \sum_{(y,a,f)\in A^{\text{out}}_{v}}\pi^{\text{out}}_{yaft} \Bigg)\end{split}\]

Here, the new tuple sets \(C^{\text{in,out}}_{y,v,s,c}\) represent all inputs and outputs in year \(y\) at vertex \(v\) of commodity \(c\) into storage \(s\). The variables \(\epsilon^{\text{in,out}}_{yvst}\) are then the inputs and outputs of commodities to and from storages.

Storage Dispatch Constraints

In a storage the energy content \(\epsilon^{\text{con}}_{yvst}\) has to be calculated. This is achieved by simply adding all inputs to and subtracting all outputs from the storage content at the previous time step \(\epsilon^{\text{con}}_{yvs(t-1)}\):

\[\begin{split}&\forall y\in Y,~v\in V,~s\in S,~t\in T_m:\\ &\epsilon^{\text{con}}_{yvst}=\epsilon^{\text{con}}_{yvs(t-1)}\cdot (1-d_{yvs})^{\Delta t}+e^{\text{in}}_{yvs}\cdot \epsilon^{\text{in}}_{yvst}- \frac{\epsilon^{\text{out}}_{yvst}}{e^{\text{out}}_{yvs}}.\end{split}\]

Here, \(e^{\text{in,out}}_{yvs}\) are the efficiencies for charging and discharging, respectively, and \(d_{yvs}\) is the hourly self discharge rate.

Basic Storage Dispatch Rules

Similar to processes and transmission lines, inputs and outputs are limited by the power capacity of the storage:

\[\begin{split}&\forall y\in Y,~v\in V,~s\in S,~t\in T_m:\\ &\epsilon^{\text{in,out}}_{yvst}\leq\Delta t \cdot \kappa^{\text{p}}_{yvs}.\end{split}\]

Additionally, the storage content is limited by the total storage energy capacity:

\[\begin{split}&\forall y\in Y,~v\in V,~s\in S,~t\in T_m:\\ &\epsilon^{\text{con}}_{yvst}\leq\kappa^{\text{c}}_{yvs}.\end{split}\]

Initial and Final State

In order to avoid windfall profits for the optimization by, e.g., emptying a storage over the model horizon, the initial and final storage content are linked via:

\[\begin{split} &\forall y\in Y,~v\in V,~s\in S:\\ &\epsilon_{yvs(t_1)}^\text{con} \leq \epsilon_{yvst_N}^\text{con},\end{split}\]

where \(t_{1,N}\) are the initial and final modeled timesteps, respectively. The inequality simplifies the model solving by relaying an otherwise unnecessarily strict constraint. A small disadvantage arises when the system can gain costs or save CO2 by filling a storage. This case is, however, not too common. It is additionally possible for the user to fix the initial storage content via:

\[\begin{split} &\forall y\in Y,~v\in V,~s\in S:\\ &\epsilon_{yvs(t_1)}^\text{con} = \kappa_{yvs}^\text{c} I_{yvs},\end{split}\]

where \(I_{yvs}\) is the fraction of the total storage capacity that is filled at the beginning of the modeling period.

Fixed Energy/Power Ratio

It is sometimes desirable to fix the ratio between energy capacity and charging/discharging power for a given storage. This is modeled by the possibility to set a linear dependence between the capacities through a user-defined “energy to power ratio” \(k_{yvs}^\text{E/P}\). Note that this constraint is only active for the storages with a positive value under the column “ep-ratio” in the input file, and when this value is not given, the power and energy capacities can be sized independently

\[\begin{split} &\forall y\in Y,~v\in V,~s\in S:\\ &\kappa_{yvs}^c = \kappa_{yvs}^p k_{yvs}^\text{E/P}.\end{split}\]

This concludes the storage feature.