(14 intermediate revisions by 2 users not shown) | |||
Line 12: | Line 12: | ||
==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 <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 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]]]. |
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 23: | Line 23: | ||
* 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 | * 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 | * 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 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. | 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. | ||
Line 35: | Line 36: | ||
{| style="text-align: left; margin:auto;width: 100%;" | {| style="text-align: left; margin:auto;width: 100%;" | ||
|- | |- | ||
− | | style="text-align: center;" | <math>{minimize}{\sum_{i=1}^{N_{gen}} f\left(P_{g_i,u}\right) | + | | 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 47: | Line 48: | ||
{| style="text-align: left; margin:auto;width: 100%;" | {| style="text-align: left; margin:auto;width: 100%;" | ||
|- | |- | ||
− | | style="text-align: center;" | <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 57: | Line 58: | ||
{| style="text-align: left; margin:auto;width: 100%;" | {| style="text-align: left; margin:auto;width: 100%;" | ||
|- | |- | ||
− | | style="text-align: center;" | <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) | ||
Line 67: | Line 68: | ||
{| style="text-align: left; margin:auto;width: 100%;" | {| style="text-align: left; margin:auto;width: 100%;" | ||
|- | |- | ||
− | | style="text-align: center;" | <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 77: | 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,} | + | | 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 87: | Line 88: | ||
{| style="text-align: left; margin:auto;width: 100%;" | {| style="text-align: left; margin:auto;width: 100%;" | ||
|- | |- | ||
− | | style="text-align: center;" | <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 97: | Line 98: | ||
{| style="text-align: left; margin:auto;width: 100%;" | {| style="text-align: left; margin:auto;width: 100%;" | ||
|- | |- | ||
− | | style="text-align: center;" | <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 107: | Line 108: | ||
{| style="text-align: left; margin:auto;width: 100%;" | {| style="text-align: left; margin:auto;width: 100%;" | ||
|- | |- | ||
− | | style="text-align: center;" | <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>, 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. | + | 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 Switched shunt capacitors=== | ===2.1 Switched shunt capacitors=== | ||
Line 139: | 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;" | (10) | | 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 178: | Line 179: | ||
|} | |} | ||
− | + | 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 211: | Line 212: | ||
{| style="text-align: left; margin:auto;width: 100%;" | {| style="text-align: left; margin:auto;width: 100%;" | ||
|- | |- | ||
− | | 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) | + | | 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;" | (15) | | style="width: 5px;text-align: right;white-space: nowrap;" | (15) | ||
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;" | (16) | | 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;" | (17) | | 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} | + | | 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;" | (18) | | 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;" | (19) | | 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> | ||
|} | |} | ||
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> | ||
|} | |} | ||
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> | ||
|} | |} | ||
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> | ||
|} | |} | ||
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} | + | | 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> | ||
|} | |} | ||
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> | ||
|} | |} | ||
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} | + | | style="text-align: center;" | <math> {E_{i}^{min}\leq E_i}{\leq E_{i}^{max}}, \qquad {i=1,\ldots,N_{bus}} |
</math> | </math> | ||
|} | |} | ||
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} | + | | style="text-align: center;" | <math> {S_{ij}}{\leq S_{ij}^{max}}, \qquad {i,j=1,\ldots,N_{branch}} |
</math> | </math> | ||
|} | |} | ||
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 | + | | 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> | ||
|} | |} | ||
Line 373: | Line 374: | ||
</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) ([[#img-1|Figure 1]] ). | 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]] ). | ||
Line 413: | Line 415: | ||
===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 (<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]] ). | + | 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> | ||
Line 422: | Line 424: | ||
| 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="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 | ||
|} | |} | ||
− | |||
===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 ([[#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). | + | 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> | ||
Line 435: | Line 436: | ||
| 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="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 4'''. Benefit comparison between ARPA-benchmark and the proposed SCOPF for different scenarios | ||
|} | |} | ||
− | |||
==5. Conclusion== | ==5. Conclusion== |
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)
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:
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.
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.
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.
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.
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.
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.
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.
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:
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 ).
| |
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.
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:
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 ).
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.
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).
Figure 3. Influence of fixed loads and generators on the benefit ( USD)for the case model C2T2N00617-185 |
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).
Figure 4. Benefit comparison between ARPA-benchmark and the proposed SCOPF for different scenarios |
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.
The authors declare that they have no conflict of interest.
[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.
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
Are you one of the authors of this document?