Update docs

m2m
Alinson S. Xavier 2 years ago
parent 010558b3ae
commit 007de88c3f

@ -416,17 +416,141 @@ loads per bus.
0 \leq y^\text{psl}_{spt} \leq M^\text{psl-demand}_{spt} 0 \leq y^\text{psl}_{spt} \leq M^\text{psl-demand}_{spt}
``` ```
## 6. Buses and transmission lines ## 6. Energy storage
So far, we have described generators, which produce power, and loads, which _Energy storage_ units are able to store energy during periods of low demand,
consume power. A third important element is the transmission network, which then release energy back to the grid during periods of high demand. These
delivers the power produced by the generators to the loads. Mathematically, the devices include _batteries_, _pumped hydroelectric storage_, _compressed air
network is represented as a graph $(B,L)$ where $B$ is the set of **buses** and energy storage_ and _flywheels_. They are becoming increasingly important in the
$L$ is the set of **transmission lines**. Each generator, load and energy modern power grid, and can help to enhance grid reliability, efficiency and
storage device is located at a bus. The **net injection** at the bus is the sum integration of renewable energy resources.
of all power injected minus withdrawn at the bus. To balance production and
consumption, we must enforce that the sum of all net injections over the entire ### Concepts
network equal to zero.
- **Min/max energy level and charge rate:** Energy storage units can only store
a limited amount of energy (in MWh). To maintain the operational safety and
longevity of these devices, a minimum energy level may also be imposed. The
rate (in MW) at which these units can charge and discharge is also limited,
due to chemical, physical and operational considerations.
- **Operational costs:** Charging and discharging energy storage units may incur
a cost/revenue. We assume that this cost/revenue is linear on the
charge/discharte rate ($/MW).
- **Efficiency:** Charging an energy storage unit for one hour with an input of
1 MW might not result in an increase of the energy level in the device by
exactly 1 MWh, due to various inneficiencies in the charging process,
including coversion losses and heat generation. For similar reasons,
discharging a storage unit for one hour at 1 MW might reduce the energy level
by more than 1 MWh. Furthermore, even when the unit is not charging or
discharging, some energy level may be gradually lost over time, due to
unwanted chemical reactions, thermal effects of mechanical losses.
- **Myopic effect:** Because the optimization process considers a fixed time
window, there is an inherent bias towards exploiting energy storage units to
their maximum within the window, completely ignoring their operation just
beyond this horizon. For instance, without further constraints, the
optimization algorithm will often ensure that all storage units are fully
discharged at the end of the last time step, which may not be desirable. To
mitigate this myopic effect, a minimum and maximum energy level may be imposed
at the last time step.
- **Simultaneous charging and discharging:** Depending on charge and discharge
costs/revenue, it may make sense mathematically to simultaneously charge and
discharge the storage unit, thus keeping its energy level unchanged while
potentially collecting revenue. Additional binary variables and constraints
are required to prevent this incorrect model behavior.
### Sets and constants
| Symbol | Unit | Description |
| :------------------------------------ | :---- | :---------------------------------------------------------------------------------------------------- |
| $\text{SU}$ | | Set of storage units |
| $Z^\text{charge}_{sut}$ | \$/MW | Linear charge cost/revenue for unit $u$ at time $t$ in scenario $s$. |
| $Z^\text{discharge}_{sut}$ | \$/MW | Linear discharge cost/revenue for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{discharge-max}_{sut}$ | \$/MW | Maximum discharge rate for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{discharge-min}_{sut}$ | \$/MW | Minimum discharge rate for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{charge-max}_{sut}$ | \$/MW | Maximum charge rate for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{charge-min}_{sut}$ | \$/MW | Minimum charge rate for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{max-end-level}_{su}$ | MWh | Maximum storage level of unit $u$ at the last time step in scenario $s$ |
| $M^\text{min-end-level}_{su}$ | MWh | Minimum storage level of unit $u$ at the last time step in scenario $s$ |
| $\gamma^\text{loss}_{s,u,t}$ | | Self-discharge factor. |
| $\gamma^\text{charge-eff}_{s,u,t}$ | | Charging efficiency factor. |
| $\gamma^\text{discharge-eff}_{s,u,t}$ | | Discharging efficiency factor. |
| $\gamma^\text{time-step}$ | | Length of a time step, in hours. Should be 1.0 for hourly time steps, 0.5 for 30-min half steps, etc. |
### Decision variables
| Symbol | JuMP name | Unit | Description | Stage |
| :------------------------------ | :---------------------- | :----- | :----------------------------------------------------------- | :---- |
| $y^\text{level}_{sut}$ | `storage_level[s,u,t]` | MWh | Storage level of unit $u$ at time $t$ in scenario $s$. | 2 |
| $y^\text{charge}_{sut}$ | `charge_rate[s,u,t]` | MW | Charge rate of unit $u$ at time $t$ in scenario $s$. | 2 |
| $y^\text{discharge}_{sut}$ | `discharge_rate[s,u,t]` | MW | Discharge rate of unit $u$ at time $t$ in scenario $s$. | 2 |
| $x^\text{is-charging}_{sut}$ | `is_charging[s,u,t]` | Binary | True if unit $u$ is charging at time $t$ in scenario $s$. | 2 |
| $x^\text{is-discharging}_{sut}$ | `is_discharging[s,u,t]` | Binary | True if unit $u$ is discharging at time $t$ in scenario $s$. | 2 |
### Objective function terms
- Charge and discharge cost/revenue:
```math
\sum_{s \in S} p(s) \left[
\sum_{u \in \text{SU}} \sum_{t \in T} \left(
y^\text{charge}_{sut} Z^\text{charge}_{sut} +
y^\text{discharge}_{sut} Z^\text{discharge}_{sut}
\right)
\right]
```
### Constraints
- Prevent simultaneous charge and discharge
(`eq_simultaneous_charge_and_discharge[s,u,t]`):
```math
x^\text{is-charging}_{sut} + x^\text{is-discharging}_{sut} \leq 1
```
- Limit charge/discharge rate (`eq_min_charge_rate[s,u,t]`,
`eq_max_charge_rate[s,u,t]`, `eq_min_discharge_rate[s,u,t]` and
`eq_max_discharge_rate[s,u,t]`):
```math
\begin{align*}
y^\text{charge}_{sut} \leq x^\text{is-charging}_{sut} M^\text{charge-max}_{sut} \\
y^\text{charge}_{sut} \geq x^\text{is-charging}_{sut} M^\text{charge-min}_{sut} \\
y^\text{discharge}_{sut} \leq x^\text{is-discharging}_{sut} M^\text{discharge-max}_{sut} \\
y^\text{discharge}_{sut} \geq x^\text{is-discharging}_{sut} M^\text{discharge-min}_{sut} \\
\end{align*}
```
- Calculate current storage level (`eq_storage_transition[s,u,t]`):
```math
y^\text{level}_{sut} =
(1 - \gamma^\text{loss}_{s,u,t}) y^\text{level}_{su,t-1} +
\gamma^\text{time-step} \gamma^\text{charge-eff}_{s,u,t} y^\text{charge}_{sut} -
\frac{\gamma^\text{time-step}}{\gamma^\text{discharge-eff}_{s,u,t}} y^\text{charge}_{sut}
```
- Enforce storage level at last time step (`eq_ending_level[s,u]`):
```math
M^\text{min-end-level}_{su} \leq y^\text{level}_{sut} \leq M^\text{max-end-level}_{su}
```
## 7. Buses and transmission lines
So far, we have described generators, which produce power, loads, which consume
power, and storage units, which store energy for later use. Another important
element is the transmission network, which delivers the power produced by the
generators to the loads and storage units. Mathematically, the network is
represented as a graph $(B,L)$ where $B$ is the set of **buses** and $L$ is the
set of **transmission lines**. Each generator, load and storage unit is located
at a bus. The **net injection** at the bus is the sum of all power injected
minus withdrawn at the bus. To balance production and consumption, we must
enforce that the sum of all net injections over the entire network equal to
zero.
Besides the net balance equations, we must also enforce flow limits on the Besides the net balance equations, we must also enforce flow limits on the
transmission lines. Unlike flows in other optimization problems, power flows are transmission lines. Unlike flows in other optimization problems, power flows are
@ -492,7 +616,7 @@ y^\text{flow}_{slt} = \sum_{b \in B} \delta_{sbl} y^\text{inj}_{sbt}
\end{align*} \end{align*}
``` ```
## 7. Transmission interfaces ## 8. Transmission interfaces
In some applications, such as energy exchange studies, it is important to In some applications, such as energy exchange studies, it is important to
enforce flow limits not only on individual lines, but also on groups of enforce flow limits not only on individual lines, but also on groups of
@ -551,134 +675,6 @@ y^\text{i-flow}_{sit} = \sum_{b \in B} y^\text{inj}_{sbt} \left[
\end{align*} \end{align*}
``` ```
## 7. Energy storage ## 9. Contingencies
_Energy storage_ units are able to store energy during periods of low demand,
then release energy back to the grid during periods of high demand. These
devices include _batteries_, _pumped hydroelectric storage_, _compressed air
energy storage_ and _flywheels_. They are becoming increasingly important in the
modern power grid, and can help to enhance grid reliability, efficiency and
integration of renewable energy resources.
### Concepts
- **Min/max energy level and charge rate:** Energy storage units can only store
a limited amount of energy (in MWh). To maintain the operational safety and
longevity of these devices, a minimum energy level may also be imposed. The
rate (in MW) at which these units can charge and discharge is also limited,
due to chemical, physical and operational considerations.
- **Operational costs:** Charging and discharging energy storage units may incur
a cost/revenue. We assume that this cost/revenue is linear on the
charge/discharte rate ($/MW).
- **Efficiency:** Charging an energy storage unit for one hour with an input of
1 MW might not result in an increase of the energy level in the device by
exactly 1 MWh, due to various inneficiencies in the charging process,
including coversion losses and heat generation. For similar reasons,
discharging a storage unit for one hour at 1 MW might reduce the energy level
by more than 1 MWh. Furthermore, even when the unit is not charging or
discharging, some energy level may be gradually lost over time, due to
unwanted chemical reactions, thermal effects of mechanical losses.
- **Myopic effect:** Because the optimization process considers a fixed time
window, there is an inherent bias towards exploiting energy storage units to
their maximum within the window, completely ignoring their operation just
beyond this horizon. For instance, without further constraints, the
optimization algorithm will often ensure that all storage units are fully
discharged at the end of the last time step, which may not be desirable. To
mitigate this myopic effect, a minimum and maximum energy level may be imposed
at the last time step.
- **Simultaneous charging and discharging:** Depending on charge and discharge
costs/revenue, it may make sense mathematically to simultaneously charge and
discharge the storage unit, thus keeping its energy level unchanged while
potentially collecting revenue. Additional binary variables and constraints
are required to prevent this incorrect model behavior.
### Sets and constants
| Symbol | Unit | Description |
| :------------------------------------ | :---- | :---------------------------------------------------------------------------------------------------- |
| $\text{SU}$ | | Set of storage units |
| $Z^\text{charge}_{sut}$ | \$/MW | Linear charge cost/revenue for unit $u$ at time $t$ in scenario $s$. |
| $Z^\text{discharge}_{sut}$ | \$/MW | Linear discharge cost/revenue for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{discharge-max}_{sut}$ | \$/MW | Maximum discharge rate for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{discharge-min}_{sut}$ | \$/MW | Minimum discharge rate for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{charge-max}_{sut}$ | \$/MW | Maximum charge rate for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{charge-min}_{sut}$ | \$/MW | Minimum charge rate for unit $u$ at time $t$ in scenario $s$. |
| $M^\text{max-end-level}_{su}$ | MWh | Maximum storage level of unit $u$ at the last time step in scenario $s$ |
| $M^\text{min-end-level}_{su}$ | MWh | Minimum storage level of unit $u$ at the last time step in scenario $s$ |
| $\gamma^\text{loss}_{s,u,t}$ | | Self-discharge factor. |
| $\gamma^\text{charge-eff}_{s,u,t}$ | | Charging efficiency factor. |
| $\gamma^\text{discharge-eff}_{s,u,t}$ | | Discharging efficiency factor. |
| $\gamma^\text{time-step}$ | | Length of a time step, in hours. Should be 1.0 for hourly time steps, 0.5 for 30-min half steps, etc. |
### Decision variables
| Symbol | JuMP name | Unit | Description | Stage |
| :------------------------------ | :---------------------- | :----- | :----------------------------------------------------------- | :---- |
| $y^\text{level}_{sut}$ | `storage_level[s,u,t]` | MWh | Storage level of unit $u$ at time $t$ in scenario $s$. |
| $y^\text{charge}_{sut}$ | `charge_rate[s,u,t]` | MW | Charge rate of unit $u$ at time $t$ in scenario $s$. |
| $y^\text{discharge}_{sut}$ | `discharge_rate[s,u,t]` | MW | Discharge rate of unit $u$ at time $t$ in scenario $s$. |
| $x^\text{is-charging}_{sut}$ | `is_charging[s,u,t]` | Binary | True if unit $u$ is charging at time $t$ in scenario $s$. |
| $x^\text{is-discharging}_{sut}$ | `is_discharging[s,u,t]` | Binary | True if unit $u$ is discharging at time $t$ in scenario $s$. |
| $y^\text{i-flow}_{sit}$ | `interface_flow[s,i,t]` | MW | Flow across interface
$i$ at time $t$ and scenario $s$. | 2 | | $y^\text{i-overflow}_{sit}$ |
`interface_overflow[s,i,t]` | MW | Flow above limit for interface $i$ at time
$t$ and scenario $s$. | 2 |
### Objective function terms
- Charge and discharge cost/revenue:
$$
\sum_{s \in S} p(s) \left[
\sum_{u \in \text{SU}} \sum_{t \in T} \left(
y^\text{charge}_{sut} Z^\text{charge}_{sut} +
y^\text{discharge}_{sut} Z^\text{discharge}_{sut}
\right)
\right]
$$
### Constraints
- Prevent simultaneous charge and discharge
(`eq_simultaneous_charge_and_discharge[s,u,t]`):
$$
x^\text{is-charging}_{sut} + x^\text{is-discharging}_{sut} \leq 1
$$
- Limit charge/discharge rate (`eq_min_charge_rate[s,u,t]`,
`eq_max_charge_rate[s,u,t]`, `eq_min_discharge_rate[s,u,t]` and
`eq_max_discharge_rate[s,u,t]`):
$$
\begin{align*}
y^\text{charge}_{sut} \leq x^\text{is-charging}_{sut} M^\text{charge-max}_{sut} \\
y^\text{charge}_{sut} \geq x^\text{is-charging}_{sut} M^\text{charge-min}_{sut} \\
y^\text{discharge}_{sut} \leq x^\text{is-discharging}_{sut} M^\text{discharge-max}_{sut} \\
y^\text{discharge}_{sut} \geq x^\text{is-discharging}_{sut} M^\text{discharge-min}_{sut} \\
\end{align*}
$$
- Calculate current storage level (`eq_storage_transition[s,u,t]`):
$$
y^\text{level}_{sut} =
(1 - \gamma^\text{loss}_{s,u,t}) y^\text{level}_{su,t-1} +
\gamma^\text{time-step} \gamma^\text{charge-eff}_{s,u,t} y^\text{charge}_{sut} -
\frac{\gamma^\text{time-step}}{\gamma^\text{discharge-eff}_{s,u,t}} y^\text{charge}_{sut}
$$
- Enforce storage level at last time step (`eq_ending_level[s,u]`):
$$
M^\text{min-end-level}_{su} \leq y^\text{level}_{sut} \leq M^\text{max-end-level}_{su}
$$
## 8. Contingencies
## 9. Reserves ## 10. Reserves

Loading…
Cancel
Save