Modelling CNECs and range actions#
Used input data#
Name 
Symbol 
Details 

FlowCnecs 
\(c \in \mathcal{C}\) 
set of FlowCnecs[1]. Note that FlowCnecs are all the CBCO for which we compute the flow in the MILP, either: 
RangeActions 
\(r,s \in \mathcal{RA}\) 
set of RangeActions and state on which they are applied, could be PSTs, HVDCs, or injection range actions 
RangeActions 
\(r \in \mathcal{RA(s)}\) 
set of RangeActions available on state \(s\), could be PSTs, HVDCs, or injection range actions 
Iteration number 
\(n\) 
number of current iteration 
ReferenceFlow 
\(f_{n}(c)\) 
reference flow, for FlowCnec \(c\). 
PrePerimeterSetpoints 
\(\alpha _0(r)\) 
setpoint of RangeAction \(r\) at the beginning of the optimization 
ReferenceSetpoints 
\(\alpha _n(r)\) 
setpoint of RangeAction \(r\) at the beginning of the current iteration of the MILP, around which the sensitivities are computed 
Sensitivities 
\(\sigma _{n}(r,c,s)\) 
sensitivity of RangeAction \(r\) on FlowCnec \(c\) for state \(s\) 
Previous RA setpoint 
\(A_{n1}(r,s)\) 
optimal setpoint of RangeAction \(r\) on state \(s\) in previous iteration (\(n1\)) 
Used parameters#
Name 
Symbol 
Details 
Source 

sensitivityThreshold 
Set to zero the sensitivities of RangeActions below this threshold; thus avoiding the activation of RangeActions which have too small an impact on the flows (can also be achieved with penaltyCost). This simplifies & speeds up the resolution of the optimization problem (can be necessary when the problem contains integer variables). However, it also adds an approximation in the computation of the flows within the MILP, which can be tricky to handle when the MILP contains hard constraints on loopflows or monitored FlowCnecs. 
Equal to pstsensitivitythreshold for PSTs, hvdcsensitivitythreshold for HVDCs, and injectionrasensitivitythreshold for injection range actions 

penaltyCost 
\(c^{penalty}_{ra}\) 
Supposedly a small penalization, in the use of the RangeActions. When several solutions are equivalent, this favours the one with the least change in the RangeActions’ setpoints (compared to the initial situation). It also avoids the activation of RangeActions which have to small an impact on the objective function. 
Equal to pstpenaltycost for PSTs, hvdcpenaltycost for HVDCs, and injectionrapenaltycost for injection range actions 
Defined optimization variables#
Name 
Symbol 
Details 
Type 
Index 
Unit 
Lower bound 
Upper bound 

Flow 
\(F(c)\) 
flow of FlowCnec \(c\) 
Real value 
One variable for every element of (FlowCnecs) 
MW 
\(\infty\) 
\(+\infty\) 
RA setpoint 
\(A(r,s)\) 
setpoint of RangeAction \(r\) on state \(s\) 
Real value 
One variable for every element of (RangeActions) 
Degrees for PST range actions; MW for other range actions 
Range lower bound[2] 
Range upper bound[2] 
RA setpoint absolute variation 
\(\Delta A(r,s)\) 
The absolute setpoint variation of RangeAction \(r\) on state \(s\), from setpoint on previous state to “RA setpoint” 
Real positive value 
One variable for every element of (RangeActions) 
Degrees for PST range actions; MW for other range actions 
0 
\(+\infty\) 
Defined constraints#
Impact of rangeActions on FlowCnecs flows#
with \(s\) the state on \(c\) which is evaluated
Definition of the setpoint variations of the RangeActions#
with \(A(r,s')\) the setpoint of the last range action on the same element as \(r\) but a state preceding \(s\). If none such range actions exists, then \(A(r,s') = \alpha_{0}(r)\)
This equation always applies, except for PSTs when modeling them as APPROXIMATED_INTEGERS. If so, this constraint will be modeled directly via PST taps, see here as it gives better results [3].
Shrinking the allowed range#
If parameter rarangeshrinking is enabled, the allowed range for range actions is shrunk after each iteration according to the following constraints:
The value \(\frac{2}{3}\) has been chosen to force the linear problem convergence while allowing the RA to go back to its initial solution if needed.
Contribution to the objective function#
Small penalisation for the use of RangeActions: