Limiting the number of range actions to use#

Used input data#

Name

Symbol

Details

RangeActions

\(r,s \in \mathcal{RA}\)

Set of optimised RangeActions and state on which they are applied (PSTs, HVDCs, InjectionRangeActions…)

PstRangeActions

\(r \in \mathcal{RA}^{PST}\)

Set of PST RangeActions

States

\(s \in \mathcal{S}\)

Set of states on which RangeActions are optimized

PrePerimeterSetpoints

\(\alpha _0(r)\)

Set-point of RangeAction \(r\) at the beginning of the optimisation

Range upper bound

\(\alpha_{\max}(r)(\alpha _0(r))\)

Highest allowed set-point for a range action \(r\), given its pre-perimeter set-point \(\alpha _0(r)\)

Range lower bound

\(\alpha_{\min}(r)(\alpha _0(r))\)

Lowest allowed set-point for a range action \(r\), given its pre-perimeter set-point \(\alpha _0(r)\)

Maximum number of RAs

\(nRA^{max}(s)\)

Maximum number of range actions that can be used on state \(s\)

Maximum number of PSTs per TSO

\(nPST^{max}(tso,s)\)

Maximum number of PSTs that can be used by a given TSO on state \(s\)

Maximum number of RAs per TSO

\(nRA^{max}(tso,s)\)

Maximum number of range actions to use by a given TSO on state \(s\)

Maximum number of elementary actions per TSO

\(nEA^{max}(tso)\)

Maximum number of elementary actions to use by a given TSO at a given instant

TSOs

\(tso \in \mathcal{TSO}\)

Set of all TSOs operating a range action in RangeActions

Set of states to consider

\(\mathcal{S}_{considered}(s)\)

For a given state \(s\), if \(s\) is preventive, it reduces to {\(s\)}. If \(s\) is curative, it also reduces to {\(s\)} unless we are in 2P; in 2P, it contains all curative states with the same contingency as \(s\) that occur before \(s\)

💡 Note

This filler uses:

  • crac-creation-parameters defined here

  • or CRAC JSON’s ra-usage-limits-per-instant field defined here.

They are updated before the MIP to take into account :

  • applied topological actions at each leaf of a search tree

  • the cumulative effect of the limits in multi-curative at the beginning of each contingency scenario

\(\mathcal{S}_{considered}(s)\) is introduced in order to take into account the cumulative effect of curative states limit in multi-curative 2P.

Defined optimization variables#

Name

Symbol

Details

Type

Index

Unit

Lower bound

Upper bound

RA usage binary

\(\delta(r,s)\)

binary indicating if a range action is used

Binary

One variable for every element of \(\mathcal{RA}\)

no unit

0

1

Used optimization variables#

Name

Symbol

Defined in

RangeAction set-point upward variation

\(\Delta^{+}(r,s)\)

CoreProblemFiller

RangeAction set-point downward variation

\(\Delta^{-}(r,s)\)

CoreProblemFiller

Total PstRangeAction upward tap variation

\( \Delta_{total} t^{+} (r, s) \)

DiscretePstTapFiller

Total PstRangeAction downward tap variation

\( \Delta_{total} t^{-} (r, s) \)

DiscretePstTapFiller

Defined constraints#

Let the following symbol indicate the subset of RangeActions belonging to TSO (tso): \(\mathcal{RA}(tso)\)

Define the binary variable#

Force the binary to 1 if optimal set-point should be different from pre-perimeter set-point:

\[ \begin{equation} \Delta^{+}(r,s) + \Delta^{-}(r,s) \geq \delta (r,s) * (\alpha_{\max}(r)(\alpha _0(r)) - \alpha_{\min}(r)(\alpha _0(r))) , \forall (r,s) \in \mathcal{RA} \end{equation} \]

⚠️ In order to mitigate rounding issues, and ensure that the max and min set-points are feasible, a small “epsilon” ( 1e-4) is added to max / subtracted to min set-point.

⚠️ In order to mitigate PST tap ↔ angle approximation in “APPROXIMATED_INTEGERS” mode, and ensure that the initial set-point is feasible, a correction factor is added or subtracted from the initial set-point in the constraints above. This coefficient is computed as 30% of the average tap to angle conversion factor:
correction = 0.3 x abs((max angle - min angle) / (max tap - min tap))

Maximum number of remedial actions#

\[ \begin{equation} \forall s \in \mathcal{S}, \sum_{s' \in \mathcal{S}^{considered}(s)} \sum_{r \in \mathcal{RA}(s')} \delta (r,s') \leq nRA^{max}(s) \end{equation} \]

Maximum number of PSTs per TSO#

\[\begin{split} \begin{equation} \forall tso \in \mathcal{TSO}, \forall s \in \mathcal{S}, \sum_{s' \in \mathcal{S}^{considered}(s)} \sum_{\substack{r \in \mathcal{RA}(tso,s') \\ r \text{ is a PST}}} \delta(r, s') \leq nPST^{max}(tso,s) \end{equation} \end{split}\]

Maximum number of RAs per TSO#

\[ \begin{equation} \forall tso \in \mathcal{TSO}, \forall s \in \mathcal{S}, \sum_{s' \in \mathcal{S}^{considered}(s)} \sum_{r \in \mathcal{RA}(tso,s')} \delta (r,s') \leq nRA^{max}(tso,s) \end{equation} \]

Maximum number of elementary actions per TSO#

️⚠️ Only if APPROXIMATED_INTEGERS mode.

\[\begin{split} \begin{equation} \forall tso \in \mathcal{TSO}, \forall s \in \mathcal{S}, \sum_{s' \in \mathcal{S}^{considered}(s)}\sum_{\substack{\forall r \in \mathcal{RA}^{PST} \\ r \text{'s operator is } tso }} \Delta_{total} t^{+} (r, s') + \Delta_{total} t^{-} (r, s') \leq nEA^{max}(tso) \end{equation} \end{split}\]