Mathematical formulation

ZEN-garden optimizes the design and operation of energy system models to investigate transition pathways towards decarbonization. The optimization problem is in general formulated as a mixed-integer linear program (MILP), but reduced to a linear program (LP) if the binary variables are not needed. In the following, we provide an overview of the objective function and constraints of the optimization problem.

Objective function

Two objective functions are available:

  1. minimize cumulative net present cost

  2. minimize cumulative emissions

Minimizing net present cost

The net present cost \(NPC_y\) of the energy system is minimized over the entire planning horizon \(y \in {\mathcal{Y}}\).

(1)\[\mathrm{min} \quad \sum_{y\in\mathcal{Y}} NPC_y\]

We define \(y\) as a planning period rather than an actual year and \(dy\) as the interval between planning periods. For example, if \(dy=2\) the optimization is conducted every second year. The net present cost \(NPC_y\) of each planning period \(y\in[y_0,\mathcal{Y}-1]\), where \(y_0\) is the first planning period, are computed by discounting the total energy system cost of each planning period \(C_y\) with a constant discount rate \(r\):

(2)\[NPC_y = \sum_{i \in [0,dy-1]} \left( \dfrac{1}{1+r} \right)^{\left(dy (y-y_0) + i \right)} C_y\]

Hence, we discount each year of the time horizon, also the years for which the optimization is not conducted. Moreover, we assume that the optimization is only conducted until the end of the first year of the last planning period. The last period of the planning horizon \(Y=\max(y)\) is therefore only counted as a single year regardless of the interval between planning periods and the net present cost \(NPC_{\mathcal{Y}}\) is defined as:

(3)\[NPC_{\mathcal{Y}} = \left( \dfrac{1}{1+r} \right)^{\left(dy (\mathcal{Y}-y_0) \right)} C_{\mathcal{Y}}\]

For example, suppose \(dy=2\) meaning that every planning period is 2 years long. With an initial planning period \(y_0=0\), the energy system costs \(C_1\) occur in planning period 1, meaning in years 2 and 3. Therefore, math:C_1 must be discounted according to the years they are incurred, relative to the initial time start, which are years 2 and 3.

The total cost \(C_y\) includes the annual capital expenditures \(CAPEX_y\) and the operational expenditures for operating technologies \(OPEX_y^{t}\), importing and exporting carriers \(OPEX_y^\mathrm{c}\), and the cost of carbon emissions \(OPEX_y^\mathrm{e}\).

(4)\[C_y = CAPEX_y+OPEX_y^\mathrm{t}+OPEX_y^\mathrm{c}+OPEX_y^\mathrm{e}\]

Capital expenditures

\(CAPEX_y\) accounts for the annual cash flows due to capacity investments \(A_{h,p,y}\) in technologies:

(5)\[CAPEX_y = \sum_{h\in\mathcal{H}} \sum_{p\in\mathcal{P}} A_{h,p,y}\]

Each technology \(h\in\mathcal{H}\) is either a conversion technology \(i\in\mathcal{I}\subseteq\mathcal{H}\), a transport technology \(j\in\mathcal{J}\subseteq\mathcal{H}\) or a storage technology \(k\in\mathcal{K}\subseteq\mathcal{H}\). For sake of simplicity, we index those variables and parameters that apply to all technology types with \(h\). For storage capacities, both the energy and power-rated capacity can be expanded. Conversion and storage technologies are installed and operated on odes \(n\in\mathcal{N}\). Transport technologies are installed and operated on edges \(e\in\mathcal{E}\). We summarize nodes and edges to positions \(p\in\mathcal{P}=\mathcal{N}\cup\mathcal{E}\).

The investment costs are annualized by multiplying the total investment cost with the annuity factor \(f_h\), which is a function of the technology depreciation time \(dp_h\) and the discount rate \(r\):

(6)\[f_h=\frac{\left(1+r\right)^{dp_h}r}{\left(1+r\right)^{dp_h}-1}\]

The annual cash flows accrue over the technology deprecation time \(dp_h\) and comprise the capital investment cost of newly installed and existing technology capacities \(I_{h,p,y}\) and \(i_{h,p,y}^\mathrm{ex}\). The annual capital expenditure \(A_{h,p,y}\) for technology \(h\in\mathcal{H}\) in position \(p\in\mathcal{P}\) and period \(y\in\mathcal{Y}\) are computed as:

(7)\[A_{h,p,y}= f_h\left(\left(\sum_{\tilde{y}= \max\left(y_0,y-\lceil\frac{dp_h}{dy}\rceil+1\right)}^y I_{h,p,\tilde{y}} \right)+ \left(\sum_{\hat{y}=\psi \left(y-\lceil\frac{dp_h}{dy}\rceil+1\right)}^ {\psi(y_0-1)} i_{h,p,y}^\mathrm{ex}\right)\right)\]

where \(\lceil\cdot\rceil\) is the ceiling function and \(\psi(y)\) is a function that maps the planning period \(y\) to the actual year.

Note

The depreciation time \(dp_h\) is an optional parameter that reflects the time range for which technology investments have to be paid back. In case the depreciation time is not defined or not needed, the default value will be set to the technology lifetime.

The capital investment cost \(I_{h,p,y}\) for conversion technology \(i\in\mathcal{I}\) is calculated as the product of the unit cost of capital investment \(\alpha_{i,y}\) and the capacity addition \(\Delta S_{i,n,y}\) on each node \(n\in\mathcal{N}\):

(8)\[I_{i,n,y} = \alpha_{i,y} \Delta S_{i,n,y}\]

Note

The capex of conversion technologies can also be approximated by a piecewise linear approximation as described in Piece-wise affine input data and Piecewise affine approximation of capital expenditures.

For existing conversion technology capacities \(s_{h,n,y}^{ex}\) that were installed before \(y_0\), we apply the unit cost of the first investment period \(\alpha_{h,y_0}\):

(9)\[i^\mathrm{ex}_{i,n,y} = \alpha_{i,y_0} \Delta s^\mathrm{ex}_{i,n,y}\]

For transport technologies \(j\in\mathcal{J}\), the unit investment cost \(\alpha_{j,e,y}\) can be defined 1) through a distance independent unit cost of capital investment \(\alpha^\mathrm{const}_{j,y}\) ((10)) or 2) a distance dependent unit cost of capital investment \(\alpha^\mathrm{dist}_{j,e,y}\) which is multiplied by the distance \(h_{j,e}\) of the corresponding edge \(e\in\mathcal{E}\) ((11)).

(10)\[\alpha_{j,e,y} = \alpha^\mathrm{const}_{j,y}\]
(11)\[\alpha_{j,e,y} = \alpha^\mathrm{dist}_{j,e,y} h_{j,e}\]

Note

Are both, a distance independent and a distance dependent unit cost factor defined, the distance dependent unit cost is used to determine the unit investment cost \(\alpha_{j,e,y}\).

The total capital investment cost \(A_{h,p,y}\) for each transport technology \(i\in\mathcal{I}\) is calculated as the product of the unit cost of capital investment \(\alpha_{j,y}\) multiplied by the capacity addition \(\Delta S_{j,e,y}\) on each edge \(e\in\mathcal{E}\):

(12)\[I_{j,e,y} = \alpha_{j,e,y} \Delta S_{j,e,y}\]

It is also possible, to apply both, a distance independent and a distance dependent cost term by setting double_capex_transport=True in your system.json. Please note that using double_capex_transport=True introduces binary variables. For more information on the distance dependent unit cost of capital investment refer to Distance-dependent capital investment cost for transport technologies.

For existing transport technology capacities \(s_{j,e,y}\) that were installed before \(y_0\), we apply the unit cost of the first investment period \(\alpha_{j,y_0}\):

(13)\[i^\mathrm{ex}_{j,e,y} = \alpha_{j,e,y_0} \Delta s^\mathrm{ex}_{j,e,y}\]

The total investment cost for each storage technology \(k\in\mathcal{K}\) is the product of the unit cost of capital investment and the capacity addition for both the power-rated capacity (\(\alpha_{k,y}\) and \(\Delta S_{k,n,y}\)) and the energy-rated capacity (\(\alpha^\mathrm{e}_{k,y}\) and \(\Delta S^\mathrm{e}_{k,n,y}\)).

(14)\[I_{k,n,y} = \alpha_{k,y} \Delta S_{k,n,y} + \alpha^\mathrm{e}_{k,y} \Delta S^\mathrm{e}_{k,n,y}\]

For existing storage technology capacities \(s_{k,n,y}\) that were installed before \(y_0\), we apply the unit cost of the first investment period \(\alpha_{k,y_0}\) and \(\alpha^\mathrm{e}_{k,y_0}\):

(15)\[i^\mathrm{ex}_{k,n,y} = \alpha_{k,y_0} \Delta s^\mathrm{ex}_{k,n,y}\]

Operational expenditures

The annual operational expenditure for technology operation \(OPEX_y^\mathrm{t}\) includes the variable operational costs of the technologies \(OPEX_y^\mathrm{t,v}\) and the fixed operational expenditure for the technology operation \(OPEX_y^\mathrm{t,f}\).

(16)\[OPEX_y^\mathrm{t} = OPEX_y^\mathrm{t,v} + OPEX_y^\mathrm{t,f}.\]

Operational expenditures technology

The fixed technology operational expenditures \(OPEX_y^\mathrm{f}\) are the product of the specific fixed operational expenditures \(\gamma_{h,y}\) and the capacity \(S_{h,p,y}\), summed over all technologies and positions \(p\in\mathcal{P}\):

(17)\[OPEX_y^\mathrm{f} = \sum_{h\in\mathcal{H}}\sum_{p\in\mathcal{P}} \gamma_{h,y}S_{h,p,y}+\sum_{k\in\mathcal{K}} \sum_{n\in\mathcal{N}}\gamma^\mathrm{e}_{k,y}S^\mathrm{e}_{k,n,y}.\]

The variable technology operational expenditures \(OPEX_y^\mathrm{t,v}\) are the sum of the variable operational expenditures of each technology over the entire year, where each timestep is multiplied by the time step duration \(\tau_t\):

(18)\[OPEX_y^\mathrm{t,v} = \sum_{t\in\mathcal{T}}\tau_t \bigg(\sum_{h\in\mathcal{H}} \sum_{p\in\mathcal{P}} O^\mathrm{t}_{h,p,t,y} \bigg).\]

For conversion technologies \(i \in \mathcal{I}\), the variable operational expenditure are the product of the specific variable operational expenditure \(\beta_{h,y}\) and the reference flows \(G_{i,n,t,y}^\mathrm{r}\):

(19)\[O^\mathrm{t}_{h,t,y} = \beta_{i,y} G_{i,n,t,y}^\mathrm{r}\]

Similarly, for transport technologies \(j \in \mathcal{J}\), the variable operational expenditures are the product of the specific variable operational expenditure \(\beta_{j,y}\) and the reference flows \(F_{j,e,t,y}\):

(20)\[O^\mathrm{t}_{j,t,y} = \beta_{j,y} F_{j,e,t,y}\]

Finally, for storage technologies \(k \in \mathcal{K}\), the variable operational expenditure are the product of the charge and discharge cost \(\beta^\mathrm{charge}_{k,y}\) and \(\beta^\mathrm{discharge}_{k,y}\) multiplied by the storage charge \(\underline{H}_{k,n,t,y}\) and discharge \(\overline{H}_{k,n,t,y}\), respectively:

(21)\[O^\mathrm{t}_{k,t,y} = \beta^\mathrm{charge}_{k,y} \underline{H}_{k,n,t,y} + \beta^\mathrm{discharge}_{k,y} \overline{H}_{k,n,t,y}\]

Operational expenditures carrier

The operational carrier cost \(OPEX_y^\mathrm{c}\) are the sum of the node- and time dependent carrier cost \(O^\mathrm{c}_{c,n,t,y}\) for all carriers multiplied by the time step duration \(\tau_t\):

(22)\[OPEX_y^\mathrm{c} = \sum_{c\in\mathcal{C}}\sum_{n\in\mathcal{N}} \sum_{t\in\mathcal{T}}\tau_t O^c_{c,n,t,y}.\]

The node- and time dependent carrier costs \(O^c_{c,n,t,y}\) are composed of three terms: the carrier import \(\underline{U}_{c,n,t,y}\) multiplied by the import price \(\underline{u}_{c,n,t,y}\), the carrier export \(\overline{U}_{c,n,t,y}\) multiplied by the export price math:overline{u}_{c,n,t,y}, and the shed demand \(D_{c,n,t,y}\) multiplied by demand shedding price \(\nu_c\):

(23)\[O^c_{c,n,t,y} = \underline{u}_{c,n,t,y}\underline{U}_{c,n,t,y}- \overline{u}_{c,n,t,y}\overline{U}_{c,n,t,y}+\nu_c D_{c,n,t,y}\]

Operational expenditures emissions

The annual operational emission expenditures \(OPEX_y^\mathrm{e}\) are composed of three terms: the annual carbon emissions \(E_y\) multiplied by the carbon emission price \(\mu\), the annual carbon emission overshoot \(E_y^\mathrm{o}\) multiplied by the annual carbon overshoot price \(\mu^\mathrm{o}\), and the budget carbon emission overshoot math:E_y^mathrm{bo} multiplied by the carbon emission budget overshoot price \(\mu^\mathrm{bo}\):

(24)\[OPEX_y^\mathrm{e} = E_y \mu + E_y^\mathrm{o}\mu^\mathrm{o}+E_y^\mathrm{bo}\mu^\mathrm{bo}.\]

For a detailed description on how to use the annual carbon emission overshoot price and the carbon emission budget overshoot price refer to Carbon emission modeling.

Minimizing total emissions

The cumulative carbon emissions at the end of the time horizon \(E^{\mathrm{cum}}_Y\) of the energy system are minimized.

(25)\[\mathrm{min} \quad E^{\mathrm{cum}}_Y\]

The cumulative carbon emissions at the end of the time horizon \(E^{\mathrm{cum}}_Y\) account for the total operational carbon emissions for importing and exporting carriers \(E^\mathrm{carrier}_y\) and for operating technologies \(E^\mathrm{tech}_y\):

(26)\[E_y = E^\mathrm{carrier}_y + E^\mathrm{tech}_y.\]

For a detailed description of the computation of the total operational emissions for importing and exporting carriers, and for operating for operating technologies refer to Emissions constraints.

Energy balance

The sources and sinks of a carrier \(c\in\mathcal{C}\) must be in equilibrium for all carriers at all nodes \(n\in\mathcal{N}\) and in all time steps \(t\in\mathcal{T}\). The source terms for carrier \(c\) on node \(n\) are:

  • the output flow \(\overline{G}_{c,i,n,t,y}\) of all conversion technologies \(i\in\mathcal{I}\) if \(c\in\overline{\mathcal{C}}_i\).

  • the transported flow \(F_{j,e,t,y}\) on ingoing edges \(e\in\underline{\mathcal{E}}_n\) minus the losses \(F^\mathrm{l}_{j,e,t,y}\) for all transport technologies \(j\in\mathcal{J}\) if \(c=c_j^\mathrm{r}\).

  • the discharge flow \(\overline{H}_{k,n,t,y}\) for all storage technologies \(k\in\mathcal{K}\) if \(c=c_k^\mathrm{r}\).

  • the imported flow \(\underline{U}_{c,n,t,y}\).

The sinks of carrier \(c\) on node \(n\) are:

  • the exogenous demand \(d_{c,n,t,y}\) minus the shed demand \(D_{c,n,t,y}\).

  • the input flow \(\underline{G}_{c,i,n,t,y}\) of all conversion technologies \(i\in\mathcal{I}\) if \(c\in\underline{\mathcal{C}}_i\).

  • the transported flow \(F_{j,e',t,y}\) on outgoing edges \(e'\in\overline{\mathcal{E}}_n\) for all transport technologies \(j\in\mathcal{J}\) if \(c=c_j^\mathrm{r}\).

  • the charge flow \(\underline{H}_{k,n,t,y}\) for all storage technologies \(k\in\mathcal{K}\) if \(c=c_k^\mathrm{r}\).

  • the exported flow \(\overline{U}_{c,n,t,y}\).

The energy balance for carrier \(c\in\mathcal{C}\) is then calculated as:

(27)\[0 = -\left(d_{c,n,t,y}-D_{c,n,t,y}\right) + \sum_{i\in\mathcal{I}}\left(\overline{G}_{c,i,n,t,y}- \underline{G}_{c,i,n,t,y}\right) + \sum_{j\in\mathcal{J}}\left(\sum_{e\in\underline{\mathcal{E}}_n}\left(F_{j,e,t,y} - F^\mathrm{l}_{j,e,t,y}\right)-\sum_{e'\in\overline{\mathcal{E}}_n}F_{j,e',t,y}\right) + \sum_{k\in\mathcal{K}}\left(\overline{H}_{k,n,t,y}-\underline{H}_{k,n,t,y}\right)+ \underline{U}_{c,n,t,y} - \overline{U}_{c,n,t,y}.\]

Note

\(\sum_{k\in\mathcal{K}}\left(\overline{H}_{k,n,t,y}-\underline{H}_{k,n,t,y}\right)\) are zero if \(c\neq c^\mathrm{r}_j\) and \(c\neq c^\mathrm{r}_k\), respectively.

The carrier import \(\underline{U}_{c,n,t,y}\) is limited by the carrier import availability \(\underline{a}_{c,n,t,y}\) for all carriers \(c\in\mathcal{C}\) in all nodes \(n\in\mathcal{N}\) and time steps \(t\in\mathcal{T}\):

(28)\[0 \leq \underline{U}_{c,n,t,y} \leq \underline{a}_{c,n,t,y}.\]

In addition, annual carrier import limits can be applied:

(29)\[0 \leq \sum_{t\in\mathcal{T}} \tau_t \underline{U}_{c,n,t,y} \leq \underline{a}^{Y}_{c,n,y}.\]

Similarly, the carrier export \(\overline{U}_{c,n,t,y}\) is limited by the carrier export availability \(\overline{a}_{c,n,t,y}\) for all carriers \(c\in\mathcal{C}\) in all nodes \(n\in\mathcal{N}\) and time steps \(t\in\mathcal{T}\):

(30)\[0 \leq \overline{U}_{c,n,t,y} \leq \overline{a}_{c,n,t,y}.\]

In addition, annual carrier export limits can be applied:

(31)\[0 \leq \sum_{t\in\mathcal{T}} \tau_t \overline{U}_{c,n,t,y} \leq \overline{a}^{Y}_{c,n,y}.\]

Note

You can skip the import and export availability constraints by setting the import and export availabilities to infinity.

Lastly, the following constraint ensures that the shed demand \(D_{c,n,t,y}\) does not exceed the demand \(d_{c,n,t,y}\):

(32)\[0 \leq D_{c,n,t,y} \leq d_{c,n,t,y}.\]

Note

Setting the shed demand cost to infinity forces \(D_{c,n,t,y}=0\) and demand shedding will not be possible. Demand shedding provides a more detailed description on demand shedding.

Emissions constraints

The total annual carrier carbon emissions \(E^\mathrm{carrier}_y\) represent the sum of the carrier carbon emissions \(\theta^\mathrm{carrier}_{c,n,t,y}\):

(33)\[E^\mathrm{carrier}_y = \sum_{t\in\mathcal{T}} \sum_{n\in\mathcal{N}} \sum_{c\in\mathcal{C}} \left( \tau_t \theta^\mathrm{carrier}_{c,n,t,y} \right).\]

The carrier carbon emissions include the operational emissions of importing and exporting carriers \(c\in\mathcal{C}\) (carbon intensity \(\underline{\epsilon}_c\) and \(\overline{\epsilon}_c\)):

(34)\[\theta^\mathrm{carrier}_{c,n,t} = \underline{\epsilon}_c \underline{U}_{c,n,t,y} - \overline{\epsilon}_c \overline{U}_{c,n,t,y}.\]

The total annual technology carbon emissions \(E^\mathrm{tech}_y\) represent the sum of the technology carbon emissions \(\theta^\mathrm{tech}_{h,n,t,y}\):

(35)\[E^\mathrm{tech}_y = \sum_{t\in\mathcal{T}} \sum_{n\in\mathcal{N}} \sum_{h\in\mathcal{H}} \left( \theta^\mathrm{tech}_{h,n,t,y} \tau_t \right).\]

The technology carbon emissions \(\theta^\mathrm{tech}_{h,n,t,y}\) include the emissions for operating the technologies \(h\in\mathcal{H}\) (carbon intensity \(\epsilon_h\)). For conversion technologies \(i\in\mathcal{I}\), the carbon intensity of operating the technology is multiplied with the reference flows \(G_{i,n,t,y}^\mathrm{r}\):

(36)\[\theta^\mathrm{tech}_{i,n,t,y} = \epsilon_i G_{i,n,t,y}^\mathrm{r}.\]

For storage technologies \(k\in\mathcal{K}\), the carbon intensity of operating the technology is multiplied with the storage charge and discharge flows \(\overline{H}_{k,n,t,y}\) and \(\underline{H}_{k,n,t,y}\):

(37)\[\theta^\mathrm{tech}_{k,n,t,y} = \epsilon_k \left( \overline{H}_{k,n,t,y}+\underline{H}_{k,n,t,y} \right).\]

Lastly, for transport technologies \(j\in\mathcal{J}\), the carbon intensity of operating the technology is multiplied with the transported flow \(F_{j,e,t,y}\):

(38)\[\theta^\mathrm{tech}_{k,n,t,y} = \epsilon_j F_{j,e,t,y}.\]

The annual carbon emissions \(E_y\) are limited by the annual carbon emissions limit \(e_y\):

(39)\[E_y - E_{y}^\mathrm{o} \leq e_y.\]

Note that \(e_y\) can be infinite, in which case the constraint is skipped.

\(E_{y}^\mathrm{o}\) is the annual carbon emission limit overshoot and allows exceeding the annual carbon emission limits. However, overshooting the annual carbon emission limits is penalized in the objective function (compare Eq. (24)). This overshoot cost is computed by multiplying the annual carbon emission limit overshoot \(E_{y}^\mathrm{o}\) with the annual carbon emission limit overshoot price \(\mu^\mathrm{o}\). To strictly enforce the annual carbon emission limit (i.e., \(E_{y}^\mathrm{o}=0\)), use an infinite carbon overshoot price \(\mu^\mathrm{o}\).

The cumulative carbon emissions \(E_y^\mathrm{cum}\) are attributed to the end of the year. For the first planning period \(y=y_0\), \(E_y^\mathrm{cum}\) is calculated as:

(40)\[E_y^\mathrm{cum} = E_y.\]

In the subsequent periods \(y>y_0\), \(E_y^\mathrm{c}\) is calculated as:

(41)\[E_y^\mathrm{cum} = E_{y-1}^\mathrm{cum} + \left(d\mathrm{y}-1\right)E_{y-1}+E_y.\]

The cumulative carbon emissions \(E_y^\mathrm{cum}\) are constrained by the carbon emission budget \(e^\mathrm{b}\):

(42)\[E_y^\mathrm{cum} + \left( dy-1 \right) E_{y} - E_{y}^\mathrm{bo} \leq e^\mathrm{b}.\]

Note that \(e^\mathrm{b}\) can be infinite, in which case the constraint is skipped. \(E_y^\mathrm{bo}\) is the cumulative carbon emission overshoot and allows exceeding the carbon emission budget \(e^\mathrm{b}\), where exceeding the carbon emission budget in the last year of the planning horizon \(\mathrm{Y}=\max(y)\) (i.e., \(E_\mathrm{Y}^\mathrm{bo}>0\)) is penalized with the carbon emissions budget overshoot price \(\mu^\mathrm{bo}\) in the objective function (compare Eq. (22)). By setting the carbon emission budget overshoot price to infinite, you can enforce that the cumulative carbon emissions stay below the carbon emission budget \(e^\mathrm{b}\) across all years (i.e., \(E_\mathrm{y}^\mathrm{bo} = 0 ,\forall y\in\mathcal{Y}\)).

Operational constraints

The conversion factor \(\eta_{i,c,t,y}\) describes the ratio between the carrier flow \(c\in\mathcal{C}\) and the reference carrier flow \(G_{i,n,t,y}^\mathrm{r}\) of a conversion technology \(i\in\mathcal{I}\). If the carrier flow is an input carrier, i.e. \(c\in\underline{\mathcal{C}}_i\):

\[\eta_{i,c,t,y} = \frac{\underline{G}_{c,i,n,t,y}^{\mathrm{d}}}{G_{i,n,t,y}^\mathrm{r}}.\]

If the carrier flow is an output carrier, i.e. \(c\in\overline{\mathcal{C}}_i\):

\[\eta_{i,c,t,y} = \frac{\overline{G}_{c,i,n,t,y}^{\mathrm{d}}}{G_{i,n,t,y}^\mathrm{r}}.\]

All carrier flows that are not reference carrier flows are called dependent carrier flows \(G_{c,i,n,t,y}^{\mathrm{d}}\).

The transport flow losses \(F_{j,e,t,y}^\mathrm{l}\) through a transport technology \(j\in\mathcal{J}\) on edge \(e\in\mathcal{E}\) are expressed by the loss function \(\rho_{j,e}\) and the transported quantity:

\[F_{j,e,t,y}^\mathrm{l} = \rho_{j,e} h_{j,e} F_{j,e,t,y}.\]

The loss function is described through a linear or an exponential loss factor, \(\rho^\mathrm{lin}_{j}\) and \(\rho^\mathrm{exp}_{j}\), respectively. The loss factor is applied to the transport distance \(h_{j,e}\). For transport technologies where transport flow losses are approximated by a linear loss factor it follows:

(43)\[\rho_{j,e} = h_{j,e} \rho^\mathrm{lin}_{j}\]

For transport technologies where transport flow losses are approximated by an exponential loss factor following Gabrielli et al. (2020):

(44)\[\rho_{j,e} = 1-e^{-h_{j,e} \rho^\mathrm{exp}_{j}}\]

The flow of the reference carrier \(c_h^\mathrm{r}\) of all technologies \(h\in\mathcal{H}\) is constrained by the maximum load \(m^\mathrm{max}_{h,p,t,y}\) and the installed capacity \(S_{h,p,y}\). For conversion technologies \(i\in\mathcal{I}\), it follows:

\[0 \leq G_{i,n,t,y}^\mathrm{r} \leq m^\mathrm{max}_{i,n,t,y}S_{i,n,y}.\]

Analogously for transport technologies \(j\in\mathcal{J}\) it follows:

\[0 \leq F_{j,e,t,y} \leq m^\mathrm{max}_{j,e,t,y}S_{j,e,y}.\]

Since a storage technology does not charge (\(\underline{H}_{k,n,t,y}\)) and discharge (\(\overline{H}_{k,n,t,y}\)) at the same time, the sum of both flows is constrained by the maximum load:

\[0 \leq \underline{H}_{k,n,t,y}+ \overline{H}_{k,n,t,y}\leq m_{k,n,t,y}S_{k,n,y}.\]

In addition, minimum load constraints can be added. Please note, that adding a minimum load \(m^\mathrm{min}_{h,p,t,y}\) introduces binary variables, which can increase the computational complexity of the optimization problem substantially. The min-load constraints are described in Minimum load constraints.

Furthermore, the reference flow of retrofitting technologies is linked to the reference flow of their base technology. The set of base technologies links each retrofitting technology \(i^\mathrm{r}\) to their base technology \(i\). The retrofit flow coupling factor can be interpreted as a conversion factor \(\eta^\mathrm{retrofit}_{i^\mathrm{r},n,t}\) that describes the ratio between the reference flow of the retrofitting technology and the reference flow of the base technology:

\[G_{i^\mathrm{r},n,t,y}^\mathrm{r} = \eta^\mathrm{retrofit}_{i^\mathrm{r},n,t} G_{i,n,t,y}^\mathrm{r}.\]

The temporal representation of storage technologies \(k\in\mathcal{K}\) is particular because the storage constraints are time-coupled and the sequence of time steps must be preserved. To enable both the modeling of short- and medium-term storage, e.g., battery and pumped hydro storage, and long-term storage, e.g., natural gas storage, we present a novel formulation, where the energy-rated storage variables are resolved on a different time sequence. The approach is detailed in Mannhardt et al. 2023. In particular, each change in the aggregated time sequence for power-rated variables yields an additional time step for the energy-rated storage variables. Assume the representation of the exemplary full time index \(\mathcal{T}^\mathrm{full}=[0,...,9]\) by four representative time steps \(\mathcal{T}=[0,...,3]\) with the sequence \(\sigma= [0,0,1,2,1,1,3,3,2,0]\) for power-rated variables. The resulting sequence for energy-rated storage variables \(\sigma^\mathrm{k}\) of the storage time steps \(\mathcal{T}^\mathrm{k}=[0,...,6]\) is then:

(45)\[\sigma^\mathrm{k} = [0,0,1,2,3,3,4,4,5,6]\]

While this formulation enables both the short-term and long-term operation of storages, it increases the number of time steps \(\vert \mathcal{T}^\mathrm{k}\vert\) and thus the number of variables.

For sake of simplicity, let \(\sigma:\mathcal{T}^\mathrm{k}\to \mathcal{T}\) denote the unique mapping of a storage level time step \(t^\mathrm{k}\) to a power-rated time step \(t\). The time-coupled equation for the storage level \(L_{k,n,t^\mathrm{k},y}\) of storage technology \(k\) at node \(n\) is formulated for each storage level time step except the first \(t^\mathrm{k}\in\mathcal{T}^\mathrm{k}\setminus\{0\}\) as:

(46)\[L_{k,n,t^\mathrm{k},y} = L_{k,n,t^\mathrm{k}-1,y}\left(1-\varphi_k\right)^ {\tau^\mathrm{k}_{t^\mathrm{k}}}+ \left(\underline{\eta}_k\underline{H}_{k,n,\sigma(t^\mathrm{k}),y}- \frac{\overline{H}_{k,n,\sigma(t^\mathrm{k}),y}}{\overline{\eta}_k} + \xi_{k,n,\sigma(t^\mathrm{k}),y} - Y_{k,n,\sigma(t^\mathrm{k}),y} \right) \sum_{\tilde{t}^\mathrm{k}=0}^{\tau^\mathrm{k}_{t^\mathrm{k}}-1} \left(1-\varphi_k\right)^{\tilde{t}^\mathrm{k}}\]

with the self-discharge rate \(\varphi_k\), the charge and discharge efficiency, \(\underline{\eta}_k\) and \(\overline{\eta}_k\), the duration of a storage level time step \(\tau^\mathrm{k}_{t^\mathrm{k}}\), the inflow in the storage \(\xi_{k,n,\sigma(t^\mathrm{k}),y}\), and the spillage out of the storage \(Y_{k,n,\sigma(t^\mathrm{k}),y}\). Note that we reformulate \(\sum_{\tilde{t}^\mathrm{k}=0}^{\tau^\mathrm{k}_{t^\mathrm{k}}-1}\left(1-\varphi_k\right)^{\tilde{t}^\mathrm{k}}\) in the optimization problem with the partial geometric series to avoid constructing an additional summation term:

(47)\[\sum_{\tilde{t}^\mathrm{k}=0}^ {\tau^\mathrm{k}_{t^\mathrm{k}}-1} \left(1-\varphi_k\right)^{\tilde{t}^\mathrm{k}} = \frac{1-\left(1-\varphi_k\right)^ {\tau^\mathrm{k}_{t^\mathrm{k}}}}{\varphi_k}\]

If storage periodicity is enforced (system.storage_periodicity = True), the storage level at \(t^\mathrm{k}=0\) is coupled with the level in the last time step of the period \(t^\mathrm{k}=T^\mathrm{k}\):

(48)\[L_{k,n,0,y} = L_{k,n,T^\mathrm{k},y}\left(1-\varphi_k\right)^ {\tau^\mathrm{k}_{t^\mathrm{k}}}+ \left(\underline{\eta}_k\underline{H}_{k,n,\sigma(0),y}- \frac{\overline{H}_{k,n,\sigma(0),y}}{\overline{\eta}_k} + \xi_{k,n,\sigma(0),y} - Y_{k,n,\sigma(0),y} \right) \sum_{\tilde{t}^\mathrm{k}=0}^ {\tau^\mathrm{k}_{t^\mathrm{k}}-1} \left(1-\varphi_k\right)^{\tilde{t}^\mathrm{k}}\]

Moreover, the \(L_{k,n,t^\mathrm{k},y}\) is constrained by the energy-rated storage capacity \(S^\mathrm{e}_{k,n,y}\):

(49)\[0 \leq L_{k,n,t^\mathrm{k},y}\leq S^\mathrm{e}_{k,n,y}\]

\(L_{k,n,t^\mathrm{k},y}\) is monotonous between \(t^\mathrm{k}\) and \(t^\mathrm{k}+1\). Hence, \(L_{k,n,t^\mathrm{k},y}\) and \(L_{k,n,t^\mathrm{k}+1,y}\) are the local extreme values and Eq. (49) constrains the entire time interval between \(t^\mathrm{k}\) and \(t^\mathrm{k}+1\). We prove this below.

The storage level at \(t^\mathrm{k}=0\) can be set to an initial storage level \(\chi_{k,n}\) as a share of \(S^\mathrm{e}_{k,n,y}\):

\[L_{k,n,0,y} = \chi_{k,n}S^\mathrm{e}_{k,n,y}\]

The spillage is a non-negative variable that is constrained by the inflow \(\xi_{k,n,t^\mathrm{k},y}\):

(50)\[0 \leq Y_{k,n,t^\mathrm{k},y} \leq \xi_{k,n,t^\mathrm{k},y}\]

Proof of storage level monotony

We prove that Eq. (46) is monotonous on the entire time interval that is aggregated to a single storage time step \(t^\mathrm{k}\). Consider Eq. (46) for one storage time step \(t^\mathrm{k}\), during which \(\underline{H}_{k,n,\sigma(t^\mathrm{k}),y}\) and \(\overline{H}_{k,n,\sigma(t^\mathrm{k}),y}\) are constant. Neglecting all further indices without loss of generality, the storage level \(L(t)\) for the intermediate time steps \(t\in[1,\tau^\mathrm{k}_{t^\mathrm{k}}]\) follows as:

(51)\[L(t) = L_0\kappa^t + \Delta H\sum_{\tilde{t}=0}^{t-1}\kappa^{\tilde{t}},\]

with \(\kappa=1-\varphi\) and \(\Delta H=\left(\underline{\eta}\underline{H}-\frac{\overline{H}}{\overline{\eta}}\right)\). \(L_0\) is the storage level at the end of the previous storage time step \(t^\mathrm{k}-1\). Without self-discharge (\(\varphi=0\Rightarrow\kappa=1\)), it follows:

\[L(t) = L_0 + \Delta Ht \Rightarrow \frac{\mathrm{d}L(t)}{\mathrm{d}t}=\Delta H.\]

Since \(\frac{\mathrm{d}L(t)}{\mathrm{d}t}\) is independent of \(t\), Eq. (51) is monotonous for \(\varphi=0\).

For \(0<\varphi<1\), \(\sum_{\tilde{t}=0}^{t-1}\kappa^{\tilde{t}}\) is reformulated as the partial geometric series (compare Eq. (47)).

\[\sum_{\tilde{t}=0}^{t-1}\kappa^{\tilde{t}} = \frac{1-\kappa^t}{1-\kappa}.\]

Eq. (51) is reformulated to:

(52)\[L(t) = L_0\kappa^t + \Delta H\frac{1-\kappa^t}{1-\kappa} = \frac{\Delta H}{1-\kappa}+ \left(L_0-\frac{\Delta H}{1-\kappa}\right)\kappa^t.\]

The derivative of Eq. (52) follows as:

\[\frac{\mathrm{d}L(t)}{\mathrm{d}t} = \underbrace{\left(L_0-\frac{\Delta H}{1-\kappa}\right)\ln(\kappa)}_ {= \text{ constant }\forall t\in[1,\tau^\mathrm{k}_{t^\mathrm{k}}]}\kappa^t.\]

With \(\kappa^t>0\), it follows that Eq. (51) is monotonous for \(0<\varphi<1\).

Investment constraints

The capacity \(S_{h,p,y}\) of a technology \(h\in\mathcal{H}\) at a position \(p\in\mathcal{P}\) in period \(y\) is the sum of all previous capacity additions \(\Delta S_{h,p,y}\) and existing capacities \(\Delta s^\mathrm{ex}_{h,p,y}\), that are still within their usable technical lifetime \(l_h\) (compare Eq. (6)):

(53)\[S_{h,p,y}=\sum_{\tilde{y}= \max\left(y_0,y-\left\lceil\frac{l_h}{dy}\right\rceil+1\right)}^y \Delta S_{h,p,\tilde{y}}+ \sum_{\hat{y}=\psi\left(\min \left(y_0-1,y-\left\lceil\frac{l_h}{dy}\right\rceil+1\right)\right)}^ {\psi(y_0)} \Delta s^\mathrm{ex}_{h,p,\hat{y}}.\]

The technology capacity \(S_{h,p,y}\) is constrained by the capacity limit \(s^\mathrm{max}_{h,p,y}\):

\[S_{h,p,y} \leq s^\mathrm{max}_{h,p,y}.\]

The capacity addition \(\Delta S_{h,p,y}\) is constrained by the maximum capacity addition \(\Delta s^\mathrm{max}_{h,p,y}\):

\[0 \leq \Delta S_{h,p,y} \leq \Delta s^\mathrm{max}_{h,p,y}\]

Note

You can skip the maximum capacity addition constraint for a technology by setting the maximum capacity addition to infinity.

You can also introduce a minimum capacity addition \(\Delta s^\mathrm{min}_{h,p,y}\). However, please note, that adding a minimum capacity addition \(\Delta s^\mathrm{min}_{h,p,y}\) introduces binary variables, which can increase the computational complexity of the optimization problem substantially. The min-capacity addition constraints are described in Minimum capacity installation.

Furthermore, for storage technologies the ratios of the energy- and power rated capacity additions are constrained by the energy-to-power ratio \(\rho_{k}\). Minimum and maximum energy-to-power ratios can be defined. For infinite power ratios, the constraints are skipped.

\[\rho_k^{min} S^{e}_{k,n,y} \le S_{k,n,y}\]
\[S_{k,n,y} \le \rho_k^{max} S^{e}_{k,n,y}\]

To account for technology construction times \(dy^\mathrm{construction}\) we introduce an auxiliary variable, \(\Delta S^\mathrm{invest}_{h,p,y}\), representing the technology investments. The following constraint ensures that the new technology capacities do not become available before the construction time has passed:

(54)\[\Delta S_{h,p,y} = \Delta S_{h,p,\left(y-dy^\mathrm{construction}\right)}^\mathrm{invest}\]

Furthermore, if \(y-dy^\mathrm{construction}<0\):

\[\Delta S_{h,p,y} = 0\]

Constrained technology deployment

In case you are using constrained technology deployment (max_diffusion_rate != np.inf for a technology), \(\Delta S_{h,p,y}\) is constrained by the existing knowledge of how to install the technology \(K_{h,p,y}\) with the technology diffusion rate \(\vartheta_h\). This approach is based on Leibowicz et al. (2016).

For node-based technologies, i.e., conversion and storage technologies, spillover effects from other nodes \(\tilde{\mathcal{N}} = \mathcal{N}\setminus\{n\}\) can be utilized (knowledge spillover rate \(\omega\)). To allow for an entry into a niche market, we add an unbounded market share \(\xi\) of the total capacity of all other technologies with the same reference carrier:

\[\tilde{\mathcal{H}}= \Set{\tilde{h}\in\mathcal{H}\setminus\{h\} \mid c_{\tilde{h}}^\mathrm{r} = c_{h}^\mathrm{r}}\]

With the unbounded capacity addition \(\zeta_h\), it follows for the conversion technologies \(i\in\mathcal{I}\):

(55)\[\Delta S_{i,n,y}\leq \left((1+\vartheta_i)^{dy}-1\right)\left(K_{i,n,y}+ \omega\sum_{\tilde{n}\in\tilde{\mathcal{N}}}K_{i,\tilde{n},y}\right)+ dy\left(\xi\sum_{\tilde{i}\in\tilde{\mathcal{I}}}S_{\tilde{i},n,y} + \zeta_i\right)\]

Analogously, it follows for the storage technologies \(k\in\mathcal{K}\):

(56)\[\Delta S_{k,n,y}\leq \left((1+\vartheta_k)^{dy}-1\right)\left(K_{k,n,y}+ \omega\sum_{\tilde{n}\in\tilde{\mathcal{N}}}K_{k,\tilde{n},y}\right)+ dy\left(\xi\sum_{\tilde{k}\in\tilde{\mathcal{K}}}S_{\tilde{k},n,y} + \zeta_k\right)\]

We prohibit spillover effects for transport technologies \(j\in\mathcal{J}\) from other edges:

(57)\[\Delta S_{j,e,y}\leq \left((1+\vartheta_j)^{dy}-1\right)K_{j,e,y}+ dy\left(\xi\sum_{\tilde{j}\in\tilde{\mathcal{J}}}S_{\tilde{j},e,y} + \zeta_j\right)\]

To avoid the unrealistically excessive use of spillover effects, we constrain the capacity additions in all positions as follows:

(58)\[\sum_{p\in\mathcal{P}}\Delta S_{h,p,y}\leq \sum_{p\in\mathcal{P}}\Bigg(\left((1+\vartheta_h)^{dy}-1\right)K_{h,p,y}+ dy\left(\xi\sum_{\tilde{h}\in\tilde{\mathcal{H}}}S_{\tilde{h},p,y} + \zeta_h\right)\Bigg)\]

Note

If you set \(\omega=\infty\), we assume infinite spillover effects between nodes and Eqs. (55)-(57) are skipped. Then the constrained technology expansion for the entire energy system is governed by Eq. (58).

\(K_{h,p,y}\) is a function of the previous capacity additions \(\Delta S_{h,p,y}\) and \(\Delta s^\mathrm{ex}_{h,p,y}\) as it represents the expertise and knowledge of the industry on how to install a certain amount of capacity. This knowledge is depreciated over time with the knowledge depreciation rate \(\delta\):

\[K_{h,p,y} = \sum_{\tilde{y}=y_0}^{y-1}\left(1-\delta\right)^ {dy (y-\tilde{y})}\Delta S_{h,p,\tilde{y}} + \sum_{\hat{y}=-\infty}^{\psi(y_0)}\left(1-\delta\right)^{\left(dy(y-y_0) + (\psi(y_0)-\hat{y})\right)}\Delta s^\mathrm{ex}_{h,p,\hat{y}}\]

Minimum load constraints

A binary variable \(B_{h,n,t}\) is introduced to model the on-, and off- behaviour of a technology. If \(B_{h,p,t}=1\), the technology is on, if \(B_{h,p,t}=0\) the technology is considered off. With \(B_{h,p,t}\) the minimum load constraint of a conversion technology can be formulated as follows:

(59)\[m^\mathrm{min}_{i,p,t,y} B_{i,p,t} S_{i,p,y} \leq G_{i,p,t,y}^\mathrm{r} \leq B_{i,p,t} S_{i,p,y}\]

However, this constraint would introduce a bilinearity. To resolve the bilinearity, we use a big-M formulation and approximate \(B_{h,p,t} S_{h,n,y}\) with \(S^\mathrm{approx}_{h,p,t,y}\). Thus, Eq. (59) can be rewritten as:

(60)\[m^\mathrm{min}_{i,n,t,y} S^\mathrm{approx}_{i,n,t,y} \leq G_{i,n,t,y}^\mathrm{r} \leq S^\mathrm{approx}_{i,n,t,y}\]

Similarly, for transport technologies it follows:

(61)\[m^\mathrm{min}_{j,e,t,y} S^\mathrm{approx}_{j,e,t,y} \leq F_{j,e,t,y}^\mathrm{r} \leq S^\mathrm{approx}_{j,e,t,y}\]

For storage technologies, the minimum load constraint is formulated as the sum of the charge and discharge flows as storage technologies do not charge and discharge at the same time:

(62)\[m^\mathrm{min}_{k,n,t,y} S^\mathrm{approx}_{k,e,t,y} \leq \underline{H}_{k,n,t,y} + \overline{H}_{k,n,t,y} \leq S^\mathrm{approx}_{k,n,t,y}\]

Two more constraints are added to ensure that \(S^\mathrm{approx}_{h,p,t,y}\) equals the installed capacity if the technology is on (i.e., \(B_{h,p,t}=1\)), and that \(S^\mathrm{approx}_{h,p,t,y}\) equals zero if the technology is off (i.e., \(B_{h,p,t}=0\)):

(63)\[\begin{split}0 \leq S^\mathrm{approx}_{h,p,t,y} \leq s^\mathrm{max}_{h,p,y} B_{h,p,t}\\\\ S_{h,p,y} + (1-B_{h,p,t}) s^\mathrm{max}_{h,p,y} \leq S^\mathrm{approx}_{h,p,t,y} \leq S_{h,p,y}\end{split}\]

If no physically motivated capacity limit \(s^\mathrm{max}_{h,p,y}\) exists, \(s^\mathrm{max}_{h,p,y}\) must be large enough to ensure that the technology is not constrained by the capacity limit (Big-M parameter).

Minimum full-load hours

This constraint requires that a minimum number of full_load_hours be met over the course of year. Full load hours are the amount of hours that a conversion technology would need to run at full capacity in order to produce an output equivalent to its yearly total. The constraint can be used to require a conversion technology to always operate at baseload capacity. This can be helpful for technologies where ramping is not possible or economical for reasons not captured by the model.

Mathematical formulation:

\[\sum_t G_{i,n,t,y}^\mathrm{r} \geq \bigg( \sum_{t \in\mathcal{T}} \tau_t \bigg) \underline{\pi}_{i,n,y} S_{i,n,y} \qquad \forall i,n,y\]

The sum simply yields the unaggregated time steps per year, set in the systems.json file.

Constraint parameters:

  • \(\underline{\pi}_{i,n,y}\): minimum number of full load hours, expressed as a fraction of the unaggregated time steps per year. Takes separate values for each technology \(i\) at node \(n\) and planning period \(y\)

Constraint variables:

  • \(S_{i,n,y}\): installed capacity of the technology \(i\) at node \(n\) in planning period \(y\)

  • \(G_{i,n,t}^\mathrm{r}\): reference carrier flow of the technology \(i\) at node \(n\) in time step \(t\) in planning period \(y\)

This constraint is currently only available for conversion technologies.

Minimum capacity installation

A binary variable \(g_{h,p,y}\) is introduced to model the technology installation decision. If \(g_{h,p,y}=1\), the technology is installed, otherwise \(g_{h,p,y}=0\). The following constraint ensures that if technology capacity is added, at minimum \(\Delta s^\mathrm{min}_{h,p,y}\) is installed.

(64)\[\Delta S^\mathrm{approx}_{h,p,y} \geq \Delta s^\mathrm{min}_{h,p,y} g_{h,p,y}\]

where \(S^\mathrm{approx}_{h,p,y}\) approximates the capacity addition to avoid bilinearities. The following two constraints link the capacity addition variable \(\Delta S_{h,p,y}\) and the approximation of the capacity addition variable \(\Delta S_{h,p,y}^\mathrm{approx}\):

(65)\[\begin{split}\Delta S^\mathrm{approx}_{i,p,y} \leq S_{i,p,y} \\\\ \Delta S^\mathrm{approx}_{i,p,y} \geq (1-g_{h,p,t}) M + S_{i,p,t}\end{split}\]

Eq. (65) ensure that \(\Delta S^\mathrm{approx}_{h,p,y}\) equals the installed capacity if the capacity is expanded (i.e., \(g_{h,p,t}=1\)), and that \(\delta S^\mathrm{approx}_{h,p,y}\) equals zero if the technology is off (i.e., \(b_{h,p,t}=0\)), where a sufficiently large \(M\) is selected. Here \(M\) could be represented by the maximum capacity addition for each technology \(\Delta s^\mathrm{max}_{h,p,y}\).

Piecewise affine approximation of capital expenditures

Note

Please note that the following introduces the mathematical formulation of piecewise affine linearizations, which deviates slightly from the general formulation in ZEN-garden.

The capital expenditures of the conversion technologies can be approximated by a piecewise affine (PWA) function to account for non-linearities and e.g., represent economies of scale. To this end, the capital investment unit costs are approximated by linear functions that are connected by breakpoints (Piecewise affine approximation of capital expenditures). The breakpoints are summarized in \(m\in\mathcal{M}\). The binary variable \(f_{i,n,y,m}\) is introduced to model the capacity selection, where \(f_{i,n,y,m}\) equals one if breakpoint \(m\) is active, otherwise \(f_{i,n,y,m}\) equals zero. Furthermore, at most one breakpoint can be active at a time:

\[\sum_{m\in\mathcal{M}} f_{i,n,y,m} \leq 1\]

If breakpoint \(m\) is active, the capacity addition must be within the capacity of the active breakpoint \(\Delta s^\mathrm{pwa}_{i,n,y,m}\) and the subsequent breakpoint \(\Delta s^\mathrm{pwa}_{i,n,y,m+1}\). To avoid bilinearities, the capacity addition is approximated \(S_{i,p,y,m}^\mathrm{approx}\). For breakpoints \(m \in [0, ..., |\mathcal{M}|-1]\) it follows:

(66)\[f_{i,n,y,m} \Delta s^\mathrm{pwa}_{i,n,y,m} \leq \Delta S_{i,n,y,m}^\mathrm{approx} \leq f_{i,n,y,m} \Delta s^\mathrm{pwa}_{i,n,y,m+1}\]

while for the last breakpoint \(m=|\mathcal{M}|\) it follows:

(67)\[f_{i,n,y,m} \Delta s^\mathrm{pwa}_{i,n,y,m} \leq \Delta S_{i,n,y,m}^\mathrm{approx} \leq f_{i,n,y,m} \Delta s^\mathrm{pwa}_{i,n,y,m}\]

Thus, Eq. (66) and Eq. (67) ensure that only if a breakpoint is active (i.e., \(f_{i,n,y,m}=1\)) \(\Delta S_{i,n,y,m}^\mathrm{approx}\geq0\), otherwise \(\Delta S_{i,n,y,m}^\mathrm{approx}=0\). The approximation of the capacity addition variable \(\Delta S_{i,n,y,m}^\mathrm{approx}\) and the capacity addition variable \(\Delta S_{i,n,y}\) are linked:

\[\sum_{m\in\mathcal{M}} S_{i,n,y,m}^\mathrm{approx} = S_{i,n,y}\]

The capital expenditures are computed by the multiplication of the unit capital investment cost \(\alpha_{i,y,m}\) for each section and the approximation of the capacity addition variable \(\Delta S_{i,n,y,x}^\mathrm{approx}\):

\[A_{i,p,y} = \sum_{m\in\mathcal{M}} \alpha_{i,y,m} S_{i,n,y,m}^\mathrm{approx}\]