(34 intermediate revisions by 3 users not shown)
Line 4: Line 4:
 
''', , David L.&nbsp;Alvarez <math>\cdot </math>        Diego F. Rodríguez <math>\cdot </math>        Sergio&nbsp;Rivera '''
 
''', , David L.&nbsp;Alvarez <math>\cdot </math>        Diego F. Rodríguez <math>\cdot </math>        Sergio&nbsp;Rivera '''
 
-->
 
-->
 
 
==Abstract==
 
==Abstract==
  
This paper presents a novel approach for solving the security-constrained optimal power flow (SCOPF) optimization problem using parallel Computing. In this approach, switched shunt banks, generation power ramp, and demand response are considered in the SCOPF by maximizing the market surplus during regular operation and for a set of contingencies of branches and generators. The optimization problem is solved using the Nonlinear Interior Point Method. The contingency assessment is paralleled in multiple CPU cores to decrease the computation time. Additionally, the test systems used in ARPA-GO competition were used and compared with the ARPA benchmark results to assess the proposed algorithm. The numerical results show this method is suitable for fast SCOPF using paralleling Computing.
+
This paper presents a novel approach for solving the security-constrained optimal power flow (SCOPF) optimization problem using parallel Computing. In this approach, switched shunt capacitors, generation power ramp, and demand response are considered in the SCOPF by maximizing the market surplus during regular operation and for a set of contingencies of branches and generators. The optimization problem is solved using the Nonlinear Interior Point Method. The contingency assessment is paralleled in multiple CPU cores to decrease the computation time. Additionally, the test systems used in ARPA-GO competition were used and compared with the ARPA benchmark results to assess the proposed algorithm. The numerical results show this method is suitable for fast SCOPF using paralleling Computing.
  
'''keywords''' High-Performance Computing <math>\cdot </math>Interior-point method, Reliability <math>\cdot </math>Security Constraint Optimal Power Flow (SCOPF)
+
'''Keywords''': High-performance computing, interior-point method, reliability, Security Constraint Optimal Power Flow (SCOPF)
  
Received: date / Accepted: date
+
==1. Introduction==
  
==1 Introduction==
+
Power systems must operate in energy equilibrium in a secure, reliable, economical, and sustainable way; commonly contrary issues. Hence, tools to optimize the planning, maintenance, and operation of electrical networks are required. The optimal power flow (OPF) is a well-known problem  <span id='citeF-1'></span>[[#cite-1|[1]]] where the power balance and generation, thermal and voltage limits among other constraints are considered. However, the solution of this formulation could be non-optimal or insecure if contingencies occur in the grid. To securely operate considering the multiple contingencies that could arise, the OPF needs to be reformulated considering security constraints. This reformulation is known as Security Constraint Optimal Power Flow (SCOPF). According to  Cain et al. <span id='citeF-2'></span>[[#cite-2|[2]]],  an improvement of  5 % in the speed efficiency of the SCOPF algorithm can save between  619$  in the  U.S and it can also save  between 2687$  in the world. Illustrating, these savings are close to  1x10<sup>1</sup>  of the 2021 annual investment in the power sector  <span id='citeF-3'></span>[[#cite-3|[3]]].
 
+
Power systems must operate in energy equilibrium in a secure, reliable, economical, and sustainable way; commonly contrary issues. Hence, tools to optimize the planning, maintenance, and operation of electrical networks are required. The optimal power flow (OPF) is a well-known problem  <span id='citeF-1'></span>[[#cite-1|[1]]] where the power balance and generation, thermal and voltage limits among other constraints are considered. However, the solution of this formulation could be non-optimal or insecure if contingencies occur in the grid. To securely operate considering the multiple contingencies that could arise, the OPF needs to be reformulated considering security constraints. This reformulation is known as Security Constraint Optimal Power Flow (SCOPF). According to  <span id='citeF-2'></span>[[#cite-2|[2]]],  an improvement of  5   in the efficiency of the SCOPF algorithm can save between  619$  in the  U.S and it can also save  between 2687$  in the world. Illustrating, these savings are close to  1x10<sup>1</sup>  of the 2021 annual investment in the power sector  <span id='citeF-3'></span>[[#cite-3|[3]]].
+
  
 
To increase the performance of the SCOPF algorithm many advantages  are obtained. However, in order to employ SCOPF during real-time operation, the solution of this optimization problem needs to be computationally efficient given the well-known issues of OPF such as non-convexity  <span id='citeF-4'></span>[[#cite-4|[4]]], network size, integer-mixed variable decisions, among others. Therefore, to reduce the solution time of SCOPF algorithms, two approaches have been proposed. For one hand, to select a set of critical contingencies  <span id='citeF-5'></span><span id='citeF-6'></span>[[#cite-5|[5,6]]]. For other hand,  to simplify the problem using a linear approximation [Mithun2010].
 
To increase the performance of the SCOPF algorithm many advantages  are obtained. However, in order to employ SCOPF during real-time operation, the solution of this optimization problem needs to be computationally efficient given the well-known issues of OPF such as non-convexity  <span id='citeF-4'></span>[[#cite-4|[4]]], network size, integer-mixed variable decisions, among others. Therefore, to reduce the solution time of SCOPF algorithms, two approaches have been proposed. For one hand, to select a set of critical contingencies  <span id='citeF-5'></span><span id='citeF-6'></span>[[#cite-5|[5,6]]]. For other hand,  to simplify the problem using a linear approximation [Mithun2010].
  
Given the uncertainty in reducing the number of contingencies or using linear approximations during the planning and operation of the next-generation energy systems, a robust SCOPF assessment is required  <span id='citeF-7'></span>[[#cite-7|[7]]], However, this kind of algorithm presents a high computational cost. New approaches emerge to face this challenge, such as the use of reinforced learning (artificial intelligence algorithms) to operate networks during contingencies  <span id='citeF-8'></span>[[#cite-8|[8]]] or paralleling the Computing of the SCOPF by employing High-Performance Computing (HPC), both to reduce the computation cost. The issue with reinforced learning is that an artificial agent needs to be trained for each network with known states, therefore HPC is commonly used for different applications for power systems. For instance, in  <span id='citeF-9'></span>[[#cite-9|[9]]] an embedded computer is used to partially solve power flows paralleling the Newton-Raphson algorithm. In  <span id='citeF-10'></span><span id='citeF-11'></span>[[#cite-10|[10,11]]] a hybrid CPU-GPU approach to solving power flows using Parallel Computing is employed. Finally, in <span id='citeF-12'></span>[[#cite-12|[12]]] a Multi-CPU/Core Computing Environment is used for contingency analysis showing an acceleration ratio of 2.69x10<sup>1</sup> compared with sequential processing. However, the OPF is not considered.
+
Given the uncertainty in reducing the number of contingencies or using linear approximations during the planning and operation of the next-generation energy systems, a robust SCOPF assessment is required  <span id='citeF-7'></span>[[#cite-7|[7]]], However, this kind of algorithm presents a high computational cost. New approaches emerge to face this challenge, such as the use of reinforced learning (artificial intelligence algorithms) to operate networks during contingencies  <span id='citeF-8'></span>[[#cite-8|[8]]] or paralleling the Computing of the SCOPF by employing High-Performance Computing (HPC), both to reduce the computation cost. The issue with reinforced learning is that an artificial agent needs to be trained for each network with known states, therefore HPC is commonly used for different applications for power systems. For instance, in  Rodriguez et al. <span id='citeF-9'></span>[[#cite-9|[9]]] an embedded computer is used to partially solve power flows paralleling the Newton-Raphson algorithm. In  <span id='citeF-10'></span><span id='citeF-11'></span>[[#cite-10|[10,11]]] a hybrid CPU-GPU approach to solving power flows using Parallel Computing is employed. Finally, in Zhou and Feng <span id='citeF-12'></span>[[#cite-12|[12]]] a Multi-CPU/Core Computing Environment is used for contingency analysis showing an acceleration ratio of 2.69x10<sup>1</sup> compared with sequential processing. However, the OPF is not considered.
  
 
Based on the reported benefits of employing HPC in power systems applications  <span id='citeF-13'></span><span id='citeF-14'></span>[[#cite-13|[13,14]]], in this paper a novel SCOPF analysis using parallel computing is addressed. This approach maximizes the market surplus during regular operation and contingencies, considering network constraints of power generation and load ramps. Also, generators’ active and reactive capacity, lines and transformers thermal limits, switchable shunts, voltage security limits, and price responsive demand are considered. The main contributions of this paper are summarized as follows:
 
Based on the reported benefits of employing HPC in power systems applications  <span id='citeF-13'></span><span id='citeF-14'></span>[[#cite-13|[13,14]]], in this paper a novel SCOPF analysis using parallel computing is addressed. This approach maximizes the market surplus during regular operation and contingencies, considering network constraints of power generation and load ramps. Also, generators’ active and reactive capacity, lines and transformers thermal limits, switchable shunts, voltage security limits, and price responsive demand are considered. The main contributions of this paper are summarized as follows:
Line 27: Line 24:
 
* The SCOPF algorithm can run on a multi-node cluster platform. The ARPA-GO platform was used to eval the effectiveness  of the SCOPF algorithm using large and realistic networks
 
* The SCOPF algorithm can run on a multi-node cluster platform. The ARPA-GO platform was used to eval the effectiveness  of the SCOPF algorithm using large and realistic networks
  
This paper is organized as follows: in Background the theoretical background of OPF is introduced.  [[#3 SC-OPF Proposal |3]]  presents the proposed methodology to compute SCOPF using parallel computing, followed by  Results, where the algorithm is assessed for different study cases.  Finally, in Conclusion, conclusions are addressed.
 
  
==2 Background==
+
This paper is organized as follows: in Background the theoretical background of OPF is introduced. Section  [[#3 SC-OPF Proposal |3]]  presents the proposed methodology to compute SCOPF using parallel computing, followed by  Results, where the algorithm is assessed for different study cases.  Finally, in Conclusion, conclusions are addressed.
 +
 
 +
==2. Background==
  
 
The fundamental OPF problem is formulated to minimize the cost of generation subject to equality constraints of bus power balance and inequality constraints of maximum and minimum active and reactive power generation,  minimum and maximum bus voltages and thermal transmission constraints, including transformers and lines. This formulation is shown below, where it is stated to minimize:
 
The fundamental OPF problem is formulated to minimize the cost of generation subject to equality constraints of bus power balance and inequality constraints of maximum and minimum active and reactive power generation,  minimum and maximum bus voltages and thermal transmission constraints, including transformers and lines. This formulation is shown below, where it is stated to minimize:
Line 38: Line 36:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>{P_{g_i},u}{\sum_{i=1}^{N_{gen}} f\left(P_{g_i,u}\right)}{}{} </math>
+
| style="text-align: center;" | <math>{minimize}{\sum_{i=1}^{N_{gen}} f\left(P_{g_i,u}\right)} </math>
 
|}
 
|}
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (1)
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (1)
Line 50: Line 48:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>{ P_i-\operatorname{Re}\left(E_i \sum_{k=1}^{N_{bus}} Y_{ij} E_j \right)=}{0,}{i=1,\ldots,N_{bus}}</math>
+
| style="text-align: center;" | <math> P_i-\operatorname{Re}\left(E_i \sum_{k=1}^{N_{bus}} Y_{ij} E_j \right)={0,} \qquad i=1,\ldots,N_{bus}</math>
 
|}
 
|}
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (2)
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (2)
Line 60: Line 58:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>{ Q_i-\operatorname{Im}\left(E_i \sum_{j=1}^{N_{bus}} Y_{ij} E_j \right)=}{0,}{i=1,\ldots,N_{bus}}</math>
+
| style="text-align: center;" | <math> Q_i-\operatorname{Im}\left(E_i \sum_{j=1}^{N_{bus}} Y_{ij} E_j \right)={0,} \qquad i=1,\ldots,N_{bus}</math>
 
|}
 
|}
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (3)
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (3)
 
|}
 
|}
+
 
 
  {| class="formulaSCP" style="width: 100%; text-align: left;"  
 
  {| class="formulaSCP" style="width: 100%; text-align: left;"  
 
|-
 
|-
Line 70: Line 68:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>{P_{g_i}^{min}\leq P_{g_i}\leq}{ P_{g_i}^{max},\quad}{i=1,\ldots,N_{gen}}</math>
+
| style="text-align: center;" | <math>P_{g_i}^{\min}\leq P_{g_i}\leq P_{g_i}^{\max}, \qquad i=1,\ldots,N_{gen}</math>
 
|}
 
|}
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (4)
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (4)
Line 80: Line 78:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>{P_{g_i}^0-\Delta P_{g_i}^d \leq  P_{g_i} \leq  }{P_{g_i}^0+\Delta P_{g_i}^u,}{i=1,\ldots,N_{gen}}</math>
+
| style="text-align: center;" | <math>{P_{g_i}^0-\Delta P_{g_i}^d \leq  P_{g_i} \leq  }{P_{g_i}^0+\Delta P_{g_i}^u,}\qquad i=1,\ldots,N_{gen}</math>
 
|}
 
|}
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (5)
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (5)
Line 90: Line 88:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>{Q_{g_i}^{min}\leq Q_{g_i}\leq}{ Q_{g_i}^{max},\quad}{i=1,\ldots,N_{gen}}</math>
+
| style="text-align: center;" | <math>Q_{g_i}^{\min}\leq Q_{g_i}\leq Q_{g_i}^{\max},\qquad i=1,\ldots,N_{gen}</math>
 
|}
 
|}
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
Line 100: Line 98:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>{E_{i}^{min}\leq E_i\leq}{ E_{i}^{max},\quad}{i=1,\ldots,N_{bus}}</math>
+
| style="text-align: center;" | <math>E_{i}^{\min}\leq E_i\leq E_{i}^{\max},\qquad i=1,\ldots,N_{bus}</math>
 
|}
 
|}
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (7)
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (7)
Line 110: Line 108:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>{S_{ij}\leq}{ S_{ij}^{max},\quad}{i,j=1,\ldots,N_{branch}} </math>
+
| style="text-align: center;" | <math>S_{ij}\leq S_{ij}^{\max},\qquad i,j=1,\ldots,N_{branch} </math>
 
|}
 
|}
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (8)
 
| style="width: 5px;text-align: right;white-space: nowrap;" | (8)
 
|}
 
|}
  
where <math display="inline">P_{g_i}</math> is the active power generated by the generator <math display="inline">i</math>, <math display="inline">f</math> is the cost function, <math display="inline">N_{gen}</math> is the number of generators, <math display="inline">P_i</math> is the injected power at bus <math display="inline">i</math>, <math display="inline">E</math> is the absolute value of bus voltage, <math display="inline">P_{g_i}^0</math> is the generating power at prior condition, <math display="inline">\Delta P_{g_i}^d</math>,<math display="inline">\Delta P_{g_i}^d</math> are the down and up generator ramps, <math display="inline">N_{bus}</math> is the number of buses, <math display="inline">S_{ij}</math> is the power flow by branch, <math display="inline">Y_{ik}</math> is the branch admittance between bus <math display="inline">i</math> and <math display="inline">k</math>, <math display="inline">P_{g}^{min}</math> and <math display="inline">P_{g}^{max}</math> are generators limits, <math display="inline">E_{i}^{min}</math> and <math display="inline">E_{i}^{max}</math> are bus voltage limits, <math display="inline">S_{ij}^{max}</math> is the branch thermal limit. Finally, <math display="inline">u</math> is the vector of decision and state variables, bus angles <math display="inline">\left(\theta \right)</math> and voltages, and active and reactive generator power.       
+
where <math display="inline">P_{g_i}</math> is the active power generated by the generator <math display="inline">i</math>, <math display="inline">f</math> is the cost function, <math display="inline">N_{gen}</math> is the number of generators, <math display="inline">P_i</math> is the injected power at bus <math display="inline">i</math>, <math display="inline">E</math> is the absolute value of bus voltage, <math display="inline">P_{g_i}^0</math> is the generating power at prior condition, <math display="inline">\Delta P_{g_i}^d</math>,<math display="inline">\Delta P_{g_i}^d</math> are the down and up generator ramps, <math display="inline">N_{bus}</math> is the number of buses, <math display="inline">S_{ij}</math> is the power flow by branch, <math display="inline">Y_{ik}</math> is the branch admittance between bus <math display="inline">i</math> and <math display="inline">k</math>, <math display="inline">P_{g}^{\min}</math> and <math display="inline">P_{g}^{\max}</math>, and <math display="inline">Q_{g}^{\min}</math> and <math display="inline">Q_{g}^{\max}</math> are active and reactive generators limits, <math display="inline">E_{i}^{\min}</math> and <math display="inline">E_{i}^{\max}</math> are bus voltage limits, <math display="inline">S_{ij}^{\max}</math> is the branch thermal limit. Finally, <math display="inline">u</math> is the vector of decision and state variables, bus angles <math display="inline">\left(\theta \right)</math> and voltages, and active and reactive generator power.       
  
===2.1 Shunt Banks===
+
===2.1 Switched shunt capacitors===
  
The switched shunt banks are used to securely optimize the grid operation. These banks are composed of blocks with fixed steps resulting in an equivalent shunt susceptance as follows:
+
The switched shunt capacitors are used to securely optimize the grid operation. These capacitors are composed of blocks with fixed steps resulting in an equivalent shunt susceptance as follows:
  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
Line 128: Line 126:
 
| style="text-align: center;" | <math>b_{ii} = \sum _{a=1}^{N_a} b_a x_{ak} </math>
 
| style="text-align: center;" | <math>b_{ii} = \sum _{a=1}^{N_a} b_a x_{ak} </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (1)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (9)
 
|}
 
|}
  
Where <math display="inline">b_{ii}</math> is the resulting shunt susceptance at bus <math display="inline">i</math>, <math display="inline">a</math> is the block, <math display="inline">b_a</math> is the susceptance step size, <math display="inline">k</math> is the current step position, and <math display="inline">N_a</math> is the number of shunt blocks.
+
where <math display="inline">b_{ii}</math> is the resulting shunt susceptance at bus <math display="inline">i</math>, <math display="inline">a</math> is the block, <math display="inline">b_a</math> is the susceptance step size, <math display="inline">k</math> is the current step position, and <math display="inline">N_a</math> is the number of shunt blocks.
  
===2.2 Demand Response===
+
===2.2 Demand response===
  
 
The demand response allows to increase or decrease the load with an associated cost to enhance the SCOPF. The demand response is subject to:
 
The demand response allows to increase or decrease the load with an associated cost to enhance the SCOPF. The demand response is subject to:
Line 142: Line 140:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>t_{min} \leq t \leq t_{max} </math>
+
| style="text-align: center;" | <math>t_{\min} \leq t \leq t_{\max} </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (2)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (10)
 
|}
 
|}
  
Where <math display="inline">t</math> is the fraction of current load and <math display="inline">t_{min}</math> and <math display="inline">t_{max}</math> are the maximum and minimum fraction of load, respectively. Hence, the resulting active and reactive parts of the load are:
+
where <math display="inline">t</math> is the fraction of current load and <math display="inline">t_{\min}</math> and <math display="inline">t_{\max}</math> are the maximum and minimum fraction of load, respectively. Hence, the resulting active and reactive parts of the load are:
  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
Line 156: Line 154:
 
| style="text-align: center;" | <math>P_{l_i}  = P_{l_i}^0  t_i </math>
 
| style="text-align: center;" | <math>P_{l_i}  = P_{l_i}^0  t_i </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (3)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (11)
 
|}
 
|}
  
Line 166: Line 164:
 
| style="text-align: center;" | <math>Q_{l_i}  = Q_{l_i}^0  t_i </math>
 
| style="text-align: center;" | <math>Q_{l_i}  = Q_{l_i}^0  t_i </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (4)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (12)
 
|}
 
|}
  
Line 178: Line 176:
 
| style="text-align: center;" | <math>P_{l_i}^0-\Delta P_{l_i}^{d}  \leq P_{l_i} \leq P_{l_i}^0+\Delta P_{l_i}^{u}  </math>
 
| style="text-align: center;" | <math>P_{l_i}^0-\Delta P_{l_i}^{d}  \leq P_{l_i} \leq P_{l_i}^0+\Delta P_{l_i}^{u}  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (5)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (13)
 
|}
 
|}
  
Where <math display="inline">\Delta P_{l_i}^{rd}</math> , <math display="inline"> \Delta P_{l_i}^{ru}</math> are the down and upper ramp limits, respectively.
+
where <math display="inline">\Delta P_{l_i}^{rd}</math>, <math display="inline"> \Delta P_{l_i}^{ru}</math> are the down and upper ramp limits, respectively.
  
 
===2.3 Cost functions===
 
===2.3 Cost functions===
Line 194: Line 192:
 
| style="text-align: center;" | <math>y \ge m_j \left(x-x_j \right)+c_j </math>
 
| style="text-align: center;" | <math>y \ge m_j \left(x-x_j \right)+c_j </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (14)
 
|}
 
|}
  
 
where <math display="inline">j</math> is the segment of the piecewise function, <math display="inline">x</math> is the generator output power or demand, <math display="inline">m</math> is the slope, and <math display="inline">x_j,c_j</math> is the sequence of points of the segment, respectively. Commonly a piecewise function with one segment is replaced by a polynomial of grade one.
 
where <math display="inline">j</math> is the segment of the piecewise function, <math display="inline">x</math> is the generator output power or demand, <math display="inline">m</math> is the slope, and <math display="inline">x_j,c_j</math> is the sequence of points of the segment, respectively. Commonly a piecewise function with one segment is replaced by a polynomial of grade one.
  
==3 SC-OPF Proposal ==
+
==3. SC-OPF proposal ==
  
In this section, the proposed algorithm for solving the SCOPF using paralleling computing is addressed. In this algorithm, switched shunt banks, demand response, and piecewise cost functions for loads and generators are considered.  Systems operating in island mode are outside of the scope of this SCOPF algorithm.
+
In this section, the proposed algorithm for solving the SCOPF using paralleling computing is addressed. In this algorithm, switched shunt capacitors, demand response, and piecewise cost functions for loads and generators are considered.  Systems operating in island mode are outside of the scope of this SCOPF algorithm.
  
 
===3.1 SCOPF formulation===
 
===3.1 SCOPF formulation===
  
The proposed formulation is based  on 01_OPF_Statement as shown in 02_OPF_Statement_ARPA. In this formulation, the cost for normal operation (base case) and during a contingency (case k) are taken into account using the cost function <math display="inline">f_0</math> for the base case, <math display="inline">f_k</math> for each considered contingency, and the helper cost variables <math display="inline">y</math>. In the SCOPF, the set of constraints must be fulfilled for the base case and contingencies.
+
The proposed formulation is based  on traditional security constrained optimal power flow [[#cite-15|[15]]]. In this formulation, the cost for normal operation (base case) and during a contingency (case k) are taken into account using the cost function <math display="inline">f_0</math> for the base case, <math display="inline">f_k</math> for each considered contingency, and the helper cost variables <math display="inline">y</math>. In the SCOPF, the set of constraints must be fulfilled for the base case and contingencies. In this way, it is stated:
  
 +
To Maximize
  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
Line 213: Line 212:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>     {P_{g_i},u,P_{l_i}}{ f_0\left(P_{g_i},u,P_{l_i} \right)+\sum_{n=1}^{N_{gen}+N_{l}} y_n+\sum_{k=1}^{K} \left( f_k\left(P_{g_i},u,P_{l_i}\right)+\sum_{n=1}^{N_{gen}+N_{l}} y_n\right)}{}{} </math>
+
| style="text-align: center;" | <math>{ f_0\left(P_{g_i},u,P_{l_i} \right)+\sum_{n=1}^{N_{gen}+N_{l}} y_n+\sum_{k=1}^{K} \left( f_k\left(P_{g_i},u,P_{l_i}\right)+\sum_{n=1}^{N_{gen}+N_{l}} y_n\right)} </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (15)
 
|}
 
|}
 +
 +
Subject to
  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
Line 223: Line 224:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>     {P_i-\operatorname{Re}\left(E_i \sum_{k=1}^{N_{bus}} Y_{ij} E_j \right)}{=0}{i=1,\ldots,N_{bus}}</math>
+
| style="text-align: center;" | <math>{P_i-\operatorname{Re}\left(E_i \sum_{k=1}^{N_{bus}} Y_{ij} E_j \right)}{=0}, \qquad {i=1,\ldots,N_{bus}}</math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (16)
 
|}
 
|}
  
Line 233: Line 234:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>     {Q_i-\operatorname{Im}\left(E_i \sum_{k=1}^{N_{bus}} Y_{ij} E_j \right)}{=0}{i=1,\ldots,N_{bus}}</math>
+
| style="text-align: center;" | <math>{Q_i-\operatorname{Im}\left(E_i \sum_{k=1}^{N_{bus}} Y_{ij} E_j \right)}{=0}, \qquad {i=1,\ldots,N_{bus}}</math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (17)
 
|}
 
|}
  
Line 243: Line 244:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    { P_{l_i}^{0} t_{min}\leq P_{l_i}}{\leq P_{l_i}^{0} t_{max} \quad}{i=1,\ldots,N_{l}}</math>
+
| style="text-align: center;" | <math>    { P_{l_i}^{0} t_{min}\leq P_{l_i}}{\leq P_{l_i}^{0} t_{max}}, \qquad {i=1,\ldots,N_{l}}</math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (18)
 
|}
 
|}
  
Line 253: Line 254:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    {P_{l_i}^0-\Delta P_{l_i}^d \leq  P_{l_i} }{\leq P_{l_i}^0+\Delta P_{l_i}^u}{i=1,\ldots,N_{l}} </math>
+
| style="text-align: center;" | <math>    {P_{l_i}^0-\Delta P_{l_i}^d \leq  P_{l_i} }{\leq P_{l_i}^0+\Delta P_{l_i}^u}, \qquad {i=1,\ldots,N_{l}} </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (19)
 
|}
 
|}
  
Line 263: Line 264:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    { \cfrac{Q_{l_{i}^0}}{P_{l_{i}^0}}  P_{l_i}-Q_{l_i} }{= 0}{i=1,\ldots,N_{l}}  
+
| style="text-align: center;" | <math>    { \cfrac{Q_{l_{i}^0}}{P_{l_{i}^0}}  P_{l_i}-Q_{l_i} }{= 0}, \qquad  {i=1,\ldots,N_{l}}  
 
  </math>
 
  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (20)
 
|}
 
|}
  
Line 274: Line 275:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    {P_{g_i}^{min}\leq P_{g_i}}{\leq P_{g_i}^{max}\quad}{i=1,\ldots,N_{gen}}
+
| style="text-align: center;" | <math>    {P_{g_i}^{min}\leq P_{g_i}}{\leq P_{g_i}^{max}\quad}, \qquad  {i=1,\ldots,N_{gen}}
 
  </math>
 
  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (21)
 
|}
 
|}
  
Line 285: Line 286:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    {P_{g_i}^0-\Delta P_{g_i}^d \leq  P_{g_i}}{\leq P_{g_i}^0+\Delta P_{g_i}^u}{i=1,\ldots,N_{gen}}   
+
| style="text-align: center;" | <math>    {P_{g_i}^0-\Delta P_{g_i}^d \leq  P_{g_i}}{\leq P_{g_i}^0+\Delta P_{g_i}^u}, \qquad  {i=1,\ldots,N_{gen}}   
 
  </math>
 
  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (22)
 
|}
 
|}
  
Line 296: Line 297:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    {Q_{g_i}^{min}\leq Q_{g_i}}{\leq Q_{g_i}^{max}\quad}{i=1,\ldots,N_{gen}}  
+
| style="text-align: center;" | <math>    {Q_{g_i}^{min}\leq Q_{g_i}}{\leq Q_{g_i}^{max}\quad}, \qquad  {i=1,\ldots,N_{gen}}  
 
  </math>
 
  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (23)
 
|}
 
|}
  
Line 307: Line 308:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    {Q_{s_i}^{min}\leq Q_{s_i}}{\leq Q_{s_i}^{max}\quad}{i=1,\ldots,N_{shunt}}   
+
| style="text-align: center;" | <math>    {Q_{s_i}^{min}\leq Q_{s_i}}{\leq Q_{s_i}^{max}}, \qquad  {i=1,\ldots,N_{shunt}}   
 
  </math>
 
  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (24)
 
|}
 
|}
  
Line 318: Line 319:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    { P_{s_i} }{= 0}{i=1,\ldots,N_{shunt}}   
+
| style="text-align: center;" | <math>    { P_{s_i} }{= 0}, \qquad {i=1,\ldots,N_{shunt}}   
 
  </math>
 
  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (25)
 
|}
 
|}
  
Line 329: Line 330:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    {E_{i}^{min}\leq E_i}{\leq E_{i}^{max}\quad}{i=1,\ldots,N_{bus}}   
+
| style="text-align: center;" | <math>    {E_{i}^{min}\leq E_i}{\leq E_{i}^{max}}, \qquad {i=1,\ldots,N_{bus}}   
 
  </math>
 
  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (26)
 
|}
 
|}
  
Line 340: Line 341:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    {S_{ij}}{\leq S_{ij}^{max}\quad}{i,j=1,\ldots,N_{branch}}  
+
| style="text-align: center;" | <math>    {S_{ij}}{\leq S_{ij}^{max}}, \qquad {i,j=1,\ldots,N_{branch}}  
 
  </math>
 
  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (27)
 
|}
 
|}
  
Line 351: Line 352:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>    {m_j \left(x_i-x_j \right)+c_j}{\leq y_i\quad}{i=1,\ldots,N_{gen}+N_{l}}
+
| style="text-align: center;" | <math>    {m_j \left(x_i-x_j \right)+c_j}{\leq y_i} , \qquad  {i=1,\ldots,N_{gen}+N_{l}}
 
  </math>
 
  </math>
 
|}
 
|}
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
+
| style="width: 5px;text-align: right;white-space: nowrap;" | (28)
 
|}
 
|}
  
  
The demand response is modeled by assuming loads as generators injecting negative power and adding three constraints to the SCOPF. The first constraint is an inequality to model the minimum and maximum fraction of response load. The second one is an inequality to model the load ramps. The last constraint is equality to guarantee the ratio between reactive and active power demand response. For switched shunt banks, the algorithm is run in two stages. In the first one, the shunt banks are assumed as generators with inequalities of maximum and minimum reactive power <math display="inline">\left(Q_s\right)</math> and with equality constraints of active power equal to zero. In the second stage, the reactive power <math display="inline">\left(Q_s\right)</math> is approximate to the close shunt bank position, as shown in the following subsection. With that selected shunt block position, the resulting shunt impedance adds to the branch, and the OPF is back run, eliminating the assumed shunt as generators. Hence, the Nonlinear Interior Point Method based on Matpower formulation  <span id='citeF-15'></span>[[#cite-15|[15]]] solves the OPF problem for the base case and contingencies.
+
The demand response is modeled by assuming loads as generators injecting negative power and adding three constraints to the SCOPF. The first constraint is an inequality to model the minimum and maximum fraction of response load. The second one is an inequality to model the load ramps. The last constraint is equality to guarantee the ratio between reactive and active power demand response. For switched shunt capacitors, the algorithm is run in two stages. In the first one, the shunt capacitors are assumed as generators with inequalities of maximum and minimum reactive power <math display="inline">\left(Q_s\right)</math> and with equality constraints of active power equal to zero. In the second stage, the reactive power <math display="inline">\left(Q_s\right)</math> is approximate to the close shunt capacitors position, as shown in the following subsection. With that selected shunt block position, the resulting shunt impedance adds to the branch, and the OPF is back run, eliminating the assumed shunt as generators. Hence, the Nonlinear Interior Point Method based on Matpower formulation  <span id='citeF-15'></span>[[#cite-15|[15]]] solves the OPF problem for the base case and contingencies.
  
===3.2 Shunt Banks===
+
===3.2 Paralleling strategy===
 
+
The relation between switchable shunt bank block position and susceptance for the second stage of the OPF is shown in  SB_Table. Hence, for the base case and each contingency the shunt susceptance position is selected according to injected  power obtained to model the shunt bank as a generator with active power equal to zero.
+
 
+
 
+
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;"
+
|+ style="font-size: 75%;" |<span id='table-1'></span>Table. 1 Susceptance value for each shunt block position
+
|- style="border-top: 2px solid;"
+
| style="border-left: 2px solid;border-right: 2px solid;" |      <math display="inline">x_{sh}^{1}</math> 
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>x_{sh}^{2}</math>
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>x_{sh}^{Na}</math>
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math>\sum S_h </math>
+
|- style="border-top: 2px solid;"
+
| style="border-left: 2px solid;border-right: 2px solid;" |                            0     
+
| style="border-left: 2px solid;border-right: 2px solid;" | 0   
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{0,0,\cdots } </math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | 0     
+
| style="border-left: 2px solid;border-right: 2px solid;" | 1   
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{0,1,\cdots } </math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | 0     
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{0,\cdots ,\cdots } </math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | 0     
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_2</math>
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{0,k_2,\cdots }</math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | 1     
+
| style="border-left: 2px solid;border-right: 2px solid;" | 0   
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{1,0,\cdots } </math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | 1     
+
| style="border-left: 2px solid;border-right: 2px solid;" | 1   
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{1,1,\cdots } </math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | 1     
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{1,\cdots ,\cdots } </math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | 1     
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_2</math>
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{1,k_2,\cdots }</math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="border-left: 2px solid;border-right: 2px solid;" | 0   
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{\cdots ,0,\cdots } </math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="border-left: 2px solid;border-right: 2px solid;" | 1   
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{\cdots ,1,\cdots } </math>
+
 
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_2</math>
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{\cdots ,k_2,\cdots }</math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_1</math>
+
| style="border-left: 2px solid;border-right: 2px solid;" | 0   
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{k_1,0,\cdots } </math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_1</math>
+
| style="border-left: 2px solid;border-right: 2px solid;" | 1   
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{k_1,1,\cdots } </math>
+
|-
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_1</math>
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{k_1,\cdots ,\cdots } </math>
+
|- style="border-bottom: 2px solid;"
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_1</math>
+
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_2</math>
+
| style="border-left: 2px solid;border-right: 2px solid;" |
+
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{k_1,k_2,\cdots }</math>
+
 
+
|}
+
 
+
===3.3 Paralleling Strategy===
+
  
 
As the set of contingencies does not depend on each other, those can be computed  in parallel. The proposed paralleling strategy to solve SCOPF is shown in  LC_OPF_Strategy_One and can be summarized in the following steps:
 
As the set of contingencies does not depend on each other, those can be computed  in parallel. The proposed paralleling strategy to solve SCOPF is shown in  LC_OPF_Strategy_One and can be summarized in the following steps:
Line 458: Line 368:
  
 
<li>The base case OPF is run modeling the switchable shunt as generators      </li>
 
<li>The base case OPF is run modeling the switchable shunt as generators      </li>
<li>Fix the shunt bank position adding the equivalent shunt susceptance to each branch and run the OPF    </li>
+
<li>Fix the shunt capacitor position adding the equivalent shunt susceptance to each branch and run the OPF    </li>
 
<li>Read contingency set and update limits of voltage and branch current ratings for contingencies    </li>
 
<li>Read contingency set and update limits of voltage and branch current ratings for contingencies    </li>
 
<li>Update the ramp limits of generation and demand power using the <math display="inline">P_{g_i}^0,P_{g_i}^0</math> of the base case    </li>
 
<li>Update the ramp limits of generation and demand power using the <math display="inline">P_{g_i}^0,P_{g_i}^0</math> of the base case    </li>
Line 465: Line 375:
 
</ol>
 
</ol>
  
In step 5 is exploited the capabilities of parallel computing running each contingency as an OPF without cost variables. With this novel approach, it is guaranteed that during a contingency the power network operates fulfilling  all security constraints (power balance, limits of loads, generators, voltage, branches, among others).
+
 
 +
In step 5 is exploited the capabilities of parallel computing running each contingency as an OPF without cost variables. With this novel approach, it is guaranteed that during a contingency the power network operates fulfilling  all security constraints (power balance, limits of loads, generators, voltage, branches, among others) ([[#img-1|Figure 1]] ).
  
 
<div id='img-1'></div>
 
<div id='img-1'></div>
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
{| class="wikitable" style="margin: 1em auto 0.1em auto;border-collapse: collapse;width:auto;"
 +
|-style="background:white;"
 +
|style="text-align: center;padding:10px;"| |[[Image:Draft_Rivera_578093124-LC_OPF_Strategy_Paper.png|406px|Proposed paralleling strategy to solve SCOPF]]
 
|-
 
|-
|[[Image:Draft_Rivera_578093124-LC_OPF_Strategy_Paper.png|406px|Proposed paralleling strategy to solve SCOPF]]
+
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 1'''. Proposed paralleling strategy to solve SCOPF
|- style="text-align: center; font-size: 75%;"
+
| colspan="1" | '''Figure 1:''' Proposed paralleling strategy to solve SCOPF
+
 
|}
 
|}
 +
  
 
During both the read data and read contingencies stages, a comparison between the ramps of generators and loads and the maximum and minimum allowable power is performed to delete over-defined inequalities.
 
During both the read data and read contingencies stages, a comparison between the ramps of generators and loads and the maximum and minimum allowable power is performed to delete over-defined inequalities.
  
==4 Case of Study==
+
==4. Case of study==
  
 
The validation of the proposed parallel algorithm is performed using the data-set and the scoring method formulated by the ARPA-GO challenge  <span id='citeF-16'></span>[[#cite-16|[16]]]. The algorithm was implemented in Python using the following open-source libraries:
 
The validation of the proposed parallel algorithm is performed using the data-set and the scoring method formulated by the ARPA-GO challenge  <span id='citeF-16'></span>[[#cite-16|[16]]]. The algorithm was implemented in Python using the following open-source libraries:
Line 488: Line 400:
 
===4.1 Influence of number of CPU cores===
 
===4.1 Influence of number of CPU cores===
  
To assess the influence of several cores in the elapsed time to solve SCOPF, the case model C2T2N00617 scenario 185 of the ARPA-GO Competition data set was used. This is a system of 617 buses, 853 branches, and 108 contingencies. The CPU used was a Ryzen 3600 with 12 threats and a frequency base of  3.6 GHz . In  01_core_time is shown the elapsed time by the number of cores employed, where can be appreciated an exponential decay according to the number of cores. While comparing the ten threats with two threats, a speedup close to 5X was achieved.
+
To assess the influence of several cores in the elapsed time to solve SCOPF, the case model C2T2N00617 scenario 185 of the ARPA-GO Competition data set was used. This is a system of 617 buses, 853 branches, and 108 contingencies. The CPU used was a Ryzen 3600 with 12 threats and a frequency base of  3.6 GHz. In  01_core_time is shown the elapsed time by the number of cores employed, where can be appreciated an exponential decay according to the number of cores. While comparing the ten threats with two threats, a speedup close to 5X was achieved ([[#img-2|Figure 2]] ).
  
 
<div id='img-2'></div>
 
<div id='img-2'></div>
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
{| class="wikitable" style="margin: 1em auto 0.1em auto;border-collapse: collapse;width:auto;"
 +
|-style="background:white;"
 +
|style="text-align: center;padding:10px;"| [[Image:Draft_Rivera_578093124-01_core_time.png|540px|Elapsed time to solve SCOPF for the C2T2N00617-185 ARPA system using a different number of CPU-threats]]
 
|-
 
|-
|[[Image:Draft_Rivera_578093124-01_core_time.png|540px|Elapsed time to solve SCOPF for the C2T2N00617-185 ARPA system using a different number of CPU-threats]]
+
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 2'''. Elapsed time to solve SCOPF for the C2T2N00617-185 ARPA system using a different number of CPU-threats
|- style="text-align: center; font-size: 75%;"
+
| colspan="1" | '''Figure 2:''' Elapsed time to solve SCOPF for the C2T2N00617-185 ARPA system using a different number of CPU-threats
+
 
|}
 
|}
  
The benefits obtained with the proposed algorithm and the reported by ARPA-e Benchmark were  1.50314x10<sup>6</sup> USD  and 1.50807x10<sup>6</sup> USD, respectively. That shows a similar performance between the two algorithms.
+
 
 +
The benefits obtained with the proposed algorithm and the reported by ARPA-e Benchmark were  <math>1.50314\times 10^6</math> USD  and <math>1.50807\times 10^6</math> USD, respectively. That shows a similar performance between the two algorithms.
  
 
===4.2 Fixed demand and generation===
 
===4.2 Fixed demand and generation===
  
To evaluate the influence of demand response and dispatchable generators on the benefit,  a sensitivity analysis is performed executing the SCOPF with different levels of dispatchable load and generation. For that, a share of generation and demand are modeled as fixed elements injecting or consuming power. The  02_Demand_Load shows the results obtained for different ratios of fixed demand and generation. A fixed value of 1 means that all  loads or generators (1x10<sup>2</sup> ) are non-responsive or non-dispatchable. On the contrary, a fixed value of 0 means that all generators are dispatchable or all demands are responsive. As expected, for this case, the higher benefit was obtained to fix on  1  of the total elements of demand and generation. The lowest benefit was to fix a non-demand response of 1x10<sup>2</sup>  of the total loads and fixing the non-dispatchable generator at 6x10<sup>1</sup> . Overall, for the case model C2T2N00617-185 the demand response costs present a stronger influence on the benefit than the generation costs, demonstrating the potential benefits of the proposed SCOPF algorithm.
+
To evaluate the influence of demand response and dispatchable generators on the benefit,  a sensitivity analysis is performed executing the SCOPF with different levels of dispatchable load and generation. For that, a share of generation and demand are modeled as fixed elements injecting or consuming power. The  02_Demand_Load shows the results obtained for different ratios of fixed demand and generation. A fixed value of 1 means that all  loads or generators (<math>1\times 10^2</math>) are non-responsive or non-dispatchable. On the contrary, a fixed value of 0 means that all generators are dispatchable or all demands are responsive. As expected, for this case, the higher benefit was obtained to fix on  1  of the total elements of demand and generation. The lowest benefit was to fix a non-demand response of <math>1\times 10^2</math>  of the total loads and fixing the non-dispatchable generator at <math>6\times 10^1</math>. Overall, for the case model C2T2N00617-185 the demand response costs present a stronger influence on the benefit than the generation costs, demonstrating the potential benefits of the proposed SCOPF algorithm ([[#img-3|Figure 3]]).
  
 
<div id='img-3'></div>
 
<div id='img-3'></div>
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
{| class="wikitable" style="margin: 1em auto 0.1em auto;border-collapse: collapse;width:auto;"
 +
|-style="background:white;"
 +
|style="text-align: center;padding:10px;"| [[Image:Draft_Rivera_578093124-02_Demand_Load.png|540px|Influence of fixed loads and generators on the benefit (1x10<sup>6</sup> USD)for the case model C2T2N00617-185 ]]
 
|-
 
|-
|[[Image:Draft_Rivera_578093124-02_Demand_Load.png|540px|Influence of fixed loads and generators on the benefit (1x10<sup>6</sup> USD)for the case model C2T2N00617-185 ]]
+
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 3'''. Influence of fixed loads and generators on the benefit (<math>1\times 10^6</math> USD)for the case model C2T2N00617-185  
|- style="text-align: center; font-size: 75%;"
+
| colspan="1" | '''Figure 3:''' Influence of fixed loads and generators on the benefit (1x10<sup>6</sup> USD)for the case model C2T2N00617-185  
+
 
|}
 
|}
  
===4.3 Large Size Systems===
+
===4.3 Large size systems===
  
For assessing large size systems, the ARPA-GO competition platform was employed. This platform consists of a multi-node cluster with six nodes, each with 24 cores (a total of 144 cores) using the operating system Centos 7.4. MPI is used to manage the cluster. In  03_Comparision the benefit obtained for different ARPA-GO models using the ARPA-Benchmark results and the proposed SCOPF algorithm is shown. The number of contingencies for each model are 966, 500, 2540, 401, and 1023 respectively. The results show a similar performance between the two algorithms. For cases larger than 14000 buses, the algorithm shows slow convergence, and the platform interrupts the execution because the time limit was exceeded.
+
For assessing large size systems, the ARPA-GO competition platform was employed. This platform consists of a multi-node cluster with six nodes, each with 24 cores (a total of 144 cores) using the operating system Centos 7.4. MPI is used to manage the cluster. In  03_Comparision the benefit obtained for different ARPA-GO models using the ARPA-Benchmark results and the proposed SCOPF algorithm is shown. The number of contingencies for each model are 966, 500, 2540, 401, and 1023 respectively. The results show a similar performance between the two algorithms. For cases larger than 14000 buses, the algorithm shows slow convergence, and the platform interrupts the execution because the time limit was exceeded ([[#img-4|Figure 4]], where the code showed is the name of the power network and the number is the number of buses of the power network).
  
 
<div id='img-4'></div>
 
<div id='img-4'></div>
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
{| class="wikitable" style="margin: 1em auto 0.1em auto;border-collapse: collapse;width:auto;"
 +
|-style="background:white;"
 +
|style="text-align: center;padding:10px;"| [[Image:Draft_Rivera_578093124-03_Comparision.png|540px|Benefit Comparison between  ARPA-Benchmark and the proposed SCOPF for different scenarios]]
 
|-
 
|-
|[[Image:Draft_Rivera_578093124-03_Comparision.png|540px|Benefit Comparison between  ARPA-Benchmark and the proposed SCOPF for different scenarios]]
+
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 4'''. Benefit comparison between  ARPA-benchmark and the proposed SCOPF for different scenarios
|- style="text-align: center; font-size: 75%;"
+
| colspan="1" | '''Figure 4:''' Benefit Comparison between  ARPA-Benchmark and the proposed SCOPF for different scenarios
+
 
|}
 
|}
  
==5 Conclusion==
+
==5. Conclusion==
  
In this paper, an enhanced security constraints optimal power flow algorithm is proposed to be used in Paralleling Computing. This algorithm considers demand response, generator ramps limits, and switchable shunt banks during normal operation and contingencies based on the standard OPF formulation. The algorithm was assessed using python scripts and open libraries with the ARPA-GO competition data sets on a desktop and in a multi-node cluster. The tests performed show how the algorithm becomes more efficient according to the increase in the number of cores, and the SCOPF has shown convergence for systems of 12000 buses. However, in larger cases, the algorithm presents numerical error convergences. Finally, the algorithm was developed to support the secure online operation of power systems using multiple CPUs to reduce the execution time.
+
In this paper, an enhanced security constraints optimal power flow algorithm is proposed to be used in Paralleling Computing. This algorithm considers demand response, generator ramps limits, and switchable shunt capacitorss during normal operation and contingencies based on the standard OPF formulation. The algorithm was assessed using python scripts and open libraries with the ARPA-GO competition data sets on a desktop and in a multi-node cluster. The tests performed show how the algorithm becomes more efficient according to the increase in the number of cores, and the SCOPF has shown convergence for systems of 12000 buses. However, in larger cases, the algorithm presents numerical error convergences. Finally, the algorithm was developed to support the secure online operation of power systems using multiple CPUs to reduce the execution time.
  
 
==Conflict of interest==
 
==Conflict of interest==
Line 532: Line 445:
 
The authors declare that they have no conflict of interest.
 
The authors declare that they have no conflict of interest.
  
===BIBLIOGRAPHY===
+
==References==
 +
 
 +
<div class="auto" style="text-align: left;width: auto; margin-left: auto; margin-right: auto;font-size: 85%;">
  
 
<div id="cite-1"></div>
 
<div id="cite-1"></div>
'''[[#citeF-1|[1]]]''' Maskar, Mukund B and Thorat, A.R. and Korachgaon, Iranna. (2017) "A review on optimal power flow problem and solution methodologies". 2017 International Conference on Data Management, Analytics and Innovation (ICDMAI). IEEE 64&#8211;70
+
[[#citeF-1|[1]]] Maskar M.B., Thorat A.R., Korachgaon I. A review on optimal power flow problem and solution methodologies. 2017 International Conference on Data Management, Analytics and Innovation (ICDMAI), Pune, India,  64&#8211;70, 2017.
  
<div id="cite-2"></div>
+
<div id=cite-2></div>
'''[[#citeF-2|[2]]]''' Cain, Mb and O'Neill, Rp and Castillo, A. (2012) "History of Optimal Power Flow and Formulations (OPF Paper 1)". FERC Staff Tech. Pap. December 1&#8211;36
+
[[#citeF-2|[2]]] Cain, M.B., O'Neill R.P., Castillo A. History of optimal power flow and formulations (OPF Paper 1). FERC Staff Tech. Pap.1&#8211;36, December 2012.
  
<div id="cite-3"></div>
+
<div id=cite-3></div>
'''[[#citeF-3|[3]]]''' International Energy Agency. (2021) "World Energy Investment 2021". World Energy Investment 2021. OECD
+
[[#citeF-3|[3]]] International Energy Agency (IEA) 2021. World Energy Investment 2021, Paris https://www.iea.org/reports/world-energy-investment-2021
  
<div id="cite-4"></div>
+
<div id=cite-4></div>
'''[[#citeF-4|[4]]]''' Low, Steven H. (2014) "Convex Relaxation of Optimal Power Flow—Part I: Formulations and Equivalence", Volume 1. IEEE. IEEE Transactions on Control of Network Systems 1 15&#8211;27
+
[[#citeF-4|[4]]] Low S.H. Convex relaxation of optimal power flow. Part I: Formulations and equivalence. IEEE Transactions on Control of Network Systems, 1(1):15&#8211;27, 2014.
  
<div id="cite-5"></div>
+
<div id=cite-5></div>
'''[[#citeF-5|[5]]]''' Majidi-Qadikolai, Mohammad and Baldick, Ross. (2016) "Integration of Contingency Analysis With Systematic Transmission Capacity Expansion Planning: ERCOT Case Study", Volume 31. Institute of Electrical and Electronics Engineers Inc. IEEE Transactions on Power Systems 3 2234&#8211;2245
+
[[#citeF-5|[5]]] Majidi-Qadikolai M., Baldick R. Integration of contingency analysis with systematic transmission capacity expansion planning: ERCOT case study. Institute of Electrical and Electronics Engineers Inc. IEEE Transactions on Power Systems, 31(3):2234&#8211;2245, 2016.
  
<div id="cite-6"></div>
+
<div id=cite-6></div>
'''[[#citeF-6|[6]]]''' Valencia-Zuluaga, Tomas and Agudelo-Martinez, Daniel and Arango-Angarita, Dario and Acosta-Urrego, Camilo and Rivera, Sergio and Rodriguez-Medina, Diego and Gers, Juan. (2021) "A Fast Decomposition Method to Solve a Security-Constrained Optimal Power Flow (SCOPF) Problem Through Constraint Handling", Volume 9. Institute of Electrical and Electronics Engineers Inc. IEEE Access 52812&#8211;52824
+
[[#citeF-6|[6]]] Valencia-Zuluaga T., Agudelo-Martinez D., Arango-Angarita D., Acosta-Urrego C., Rivera S., Rodriguez-Medina D., Gers J. A fast decomposition method to solve a Security-Constrained Optimal Power Flow (SCOPF) problem through constraint handling. Institute of Electrical and Electronics Engineers Inc. IEEE Access, 9:52812&#8211;52824, 2021.
  
<div id="cite-7"></div>
+
<div id=cite-7></div>
'''[[#citeF-7|[7]]]''' Moreira, Alexandre and Street, Alexandre and Arroyo, Jose M. (2015) "An Adjustable Robust Optimization Approach for Contingency-Constrained Transmission Expansion Planning", Volume 30. Institute of Electrical and Electronics Engineers Inc. IEEE Transactions on Power Systems 4 2013&#8211;2022
+
[[#citeF-7|[7]]] Moreira A., Street A., Arroyo J.M. 2015 An adjustable robust optimization approach for contingency-constrained transmission expansion planning. Institute of Electrical and Electronics Engineers Inc. IEEE Transactions on Power Systems, 30(4):2013&#8211;2022, 2015.
  
<div id="cite-8"></div>
+
<div id=cite-8></div>
'''[[#citeF-8|[8]]]''' Marot, Antoine and Donnot, Benjamin and Dulac-Arnold, Gabriel and Kelly, Adrian and O'Sullivan, Aïdan and Viebahn, Jan and Awad, Mariette and Guyon, Isabelle and Panciatici, Patrick and Romero, Camilo. (2021) "Learning to run a Power Network Challenge: a Retrospective Analysis" 112&#8211;132
+
[[#citeF-8|[8]]] Taha S., Poland J.  Knezovic K.,   Shchetinin D. Learning to run a power network under varying grid topology. 2022 IEEE 7th International Energy Conference (ENERGYCON), pp. 1-6, Riga, Latviadoi, 2022.
  
<div id="cite-9"></div>
+
<div id=cite-9></div>
'''[[#citeF-9|[9]]]''' Rodriguez, Diego F. and Alvarez, David L. and Gomez, Diego and Gers, Juan M. and Rivera, Sergio. (2021) "Low-Cost Analysis of Load Flow Computing Using Embedded Computer Empowered by GPU". 2021 IEEE Power & Energy Society Innovative Smart Grid Technologies Conference (ISGT). IEEE 1&#8211;5
+
[[#citeF-9|[9]]] Rodriguez D.F., Alvarez D.L.Gomez D., Gers J.M., Rivera S. Low-cost analysis of load flow computing using embedded computer empowered by GPU. 2021 IEEE Power & Energy Society Innovative Smart Grid Technologies Conference (ISGT), IEEE, Washington, DC, USA, pp. 1&#8211;5, 2021.
  
<div id="cite-10"></div>
+
<div id=cite-10></div>
'''[[#citeF-10|[10]]]''' Araújo, Igor and Tadaiesky, Vincent and Cardoso, Diego and Fukuyama, Yoshikazu and Santana, Ádamo. (2019) "Simultaneous parallel power flow calculations using hybrid CPU-GPU approach", Volume 105. Elsevier BV. International Journal of Electrical Power & Energy Systems 229&#8211;236
+
[[#citeF-10|[10]]] Araújo I., Tadaiesky V., Cardoso D., Fukuyama Y., Santana Á. Simultaneous parallel power flow calculations using hybrid CPU-GPU approach. Elsevier BV. International Journal of Electrical Power & Energy Systems, 105:229&#8211;236, 2019.
  
<div id="cite-11"></div>
+
<div id=cite-11></div>
'''[[#citeF-11|[11]]]''' Wang, Zhenqi and Wende-von Berg, Sebastian and Braun, Martin. (2021) "Fast parallel Newton–Raphson power flow solver for large number of system calculations with CPU and GPU", Volume 27. Elsevier. Sustainable Energy, Grids and Networks 100483
+
[[#citeF-11|[11]]] Wang Z., Wende-von Berg S., Braun M. Fast parallel Newton–Raphson power flow solver for large number of system calculations with CPU and GPU. Sustainable Energy, Grids and Networks, 27:100483, 2021.
  
<div id="cite-12"></div>
+
<div id=cite-12></div>
'''[[#citeF-12|[12]]]''' Zhou, Mike and Feng, Donghao. (2019) "Parallel Contingency Analysis for Multi-CPU/Core Computing Environment", Volume 52. Elsevier B.V. IFAC-PapersOnLine 4 105&#8211;110
+
[[#citeF-12|[12]]] Zhou M., Feng D. Parallel contingency analysis for multi-CPU/core computing environment. IFAC-PapersOnLine, 52(4):105&#8211;110, 2019.
  
<div id="cite-13"></div>
+
<div id=cite-13></div>
'''[[#citeF-13|[13]]]''' Khaitan, Siddhartha Kumar. (2016) "A survey of high-performance computing approaches in power systems", Volume 2016-Novem. 2016 IEEE Power and Energy Society General Meeting (PESGM). IEEE 1&#8211;5
+
[[#citeF-13|[13]]] Khaitan S.K.. A survey of high-performance computing approaches in power systems. 2016 IEEE Power and Energy Society General Meeting (PESGM), IEEE pp. 1&#8211;5, Boston, MA, USA, 2016.
  
<div id="cite-14"></div>
+
<div id=cite-14></div>
'''[[#citeF-14|[14]]]''' Rodriguez, Diego and Gomez, Diego and Alvarez, David and Rivera, Sergio. (2021) "A Review of Parallel Heterogeneous Computing Algorithms in Power Systems", Volume 14. Multidisciplinary Digital Publishing Institute. Algorithms 10 275
+
[[#citeF-14|[14]]] Rodriguez D., Gomez D., Alvarez D., Rivera S. A review of parallel heterogeneous computing algorithms in power systems. Multidisciplinary Digital Publishing Institute Algorithms, 14(10):275, 2021.
  
<div id="cite-15"></div>
+
<div id=cite-15></div>
'''[[#citeF-15|[15]]]''' Zimmerman, Ray D. and Murillo-Sanchez, Carlos E. and Thomas, Robert J. (2009) "MATPOWER's extensible optimal power flow architecture". 2009 IEEE Power & Energy Society General Meeting. IEEE 1&#8211;7
+
[[#citeF-15|[15]]] Zimmerman R.D., Murillo-Sanchez C.E., Thomas R.J. MATPOWER's extensible optimal power flow architecture. 2009 IEEE Power & Energy Society General Meeting, pp. 1&#8211;7, Calgary, AB, Canada, 2009.
  
<div id="cite-16"></div>
+
<div id=cite-16></div>
'''[[#citeF-16|[16]]]''' . (2019) "ARPA-E Grid Optimization Competition"
+
[[#citeF-16|[16]]] Yan Z.,  Xu Y. A hybrid data-driven method for fast solution of security-constrained optimal power flow. IEEE Transactions on Power Systems, 37(6):4365-4374, 2022.

Latest revision as of 10:33, 31 January 2023

Abstract

This paper presents a novel approach for solving the security-constrained optimal power flow (SCOPF) optimization problem using parallel Computing. In this approach, switched shunt capacitors, generation power ramp, and demand response are considered in the SCOPF by maximizing the market surplus during regular operation and for a set of contingencies of branches and generators. The optimization problem is solved using the Nonlinear Interior Point Method. The contingency assessment is paralleled in multiple CPU cores to decrease the computation time. Additionally, the test systems used in ARPA-GO competition were used and compared with the ARPA benchmark results to assess the proposed algorithm. The numerical results show this method is suitable for fast SCOPF using paralleling Computing.

Keywords: High-performance computing, interior-point method, reliability, Security Constraint Optimal Power Flow (SCOPF)

1. Introduction

Power systems must operate in energy equilibrium in a secure, reliable, economical, and sustainable way; commonly contrary issues. Hence, tools to optimize the planning, maintenance, and operation of electrical networks are required. The optimal power flow (OPF) is a well-known problem [1] where the power balance and generation, thermal and voltage limits among other constraints are considered. However, the solution of this formulation could be non-optimal or insecure if contingencies occur in the grid. To securely operate considering the multiple contingencies that could arise, the OPF needs to be reformulated considering security constraints. This reformulation is known as Security Constraint Optimal Power Flow (SCOPF). According to Cain et al. [2], an improvement of 5 % in the speed efficiency of the SCOPF algorithm can save between 619$ in the U.S and it can also save between 2687$ in the world. Illustrating, these savings are close to 1x101 of the 2021 annual investment in the power sector [3].

To increase the performance of the SCOPF algorithm many advantages are obtained. However, in order to employ SCOPF during real-time operation, the solution of this optimization problem needs to be computationally efficient given the well-known issues of OPF such as non-convexity [4], network size, integer-mixed variable decisions, among others. Therefore, to reduce the solution time of SCOPF algorithms, two approaches have been proposed. For one hand, to select a set of critical contingencies [5,6]. For other hand, to simplify the problem using a linear approximation [Mithun2010].

Given the uncertainty in reducing the number of contingencies or using linear approximations during the planning and operation of the next-generation energy systems, a robust SCOPF assessment is required [7], However, this kind of algorithm presents a high computational cost. New approaches emerge to face this challenge, such as the use of reinforced learning (artificial intelligence algorithms) to operate networks during contingencies [8] or paralleling the Computing of the SCOPF by employing High-Performance Computing (HPC), both to reduce the computation cost. The issue with reinforced learning is that an artificial agent needs to be trained for each network with known states, therefore HPC is commonly used for different applications for power systems. For instance, in Rodriguez et al. [9] an embedded computer is used to partially solve power flows paralleling the Newton-Raphson algorithm. In [10,11] a hybrid CPU-GPU approach to solving power flows using Parallel Computing is employed. Finally, in Zhou and Feng [12] a Multi-CPU/Core Computing Environment is used for contingency analysis showing an acceleration ratio of 2.69x101 compared with sequential processing. However, the OPF is not considered.

Based on the reported benefits of employing HPC in power systems applications [13,14], in this paper a novel SCOPF analysis using parallel computing is addressed. This approach maximizes the market surplus during regular operation and contingencies, considering network constraints of power generation and load ramps. Also, generators’ active and reactive capacity, lines and transformers thermal limits, switchable shunts, voltage security limits, and price responsive demand are considered. The main contributions of this paper are summarized as follows:

  • A novel SCOPF algorithm is proposed to run in parallel. This algorithm is divided in two main stages, first one where a OPF is solved for a base case optimizing the market surplus, and a second one where each contingency is solved in parallel in order to obtain the conditions to operate the system in a secure condition. The contingency assessment is performed by solving an OPF with both power generation and demand costs equal to zero and using the OPF base case results as initial points. This algorithm can provide a rapidly and reliable solution for optimal and secure operation of power networks
  • For the SCOPF algorithm, the fixed switchable shunts are modeled as generators with an active power equal to zero and no cost, and the responsive demand is modeled as generators injecting negative power with constant power factor. This novel modeling can improve the optimal operation of modern power systems
  • The SCOPF algorithm can run on a multi-node cluster platform. The ARPA-GO platform was used to eval the effectiveness of the SCOPF algorithm using large and realistic networks


This paper is organized as follows: in Background the theoretical background of OPF is introduced. Section 3 presents the proposed methodology to compute SCOPF using parallel computing, followed by Results, where the algorithm is assessed for different study cases. Finally, in Conclusion, conclusions are addressed.

2. Background

The fundamental OPF problem is formulated to minimize the cost of generation subject to equality constraints of bus power balance and inequality constraints of maximum and minimum active and reactive power generation, minimum and maximum bus voltages and thermal transmission constraints, including transformers and lines. This formulation is shown below, where it is stated to minimize:

(1)

subject to

(2)
(3)
(4)
(5)
(6)
(7)
(8)

where is the active power generated by the generator , is the cost function, is the number of generators, is the injected power at bus , is the absolute value of bus voltage, is the generating power at prior condition, , are the down and up generator ramps, is the number of buses, is the power flow by branch, is the branch admittance between bus and , and , and and are active and reactive generators limits, and are bus voltage limits, is the branch thermal limit. Finally, is the vector of decision and state variables, bus angles and voltages, and active and reactive generator power.

2.1 Switched shunt capacitors

The switched shunt capacitors are used to securely optimize the grid operation. These capacitors are composed of blocks with fixed steps resulting in an equivalent shunt susceptance as follows:

(9)

where is the resulting shunt susceptance at bus , is the block, is the susceptance step size, is the current step position, and is the number of shunt blocks.

2.2 Demand response

The demand response allows to increase or decrease the load with an associated cost to enhance the SCOPF. The demand response is subject to:

(10)

where is the fraction of current load and and are the maximum and minimum fraction of load, respectively. Hence, the resulting active and reactive parts of the load are:

(11)
(12)

where , are the active and reactive demands at bus , respectively, and , are the active and reactive demand at a primary operating point. Additionally, the loads can be subject to ramp limits as follows:

(13)

where , are the down and upper ramp limits, respectively.

2.3 Cost functions

Polynomial and piecewise linear cost functions are used for an OPF assessment if convex functions are assumed [15]. For piecewise linear functions, a helper cost (auxiliary) variable is added for each segment of the function, and the following constraints are included in the formulation of OPF:

(14)

where is the segment of the piecewise function, is the generator output power or demand, is the slope, and is the sequence of points of the segment, respectively. Commonly a piecewise function with one segment is replaced by a polynomial of grade one.

3. SC-OPF proposal

In this section, the proposed algorithm for solving the SCOPF using paralleling computing is addressed. In this algorithm, switched shunt capacitors, demand response, and piecewise cost functions for loads and generators are considered. Systems operating in island mode are outside of the scope of this SCOPF algorithm.

3.1 SCOPF formulation

The proposed formulation is based on traditional security constrained optimal power flow [15]. In this formulation, the cost for normal operation (base case) and during a contingency (case k) are taken into account using the cost function for the base case, for each considered contingency, and the helper cost variables . In the SCOPF, the set of constraints must be fulfilled for the base case and contingencies. In this way, it is stated:

To Maximize

(15)

Subject to

(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)


The demand response is modeled by assuming loads as generators injecting negative power and adding three constraints to the SCOPF. The first constraint is an inequality to model the minimum and maximum fraction of response load. The second one is an inequality to model the load ramps. The last constraint is equality to guarantee the ratio between reactive and active power demand response. For switched shunt capacitors, the algorithm is run in two stages. In the first one, the shunt capacitors are assumed as generators with inequalities of maximum and minimum reactive power and with equality constraints of active power equal to zero. In the second stage, the reactive power is approximate to the close shunt capacitors position, as shown in the following subsection. With that selected shunt block position, the resulting shunt impedance adds to the branch, and the OPF is back run, eliminating the assumed shunt as generators. Hence, the Nonlinear Interior Point Method based on Matpower formulation [15] solves the OPF problem for the base case and contingencies.

3.2 Paralleling strategy

As the set of contingencies does not depend on each other, those can be computed in parallel. The proposed paralleling strategy to solve SCOPF is shown in LC_OPF_Strategy_One and can be summarized in the following steps:

  1. The base case OPF is run modeling the switchable shunt as generators
  2. Fix the shunt capacitor position adding the equivalent shunt susceptance to each branch and run the OPF
  3. Read contingency set and update limits of voltage and branch current ratings for contingencies
  4. Update the ramp limits of generation and demand power using the of the base case
  5. Assign to each contingency a core of the available CPUs to execute in parallel steps 1 and 2. In summary, in this step the secure operation conditions for each contingency is assessed, solving the OPF problem of 02_OPF_Statement_ARPA assuming generation and demand cost as zero, in other words, =0. Hence, the optimization problem is reduced to remove both the helper cost variables and the piecewise restrictions.


In step 5 is exploited the capabilities of parallel computing running each contingency as an OPF without cost variables. With this novel approach, it is guaranteed that during a contingency the power network operates fulfilling all security constraints (power balance, limits of loads, generators, voltage, branches, among others) (Figure 1 ).

|Proposed paralleling strategy to solve SCOPF
Figure 1. Proposed paralleling strategy to solve SCOPF


During both the read data and read contingencies stages, a comparison between the ramps of generators and loads and the maximum and minimum allowable power is performed to delete over-defined inequalities.

4. Case of study

The validation of the proposed parallel algorithm is performed using the data-set and the scoring method formulated by the ARPA-GO challenge [16]. The algorithm was implemented in Python using the following open-source libraries:

  • Pandas: For management data
  • Scipy: For sparse matrix operations
  • pypardiso: Python interface to the Intel MKL Pardiso library to solve sparse linear systems of equations
  • mpi4py: Python bindings for the Message Passing Interface (MPI) standard, to exploit multiple processors on workstations or clusters

4.1 Influence of number of CPU cores

To assess the influence of several cores in the elapsed time to solve SCOPF, the case model C2T2N00617 scenario 185 of the ARPA-GO Competition data set was used. This is a system of 617 buses, 853 branches, and 108 contingencies. The CPU used was a Ryzen 3600 with 12 threats and a frequency base of 3.6 GHz. In 01_core_time is shown the elapsed time by the number of cores employed, where can be appreciated an exponential decay according to the number of cores. While comparing the ten threats with two threats, a speedup close to 5X was achieved (Figure 2 ).

Elapsed time to solve SCOPF for the C2T2N00617-185 ARPA system using a different number of CPU-threats
Figure 2. Elapsed time to solve SCOPF for the C2T2N00617-185 ARPA system using a different number of CPU-threats


The benefits obtained with the proposed algorithm and the reported by ARPA-e Benchmark were USD and USD, respectively. That shows a similar performance between the two algorithms.

4.2 Fixed demand and generation

To evaluate the influence of demand response and dispatchable generators on the benefit, a sensitivity analysis is performed executing the SCOPF with different levels of dispatchable load and generation. For that, a share of generation and demand are modeled as fixed elements injecting or consuming power. The 02_Demand_Load shows the results obtained for different ratios of fixed demand and generation. A fixed value of 1 means that all loads or generators () are non-responsive or non-dispatchable. On the contrary, a fixed value of 0 means that all generators are dispatchable or all demands are responsive. As expected, for this case, the higher benefit was obtained to fix on 1 of the total elements of demand and generation. The lowest benefit was to fix a non-demand response of of the total loads and fixing the non-dispatchable generator at . Overall, for the case model C2T2N00617-185 the demand response costs present a stronger influence on the benefit than the generation costs, demonstrating the potential benefits of the proposed SCOPF algorithm (Figure 3).

Influence of fixed loads and generators on the benefit (1x106 USD)for the case model C2T2N00617-185
Figure 3. Influence of fixed loads and generators on the benefit ( USD)for the case model C2T2N00617-185

4.3 Large size systems

For assessing large size systems, the ARPA-GO competition platform was employed. This platform consists of a multi-node cluster with six nodes, each with 24 cores (a total of 144 cores) using the operating system Centos 7.4. MPI is used to manage the cluster. In 03_Comparision the benefit obtained for different ARPA-GO models using the ARPA-Benchmark results and the proposed SCOPF algorithm is shown. The number of contingencies for each model are 966, 500, 2540, 401, and 1023 respectively. The results show a similar performance between the two algorithms. For cases larger than 14000 buses, the algorithm shows slow convergence, and the platform interrupts the execution because the time limit was exceeded (Figure 4, where the code showed is the name of the power network and the number is the number of buses of the power network).

Benefit Comparison between  ARPA-Benchmark and the proposed SCOPF for different scenarios
Figure 4. Benefit comparison between ARPA-benchmark and the proposed SCOPF for different scenarios

5. Conclusion

In this paper, an enhanced security constraints optimal power flow algorithm is proposed to be used in Paralleling Computing. This algorithm considers demand response, generator ramps limits, and switchable shunt capacitorss during normal operation and contingencies based on the standard OPF formulation. The algorithm was assessed using python scripts and open libraries with the ARPA-GO competition data sets on a desktop and in a multi-node cluster. The tests performed show how the algorithm becomes more efficient according to the increase in the number of cores, and the SCOPF has shown convergence for systems of 12000 buses. However, in larger cases, the algorithm presents numerical error convergences. Finally, the algorithm was developed to support the secure online operation of power systems using multiple CPUs to reduce the execution time.

Conflict of interest

The authors declare that they have no conflict of interest.

References

[1] Maskar M.B., Thorat A.R., Korachgaon I. A review on optimal power flow problem and solution methodologies. 2017 International Conference on Data Management, Analytics and Innovation (ICDMAI), Pune, India, 64–70, 2017.

[2] Cain, M.B., O'Neill R.P., Castillo A. History of optimal power flow and formulations (OPF Paper 1). FERC Staff Tech. Pap., 1–36, December 2012.

[3] International Energy Agency (IEA) 2021. World Energy Investment 2021, Paris https://www.iea.org/reports/world-energy-investment-2021

[4] Low S.H. Convex relaxation of optimal power flow. Part I: Formulations and equivalence. IEEE Transactions on Control of Network Systems, 1(1):15–27, 2014.

[5] Majidi-Qadikolai M., Baldick R. Integration of contingency analysis with systematic transmission capacity expansion planning: ERCOT case study. Institute of Electrical and Electronics Engineers Inc. IEEE Transactions on Power Systems, 31(3):2234–2245, 2016.

[6] Valencia-Zuluaga T., Agudelo-Martinez D., Arango-Angarita D., Acosta-Urrego C., Rivera S., Rodriguez-Medina D., Gers J. A fast decomposition method to solve a Security-Constrained Optimal Power Flow (SCOPF) problem through constraint handling. Institute of Electrical and Electronics Engineers Inc. IEEE Access, 9:52812–52824, 2021.

[7] Moreira A., Street A., Arroyo J.M. 2015 An adjustable robust optimization approach for contingency-constrained transmission expansion planning. Institute of Electrical and Electronics Engineers Inc. IEEE Transactions on Power Systems, 30(4):2013–2022, 2015.

[8] Taha S., Poland J. Knezovic K., Shchetinin D. Learning to run a power network under varying grid topology. 2022 IEEE 7th International Energy Conference (ENERGYCON), pp. 1-6, Riga, Latviadoi, 2022.

[9] Rodriguez D.F., Alvarez D.L., Gomez D., Gers J.M., Rivera S. Low-cost analysis of load flow computing using embedded computer empowered by GPU. 2021 IEEE Power & Energy Society Innovative Smart Grid Technologies Conference (ISGT), IEEE, Washington, DC, USA, pp. 1–5, 2021.

[10] Araújo I., Tadaiesky V., Cardoso D., Fukuyama Y., Santana Á. Simultaneous parallel power flow calculations using hybrid CPU-GPU approach. Elsevier BV. International Journal of Electrical Power & Energy Systems, 105:229–236, 2019.

[11] Wang Z., Wende-von Berg S., Braun M. Fast parallel Newton–Raphson power flow solver for large number of system calculations with CPU and GPU. Sustainable Energy, Grids and Networks, 27:100483, 2021.

[12] Zhou M., Feng D. Parallel contingency analysis for multi-CPU/core computing environment. IFAC-PapersOnLine, 52(4):105–110, 2019.

[13] Khaitan S.K.. A survey of high-performance computing approaches in power systems. 2016 IEEE Power and Energy Society General Meeting (PESGM), IEEE pp. 1–5, Boston, MA, USA, 2016.

[14] Rodriguez D., Gomez D., Alvarez D., Rivera S. A review of parallel heterogeneous computing algorithms in power systems. Multidisciplinary Digital Publishing Institute Algorithms, 14(10):275, 2021.

[15] Zimmerman R.D., Murillo-Sanchez C.E., Thomas R.J. MATPOWER's extensible optimal power flow architecture. 2009 IEEE Power & Energy Society General Meeting, pp. 1–7, Calgary, AB, Canada, 2009.

[16] Yan Z., Xu Y. A hybrid data-driven method for fast solution of security-constrained optimal power flow. IEEE Transactions on Power Systems, 37(6):4365-4374, 2022.
Back to Top

Document information

Published on 31/01/23
Accepted on 30/01/23
Submitted on 20/10/22

Volume 39, Issue 1, 2023
DOI: 10.23967/j.rimni.2023.01.004
Licence: CC BY-NC-SA license

Document Score

0

Views 25
Recommendations 0

Share this document

claim authorship

Are you one of the authors of this document?