You do not have permission to edit this page, for the following reason:

You are not allowed to execute the action you have requested.


You can view and copy the source of this page.

x
 
1
<!-- metadata commented in wiki content
2
====
3
4
''', , David L.&nbsp;Alvarez <math>\cdot </math>         Diego F. Rodríguez <math>\cdot </math>         Sergio&nbsp;Rivera '''
5
-->
6
7
==Abstract==
8
9
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.
10
11
'''keywords''' High-Performance Computing <math>\cdot </math>Interior-point method, Reliability <math>\cdot </math>Security Constraint Optimal Power Flow (SCOPF)
12
13
Received: date / Accepted: date
14
15
==1 Introduction==
16
17
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]]].
18
19
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].
20
21
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.
22
23
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:
24
25
* 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
26
* 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
27
* 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
28
29
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.
30
31
==2 Background==
32
33
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:
34
35
{| class="formulaSCP" style="width: 100%; text-align: left;" 
36
|-
37
| 
38
{| style="text-align: left; margin:auto;width: 100%;" 
39
|-
40
| style="text-align: center;" | <math>{minimize}{\sum_{i=1}^{N_{gen}} f\left(P_{g_i,u}\right)}{}{} </math>
41
|}
42
| style="width: 5px;text-align: right;white-space: nowrap;" | (1)
43
|}
44
45
subject to
46
47
{| class="formulaSCP" style="width: 100%; text-align: left;" 
48
|-
49
| 
50
{| style="text-align: left; margin:auto;width: 100%;" 
51
|-
52
| 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>
53
|}
54
| style="width: 5px;text-align: right;white-space: nowrap;" | (2)
55
|}
56
 
57
 {| class="formulaSCP" style="width: 100%; text-align: left;" 
58
|-
59
| 
60
{| style="text-align: left; margin:auto;width: 100%;" 
61
|-
62
| 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>
63
|}
64
| style="width: 5px;text-align: right;white-space: nowrap;" | (3)
65
|}
66
 
67
 {| class="formulaSCP" style="width: 100%; text-align: left;" 
68
|-
69
| 
70
{| style="text-align: left; margin:auto;width: 100%;" 
71
|-
72
| 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>
73
|}
74
| style="width: 5px;text-align: right;white-space: nowrap;" | (4)
75
|}
76
77
 {| class="formulaSCP" style="width: 100%; text-align: left;" 
78
|-
79
| 
80
{| style="text-align: left; margin:auto;width: 100%;" 
81
|-
82
| 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>
83
|}
84
| style="width: 5px;text-align: right;white-space: nowrap;" | (5)
85
|}
86
87
 {| class="formulaSCP" style="width: 100%; text-align: left;" 
88
|-
89
| 
90
{| style="text-align: left; margin:auto;width: 100%;" 
91
|-
92
| 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>
93
|}
94
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
95
|}
96
97
 {| class="formulaSCP" style="width: 100%; text-align: left;" 
98
|-
99
| 
100
{| style="text-align: left; margin:auto;width: 100%;" 
101
|-
102
| style="text-align: center;" | <math>{E_{i}^{min}\leq E_i\leq}{ E_{i}^{max},\quad}{i=1,\ldots,N_{bus}}</math>
103
|}
104
| style="width: 5px;text-align: right;white-space: nowrap;" | (7)
105
|}
106
107
 {| class="formulaSCP" style="width: 100%; text-align: left;" 
108
|-
109
| 
110
{| style="text-align: left; margin:auto;width: 100%;" 
111
|-
112
| style="text-align: center;" | <math>{S_{ij}\leq}{ S_{ij}^{max},\quad}{i,j=1,\ldots,N_{branch}} </math>
113
|}
114
| style="width: 5px;text-align: right;white-space: nowrap;" | (8)
115
|}
116
117
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.       
118
119
===2.1 Switched Shunt Capacitors===
120
121
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:
122
123
{| class="formulaSCP" style="width: 100%; text-align: left;" 
124
|-
125
| 
126
{| style="text-align: left; margin:auto;width: 100%;" 
127
|-
128
| style="text-align: center;" | <math>b_{ii} = \sum _{a=1}^{N_a} b_a x_{ak} </math>
129
|}
130
| style="width: 5px;text-align: right;white-space: nowrap;" | (9)
131
|}
132
133
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.
134
135
===2.2 Demand Response===
136
137
The demand response allows to increase or decrease the load with an associated cost to enhance the SCOPF. The demand response is subject to:
138
139
{| class="formulaSCP" style="width: 100%; text-align: left;" 
140
|-
141
| 
142
{| style="text-align: left; margin:auto;width: 100%;" 
143
|-
144
| style="text-align: center;" | <math>t_{min} \leq t \leq t_{max} </math>
145
|}
146
| style="width: 5px;text-align: right;white-space: nowrap;" | (10)
147
|}
148
149
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:
150
151
{| class="formulaSCP" style="width: 100%; text-align: left;" 
152
|-
153
| 
154
{| style="text-align: left; margin:auto;width: 100%;" 
155
|-
156
| style="text-align: center;" | <math>P_{l_i}  = P_{l_i}^0  t_i </math>
157
|}
158
| style="width: 5px;text-align: right;white-space: nowrap;" | (11)
159
|}
160
161
{| class="formulaSCP" style="width: 100%; text-align: left;" 
162
|-
163
| 
164
{| style="text-align: left; margin:auto;width: 100%;" 
165
|-
166
| style="text-align: center;" | <math>Q_{l_i}  = Q_{l_i}^0  t_i </math>
167
|}
168
| style="width: 5px;text-align: right;white-space: nowrap;" | (12)
169
|}
170
171
where <math display="inline">P_{l_i}</math>, <math display="inline">Q_{l_i}</math> are the active and reactive demands at bus <math display="inline">i</math>, respectively, and <math display="inline"> P_{l_i}^0</math>, <math display="inline">Q_{l_i}^0</math> are the active and reactive demand at a primary operating point. Additionally, the loads can be subject to ramp limits as follows:
172
173
{| class="formulaSCP" style="width: 100%; text-align: left;" 
174
|-
175
| 
176
{| style="text-align: left; margin:auto;width: 100%;" 
177
|-
178
| 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>
179
|}
180
| style="width: 5px;text-align: right;white-space: nowrap;" | (13)
181
|}
182
183
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.
184
185
===2.3 Cost functions===
186
187
Polynomial and piecewise linear cost functions are used for an OPF assessment if convex functions are assumed  <span id='citeF-15'></span>[[#cite-15|[15]]]. For piecewise linear functions, a helper cost (auxiliary) variable <math display="inline">y</math> is added for each segment of the function, and the following constraints are included in the formulation of OPF:
188
189
{| class="formulaSCP" style="width: 100%; text-align: left;" 
190
|-
191
| 
192
{| style="text-align: left; margin:auto;width: 100%;" 
193
|-
194
| style="text-align: center;" | <math>y \ge m_j \left(x-x_j \right)+c_j </math>
195
|}
196
| style="width: 5px;text-align: right;white-space: nowrap;" | (14)
197
|}
198
199
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.
200
201
==3 SC-OPF Proposal ==
202
203
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.
204
205
===3.1 SCOPF formulation===
206
207
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:
208
209
To Maximize
210
211
{| class="formulaSCP" style="width: 100%; text-align: left;" 
212
|-
213
| 
214
{| style="text-align: left; margin:auto;width: 100%;" 
215
|-
216
| 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>
217
|}
218
| style="width: 5px;text-align: right;white-space: nowrap;" | (15)
219
|}
220
221
Subject to
222
223
{| class="formulaSCP" style="width: 100%; text-align: left;" 
224
|-
225
| 
226
{| style="text-align: left; margin:auto;width: 100%;" 
227
|-
228
| 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>
229
|}
230
| style="width: 5px;text-align: right;white-space: nowrap;" | (16)
231
|}
232
233
{| class="formulaSCP" style="width: 100%; text-align: left;" 
234
|-
235
| 
236
{| style="text-align: left; margin:auto;width: 100%;" 
237
|-
238
| 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>
239
|}
240
| style="width: 5px;text-align: right;white-space: nowrap;" | (17)
241
|}
242
243
{| class="formulaSCP" style="width: 100%; text-align: left;" 
244
|-
245
| 
246
{| style="text-align: left; margin:auto;width: 100%;" 
247
|-
248
| 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>
249
|}
250
| style="width: 5px;text-align: right;white-space: nowrap;" | (18)
251
|}
252
253
{| class="formulaSCP" style="width: 100%; text-align: left;" 
254
|-
255
| 
256
{| style="text-align: left; margin:auto;width: 100%;" 
257
|-
258
| 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>
259
|}
260
| style="width: 5px;text-align: right;white-space: nowrap;" | (19)
261
|}
262
263
{| class="formulaSCP" style="width: 100%; text-align: left;" 
264
|-
265
| 
266
{| style="text-align: left; margin:auto;width: 100%;" 
267
|-
268
| 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}} 
269
 </math>
270
|}
271
| style="width: 5px;text-align: right;white-space: nowrap;" | (20)
272
|}
273
274
{| class="formulaSCP" style="width: 100%; text-align: left;" 
275
|-
276
| 
277
{| style="text-align: left; margin:auto;width: 100%;" 
278
|-
279
| style="text-align: center;" | <math>     {P_{g_i}^{min}\leq P_{g_i}}{\leq P_{g_i}^{max}\quad}{i=1,\ldots,N_{gen}}
280
 </math>
281
|}
282
| style="width: 5px;text-align: right;white-space: nowrap;" | (21)
283
|}
284
285
{| class="formulaSCP" style="width: 100%; text-align: left;" 
286
|-
287
| 
288
{| style="text-align: left; margin:auto;width: 100%;" 
289
|-
290
| 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}}  
291
 </math>
292
|}
293
| style="width: 5px;text-align: right;white-space: nowrap;" | (22)
294
|}
295
296
{| class="formulaSCP" style="width: 100%; text-align: left;" 
297
|-
298
| 
299
{| style="text-align: left; margin:auto;width: 100%;" 
300
|-
301
| style="text-align: center;" | <math>     {Q_{g_i}^{min}\leq Q_{g_i}}{\leq Q_{g_i}^{max}\quad}{i=1,\ldots,N_{gen}} 
302
 </math>
303
|}
304
| style="width: 5px;text-align: right;white-space: nowrap;" | (23)
305
|}
306
307
{| class="formulaSCP" style="width: 100%; text-align: left;" 
308
|-
309
| 
310
{| style="text-align: left; margin:auto;width: 100%;" 
311
|-
312
| style="text-align: center;" | <math>     {Q_{s_i}^{min}\leq Q_{s_i}}{\leq Q_{s_i}^{max}\quad}{i=1,\ldots,N_{shunt}}   
313
 </math>
314
|}
315
| style="width: 5px;text-align: right;white-space: nowrap;" | (24)
316
|}
317
318
{| class="formulaSCP" style="width: 100%; text-align: left;" 
319
|-
320
| 
321
{| style="text-align: left; margin:auto;width: 100%;" 
322
|-
323
| style="text-align: center;" | <math>     { P_{s_i} }{= 0}{i=1,\ldots,N_{shunt}}   
324
 </math>
325
|}
326
| style="width: 5px;text-align: right;white-space: nowrap;" | (25)
327
|}
328
329
{| class="formulaSCP" style="width: 100%; text-align: left;" 
330
|-
331
| 
332
{| style="text-align: left; margin:auto;width: 100%;" 
333
|-
334
| style="text-align: center;" | <math>     {E_{i}^{min}\leq E_i}{\leq E_{i}^{max}\quad}{i=1,\ldots,N_{bus}}  
335
 </math>
336
|}
337
| style="width: 5px;text-align: right;white-space: nowrap;" | (26)
338
|}
339
340
{| class="formulaSCP" style="width: 100%; text-align: left;" 
341
|-
342
| 
343
{| style="text-align: left; margin:auto;width: 100%;" 
344
|-
345
| style="text-align: center;" | <math>     {S_{ij}}{\leq S_{ij}^{max}\quad}{i,j=1,\ldots,N_{branch}} 
346
 </math>
347
|}
348
| style="width: 5px;text-align: right;white-space: nowrap;" | (27)
349
|}
350
351
{| class="formulaSCP" style="width: 100%; text-align: left;" 
352
|-
353
| 
354
{| style="text-align: left; margin:auto;width: 100%;" 
355
|-
356
| 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}}
357
 </math>
358
|}
359
| style="width: 5px;text-align: right;white-space: nowrap;" | (28)
360
|}
361
362
363
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.
364
365
===3.2 Switched Shunt Capacitors===
366
367
The relation between switchable shunt capacitors 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 capacitor as a generator with active power equal to zero.
368
369
370
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;"
371
|+ style="font-size: 75%;" |<span id='table-1'></span>Table. 1 Susceptance value for each shunt block position
372
|- style="border-top: 2px solid;"
373
| style="border-left: 2px solid;border-right: 2px solid;" |      <math display="inline">x_{sh}^{1}</math>   
374
| style="border-left: 2px solid;border-right: 2px solid;" | <math>x_{sh}^{2}</math>
375
| style="border-left: 2px solid;border-right: 2px solid;" | <math>x_{sh}^{Na}</math>
376
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math>\sum S_h </math>
377
|- style="border-top: 2px solid;"
378
| style="border-left: 2px solid;border-right: 2px solid;" |                             0      
379
| style="border-left: 2px solid;border-right: 2px solid;" | 0     
380
| style="border-left: 2px solid;border-right: 2px solid;" | 
381
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{0,0,\cdots } </math>
382
|-
383
| style="border-left: 2px solid;border-right: 2px solid;" | 0      
384
| style="border-left: 2px solid;border-right: 2px solid;" | 1     
385
| style="border-left: 2px solid;border-right: 2px solid;" | 
386
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{0,1,\cdots } </math>
387
|-
388
| style="border-left: 2px solid;border-right: 2px solid;" | 0      
389
| style="border-left: 2px solid;border-right: 2px solid;" | 
390
| style="border-left: 2px solid;border-right: 2px solid;" | 
391
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{0,\cdots ,\cdots } </math>
392
|-
393
| style="border-left: 2px solid;border-right: 2px solid;" | 0      
394
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_2</math>
395
| style="border-left: 2px solid;border-right: 2px solid;" | 
396
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{0,k_2,\cdots }</math>
397
|-
398
| style="border-left: 2px solid;border-right: 2px solid;" | 1      
399
| style="border-left: 2px solid;border-right: 2px solid;" | 0     
400
| style="border-left: 2px solid;border-right: 2px solid;" | 
401
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{1,0,\cdots } </math>
402
|-
403
| style="border-left: 2px solid;border-right: 2px solid;" | 1      
404
| style="border-left: 2px solid;border-right: 2px solid;" | 1     
405
| style="border-left: 2px solid;border-right: 2px solid;" | 
406
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{1,1,\cdots } </math>
407
|-
408
| style="border-left: 2px solid;border-right: 2px solid;" | 1      
409
| style="border-left: 2px solid;border-right: 2px solid;" | 
410
| style="border-left: 2px solid;border-right: 2px solid;" | 
411
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{1,\cdots ,\cdots } </math>
412
|-
413
| style="border-left: 2px solid;border-right: 2px solid;" | 1      
414
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_2</math>
415
| style="border-left: 2px solid;border-right: 2px solid;" | 
416
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{1,k_2,\cdots }</math>
417
|-
418
| style="border-left: 2px solid;border-right: 2px solid;" | 
419
| style="border-left: 2px solid;border-right: 2px solid;" | 0     
420
| style="border-left: 2px solid;border-right: 2px solid;" | 
421
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{\cdots ,0,\cdots } </math>
422
|-
423
| style="border-left: 2px solid;border-right: 2px solid;" | 
424
| style="border-left: 2px solid;border-right: 2px solid;" | 1     
425
| style="border-left: 2px solid;border-right: 2px solid;" | 
426
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{\cdots ,1,\cdots } </math>
427
428
|-
429
| style="border-left: 2px solid;border-right: 2px solid;" | 
430
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_2</math>
431
| style="border-left: 2px solid;border-right: 2px solid;" | 
432
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{\cdots ,k_2,\cdots }</math>
433
|-
434
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_1</math>
435
| style="border-left: 2px solid;border-right: 2px solid;" | 0     
436
| style="border-left: 2px solid;border-right: 2px solid;" | 
437
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{k_1,0,\cdots } </math>
438
|-
439
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_1</math>
440
| style="border-left: 2px solid;border-right: 2px solid;" | 1     
441
| style="border-left: 2px solid;border-right: 2px solid;" | 
442
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{k_1,1,\cdots } </math>
443
|-
444
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_1</math>
445
| style="border-left: 2px solid;border-right: 2px solid;" | 
446
| style="border-left: 2px solid;border-right: 2px solid;" | 
447
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{k_1,\cdots ,\cdots } </math>
448
|- style="border-bottom: 2px solid;"
449
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_1</math>
450
| style="border-left: 2px solid;border-right: 2px solid;" | <math>k_2</math>
451
| style="border-left: 2px solid;border-right: 2px solid;" | 
452
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" | <math> S_{k_1,k_2,\cdots }</math>
453
454
|}
455
456
===3.3 Paralleling Strategy===
457
458
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:
459
460
<ol>
461
462
<li>The base case OPF is run modeling the switchable shunt as generators      </li>
463
<li>Fix the shunt capacitor position adding the equivalent shunt susceptance to each branch and run the OPF     </li>
464
<li>Read contingency set and update limits of voltage and branch current ratings for contingencies     </li>
465
<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>
466
<li>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, <math display="inline">y_n</math> =0. Hence, the optimization problem is reduced to remove both the helper cost variables and the piecewise restrictions.        </li>
467
468
</ol>
469
470
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), see Figure 1.
471
472
<div id='img-1'></div>
473
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
474
|-
475
|[[Image:Draft_Rivera_578093124-LC_OPF_Strategy_Paper.png|406px|Proposed paralleling strategy to solve SCOPF]]
476
|- style="text-align: center; font-size: 75%;"
477
| colspan="1" | '''Figure 1:''' Proposed paralleling strategy to solve SCOPF
478
|}
479
480
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.
481
482
==4 Case of Study==
483
484
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:
485
486
* Pandas: For management data
487
* Scipy: For sparse matrix operations
488
* pypardiso: Python interface to the Intel MKL Pardiso library to solve sparse linear systems of equations
489
* mpi4py: Python bindings for the Message Passing Interface (MPI) standard, to exploit multiple processors on workstations or clusters
490
491
===4.1 Influence of number of CPU cores===
492
493
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).
494
495
<div id='img-2'></div>
496
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
497
|-
498
|[[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]]
499
|- style="text-align: center; font-size: 75%;"
500
| colspan="1" | '''Figure 2:''' Elapsed time to solve SCOPF for the C2T2N00617-185 ARPA system using a different number of CPU-threats
501
|}
502
503
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.
504
505
===4.2 Fixed demand and generation===
506
507
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 (Figure 3).
508
509
<div id='img-3'></div>
510
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
511
|-
512
|[[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 ]]
513
|- style="text-align: center; font-size: 75%;"
514
| colspan="1" | '''Figure 3:''' Influence of fixed loads and generators on the benefit (1x10<sup>6</sup> USD)for the case model C2T2N00617-185 
515
|}
516
517
===4.3 Large Size Systems===
518
519
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).
520
521
<div id='img-4'></div>
522
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
523
|-
524
|[[Image:Draft_Rivera_578093124-03_Comparision.png|540px|Benefit Comparison between  ARPA-Benchmark and the proposed SCOPF for different scenarios]]
525
|- style="text-align: center; font-size: 75%;"
526
| colspan="1" | '''Figure 4:''' Benefit Comparison between  ARPA-Benchmark and the proposed SCOPF for different scenarios
527
|}
528
529
==5 Conclusion==
530
531
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.
532
533
==Conflict of interest==
534
535
The authors declare that they have no conflict of interest.
536
537
===BIBLIOGRAPHY===
538
539
<div id="cite-1"></div>
540
'''[[#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
541
542
<div id="cite-2"></div>
543
'''[[#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
544
545
<div id="cite-3"></div>
546
'''[[#citeF-3|[3]]]''' International Energy Agency. (2021) "World Energy Investment 2021". World Energy Investment 2021. OECD
547
548
<div id="cite-4"></div>
549
'''[[#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
550
551
<div id="cite-5"></div>
552
'''[[#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
553
554
<div id="cite-6"></div>
555
'''[[#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
556
557
<div id="cite-7"></div>
558
'''[[#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
559
560
<div id="cite-8"></div>
561
'''[[#citeF-8|[8]]]''' S. Taha, J. Poland, K. Knezovic and D. Shchetinin, "Learning to Run a Power Network under Varying Grid Topology," 2022 IEEE 7th International Energy Conference (ENERGYCON), 2022, pp. 1-6, doi: 10.1109/ENERGYCON53164.2022.9830198. 112&#8211;132
562
563
<div id="cite-9"></div>
564
'''[[#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
565
566
<div id="cite-10"></div>
567
'''[[#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
568
569
<div id="cite-11"></div>
570
'''[[#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
571
572
<div id="cite-12"></div>
573
'''[[#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
574
575
<div id="cite-13"></div>
576
'''[[#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
577
578
<div id="cite-14"></div>
579
'''[[#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
580
581
<div id="cite-15"></div>
582
'''[[#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
583
584
<div id="cite-16"></div>
585
'''[[#citeF-16|[16]]]''' Z. Yan and Y. Xu, "A Hybrid Data-Driven Method for Fast Solution of Security-Constrained Optimal Power Flow," in IEEE Transactions on Power Systems, vol. 37, no. 6, pp. 4365-4374, Nov. 2022, doi: 10.1109/TPWRS.2022.3150023.
586

Return to Alvarez et al 2023a.

Back to Top