Home
Matpower 4.1 User`s Manual - Power Systems Engineering
Contents
1. 1 fprintf fd nl Reserves ior fprintf fd Mn 1 fprintf fd n Gen Bus Status Reserves Price fprintf fd n MW MW forinci Cd Misses RS SS NEP SE Y for k i ng fprintf fd n 3d 6d 42d k results gen k GEN_BUS results gen k GEN_STATUS if results gen k GEN_STATUS gt O amp amp abs results reserves R k gt 1e 6 fprintf fd 10 2f results reserves R k else fprintf fd ES E end fprintf fd 10 2f results reserves prc k end fprintf fd a o 222 gt fprintf fd n Total 10 2f Total Cost 2f sum results reserves R r igr results reserves totalcost fprintf fd n fprintf fd nZone Reserves Price fprintf fd n MW MW forinte Cid Nir So ie for k 1 nrz iz find r zones k hh gens in zone k fprintf fd An 3d 10 2f 10 2f k sum results reserves R iz results lin mu 1 Rreq k results baseMVA end fprintf fd n hh print binding reserve limit multipliers end 59 6 2 5 savecase Callback The savecase is used to save a MATPOWER case struct to an M file for example to save the results of an OPF run The savecase callback is invoked from savecase after printing all of the other data to the file Inputs are the case struct the file descriptor to write to the variable prefix typically mpc and
2. A 4 3 First Order Optimality Conditions A 4 4 Newton ter Appendix B Data File Format 62 63 64 67 68 TO 71 71 te 13 13 76 Appendix C MATPOWER Options 82 Appendix D MATPOWER Files and Functions 91 D 1 Documentation Files 0 0 0 0 0 0 0 002000084 91 D 2 MATPOWER Functions 0 0 ee 91 D 3 Example MATPOWER Cases a a a 97 D 4 Automated Test Suite 0 200 200 0020 0 000084 98 Appendix E Extras Directory 101 Appendix F Smart Market Code 102 F 1 Handling Supply Shortfall 104 A AE 104 F 3 Smartmarket Files and Functions 0 108 Appendix G Optional Packages 109 G 1 BPMPD_MEX MEX interface for BPMPD 109 G 2 CPLEX High performance LP and QP Solvers 109 G 3 Gurobi High performance LP and QP Solvers 110 G 4 IPOPT Interior Point Optimizer 111 G 5 KNITRO Non Linear Programming Solver 111 G 6 MINOPF AC OPF Solver Based on MINOS 112 G 7 MOSEK High performance LP and QP Solvers 112 G 8 TSPOPF Three AC OPF Solvers by H Wang 113 References 114 List of Figures 3 1 9 1 9 2 5 9 9 4 9 0 3 0 6 1 6 2 6 3 List 4 1 4 2 4 3 9 1 9 2 5 9 6 1 6 2 6 3 6 4 6 9 A 1 A 2 B 1 B 2 B 3 B 4 B 5 C 1 C 2 C 3 C 4 C 5 Branch Model ocs sas EM eed ewe ee
3. 5 3 3 User defined Variables co NNN 10 11 11 12 13 13 16 16 16 18 18 18 19 19 23 23 29 29 21 5 4 Standard Extensions 0 8000 eee eee eae 5 4 1 Piecewise Linear Costs 0 0 0 0 0 0 200084 5 4 2 Dispatchable Loads 0 0 00000 5 4 3 Generator Capability Curves 5 4 4 Branch Angle Difference Limits A ke ee eee het hee eee eh UN Pa aaa roo sas E 6 Extending the OPF Oe Diosas o NE Oo Callb ck F ncti ns lt 2noo weedaee edad Hews SES 6 2 1 ext2int Callback scs 444 ee ee eee ew ene ena ve 022 Pormilation Calloace s s ss edveeddbewwdueeeki ba 023 antZext Callback cocos ee anre eee aw da paa Prantl Calba cocinas RO RR HS we HO 6 2 5 savecase Callback 6 3 Registering the Callbacks 0 0 0 2 0 2 00084 Oe CU nee ee wee eee ee eee ee eee EG 6 5 Example Extensions a a a a a a 6 5 1 Fixed Zonal Reserves a 004 6 5 2 Interface Flow Limits a a 6 5 3 DC Transmission Lines a 7 Unit De commitment Algorithm 8 Acknowledgments Appendix A MIPS MATLAB Interior Point Solver Al We we eo EEE HE ew oe edd GO A2 Pe kaw awe he eee we ee ee ES A 3 Quadratic Programming Solver aooaa a A 4 Primal Dual Interior Point Algorithm 0 02 A 4 1 Notation 0 0 2 0000 eee eee A 4 2 Problem Formulation and Lagrangian
4. 1 ng0 iz find r zones k results reserves prc k sum results lin mu 1 Rreq iz results baseMVA end results reserves totalcost results cost Rcost 6 2 4 printpf Callback The pretty printing of the standard OPF output is done via a call to printpf after the case has been converted back to external indexing This callback is invoked from within printpf after the pretty printing of the standard OPF output Inputs are ol the results struct the file descriptor to write to a MATPOWER options vector and any optional args supplied via add_userfcn Output is the results struct This is typically used for any additional pretty printing of results In this example the OUT_ALL flag in the options vector is checked before printing anything If it is non zero the reserve quantities and prices for each unit are printed first followed by the per zone summaries An additional table with reserve limit shadow prices might also be included 52 function results userfcn_reserves_printp results fd mpopt args hh define named indices into data matrices GEN_BUS PG QG QMAX QMIN VG MBASE GEN_STATUS PMAX PMIN MU_PMAX MU_PMIN MU_QMAX MU_QMIN PC1 PC2 QC MIN QC1MAX QC2MIN QC2MAX RAMP_AGC RAMP_10 RAMP_30 RAMP_Q APF idx_gen Y print results r results reserves ng length r R nrz size r req 1 DUT_ALL mpopt 32 if OUT_ALL 0 fprintf fd Mn
5. 2 7 u Hx AX Gx AA Hx Z ye 1 H X bo MAX Gx AA N A 40 where M L y Hx 2 7 u Ex A 41 fxx Gxx Hxx 1 Ax Z u Hx A 42 and N L Hx Z ye u H X A 43 fx Gx A Hx y Hy 2 7 ye u H X A 44 Combining A 40 and the 3 row of A 37 results in a system of equations of reduced size a la c aas The Newton update can then be computed in the following 3 steps 1 Compute AX and AA from A 45 2 Compute AZ from A 39 3 Compute Ay from A 38 In order to maintain strict feasibility of the trial solution the algorithm truncates the Newton step by scaling the primal and dual variables by a and ag respectively 14 where these scale factors are computed as follows Zm Qp min lt min 22 1 A 46 a a ae Qq min e a Le 3 A 47 resulting in the variable updates below X X a AX A 48 Zi Z a AZ A 49 AT A agAA A 50 u 4 u aap A 51 The parameter is a constant scalar with a value slightly less than one In MIPS E is set to 0 99995 In this method during the Newton like iterations the perturbation parameter y must converge to zero in order to satisfy the first order optimality conditions of the original problem MIPS uses the following rule to update y at each iteration after updating Z and y a y 02 E A 52 where is a scalar constant between 0 and 1 In MIPS is set to 0 1 19 Appendix B Data File Fo
6. Ap 3 Convert generator allocations and nodal prices into set of cleared offers and bids 4 Print results For step 1 the offers and bids are supplied as two structs offers and bids each with fields P for real power and Q for reactive power optional Each of these is also a struct with matrix fields qty and prc where the element in the 2 th row and j th column of qty and prc are the quantity and price respectively of the j th block of capacity being offered bid by the i th generator These block offers bids are converted to the equivalent piecewise linear generator costs and generator capacity limits by the off2case function See help off2case for more information Offer blocks must be in non decreasing order of price and the offer must cor respond to a generator with 0 lt PMIN lt PMAX A set of price limits can be speci fied via the lim struct e g and offer price cap on real energy would be stored in lim P max_offer Capacity offered above this price is considered to be withheld from the auction and is not included in the cost function produced Bids must be in non increasing order of price and correspond to a generator with PMIN lt PMAX lt 0 see Section 5 4 2 on page 35 A lower limit can be set for bids in lim P min_bid See help pricelimits for more information The data specified by a MATPOWER case file with the gen and gencost matrices modified according to step 1 are then used to run an OPF A decommitment mech
7. Fp p 5 15 subject to gP OF Bro Part Ga UE 0 5 16 WOS BOF Finax lt 0 5 17 W O B70 Po age Fue 20 5 18 30 A i Leet 5 19 Peso Ue eats 5 20 5 3 Extended OPF Formulation MATPOWER employs an extensible OPF structure 10 to allow the user to modify or augment the problem formulation without rewriting the portions that are shared with the standard OPF formulation This is done through optional input parame ters preserving the ability to use pre compiled solvers The standard formulation is modified by introducing additional optional user defined costs fw constraints and variables z and can be written in the following form min fe ful 2 5 21 subject to ga 0 5 22 h x lt 0 5 23 Din E 5 24 ISA 3 lt u 325 5 26 Section 6 describes the mechanisms available to the user for taking advantage of the extensible formulation described here 5 3 1 User defined Costs The user defined cost function f is specified in terms of parameters H C N f k d and m All of the parameters are ny x 1 vectors except the symmetric Nnw X Nw matrix H and the n Xx nz nz matrix N The cost takes the form ji AOE zw Hw C w 5 27 where w is defined in several steps as follows First a new vector u is created by applying a linear transformation N and shift f to the full set of optimization variables r N 3 5 28 31 u r 5 29 then a scaled function with a dead zo
8. The Efficient Implementation of Interior Point Methods for Linear Programming and their Applications Ph D thesis Eotvos Lor nd University of Sciences Budapest Hungary 1996 5 5 G 1 16 E MINOPF Online Available http www pserc cornell edu minopf 5 5 F G 6 17 B A Murtagh and M A Saunders MINOS 5 5 User s Guide Stanford Uni versity Systems Optimization Laboratory Technical Report SOL83 20R 5 5 G 6 118 R D Zimmerman AC Power Flows Generalized OPF Costs and their Deriva tives using Complex Matrix Notation MATPOWER Technical Note 2 Febru ary 2010 Online Available http www pserc cornell edu matpower TN2 OPF Derivatives pdf 5 5 19 a H Wang On the Computation and Application of Multi period Security constrained Optimal Power Flow for Real time Electricity Market Operations Ph D thesis Electrical and Computer Engineering Cornell University May 2007 A A 4 G 8 20 R D Zimmerman Uniform Price Auctions and Optimal Power Flow MAT POWER Technical Note 1 February 2010 Online Available http www pserc cornell edu matpower TN1 OPF Auctions pdf F 21 Wotao Yin Gurobi Mex A MATLAB interface for Gurobi URL http convexoptimization com wikimization index php gurobi_mex 2009 2011 G 3 115 22 A Wachter and L T Biegler On the implementation of a primal dual inte rior point filter line search algorithm for large scale nonlinear programming
9. from bus p u voltage magnitude setpoint at to bus p u if positive negative lower limit on PF PT if positive negative upper limit on PF PT lower limit on reactive power injection into from bus MVAr upper limit on reactive power injection into from bus MVAr lower limit on reactive power injection into to bus MVAr upper limit on reactive power injection into to bus MVAr coefficient ly of constant term of linear loss function MW coefficient l of linear term of linear loss function MW MW Pioss lo l1pf where py is the flow at the from end Kuhn Tucker multiplier on lower flow limit at from bus u MW Kuhn Tucker multiplier on upper flow limit at from bus u MW Kuhn Tucker multiplier on lower VAr limit at from bus u MVAr Kuhn Tucker multiplier on upper VAr limit at from bus u MVAr Kuhn Tucker multiplier on lower VAr limit at to bus u MVAr Kuhn Tucker multiplier on upper VAr limit at to bus u MVAr Requires explicit use of toggle dcline t Output column value updated by power flow or OPF except PF in case of simple power flow Included in OPF output typically not included or ignored in input matrix Here we assume the objective function has units u Sl Appendix C MATPOWER Options MATPOWER uses an options vector to control the many options available It is similar to the options vector produced by the foptions fun
10. is a modified version of the 30 bus system that has 9 generators where the last three have negative PMIN to model the dispatchable loads e Six generators with three blocks of capacity each offering as shown in Ta ble F 2 e Fixed load totaling 151 64 MW e Three dispatchable loads bidding three blocks each as shown in Table F 3 26Tn versions of MATPOWER prior to 4 0 the smart market code incorrectly shifted prices instead of scaling them resulting in prices that while falling within the offer bid gap and therefore acceptable to all participants did not necessarily correspond to the OPF solution 104 Table F 2 Generator Offers Generator Block 1 Block 2 Block 3 MW MWh MW AS MWh MW OQ MWh 1 12 20 24 50 24 60 2 12 20 24 40 24 70 3 12 20 24 42 24 80 4 12 20 24 44 24 90 5 12 20 24 46 24 75 6 12 20 24 48 24 60 Table F 3 Load Bids Load Block 1 Block 2 Block 3 MW MWh MW S MWh MW MWh 1 10 100 10 70 10 60 2 10 100 10 50 10 20 3 10 100 10 60 10 50 To solve this case using an AC optimal power flow and a last accepted offer LAO pricing rule we use mkt OPF AC mkt auction_type 105 and set up the problem as follows mpc loadcase t_auction_case offers P qty 12 24 24 12 24 24 12 24 24 12 24 24 12 24 24 12 24 24 offers P prc 20 50 60 20 40 70 20 42 80 20 44
11. rameters See help cplex_options and the Parameters Reference Manual section of the CPLEX documentation at http publib boulder ibm com infocenter cosinfoc v12r2 for details It can also be used to solve general LP and QP problems via MATPOWER s common QP solver interface qps_matpower with algorithm option 500 or by calling qps_cplex directly G 3 Gurobi High performance LP and QP Solvers Gurobi is a collection of optimization tools that includes high performance solvers for large scale linear programming LP and quadratic programming QP problems among others The project was started by some former CPLEX developers More information is available at http www gurobi com Although Gurobi is a commercial package at the time of this writing their is a free academic license available See http www gurobi com html academic html for more details To use Gurobi with MATLAB it is necessary to install the Gurobi MEX interface 21 which is available at http www convexoptimization com wikimization index php Gurobi_mex When the MATLAB interface to Gurobi gurobi_mex is installed it can be used to solve DC OPF problems by setting the OPF_ALG_DC option equal to 700 The solution algorithms can be controlled by MATPOWER s GRB_METHOD option See Table C 7 for a summary of the Gurobi related MATPOWER options A Gurobi user options function can also be used to override the defaults for any of the many Gurobi pa
12. runs tests for ext2int and int2ext runs tests for hasPQcap runs tests for 2 derivative code runs test for partial derivative code runs tests for loadcase runs tests for makeLODF runs tests for makePTDF runs tests for MIPS NLP solver runs tests for MIPS NLP solver runs tests for modcost runs tests for of f2case runs tests for qps_matpower runs tests for AC and DC power flow runs tests for runmarket runs tests for scale_load runs tests for total_load runs tests for totcost x Deprecated Will be removed in a subsequent version t Requires the installation of an optional package See Appendix G for details on the corresponding package T For MATLAB 6 x avoids using handles to anonymous functions 99 name t t_opf_ constr t_opf_dc_bpmpd t_opf_dc_cplex t_opf_dc_gurobi t_opf_dc_ipopt t_opf_dc_mosek t_opf_dc_ot t_opf_dc_mips t_opf_dc_mips_sc t_opf_fmincon t_opf_ipopt t_opf_knitro t_opf_lp_den t_opf lp spf t_opf_1p_spr t_opf_minopf t_opf_mips t_opf_mips_sc Table D 19 MATPOWER OPF Tests description runs tests for AC OPF solver using constr runs tests for DC OPF solver using BPMPD_MEX runs tests for DC OPF solver using CPLEX runs tests for DC OPF solver using Gurobi runs tests for DC OPF solver using IPoPT runs tests for DC OPF solver using MOSEK runs tests for DC OPF solver using MATLAB Opt Toolbox runs tests for DC OPF solver using MIPS runs tests for DC OPF solver usin
13. 1 2 de end end Then create a handle to the function defining the value of the paramter a to be 100 set up the starting value of x and call the mips function to solve it gt gt f_fcn x banana x 100 gt gt xO 1 9 2 gt gt x f mips f_fcn x0 xX 2lnttp en wikipedia org wiki Rosenbrock_function 67 A 2 Example 2 The second example solves the following 3 dimensional constrained optimization printing the details of the solver s progress min f x T1T9 LToT3 A 8 subject to a r r 2 lt 0 A 9 r r r 10 lt 0 A 10 First create a MATLAB function to evaluate the objective function and its gra dients function f df d2f f2 x f x 1 x 2 x 2 x 3 if nargout gt 1 hh gradient is required df x 0 3 lA 8 eC if nargout gt 2 hh Hessian is required d2f 0 10 10 1 010 hh actually not used since end hh hess_fcn is provided end one to evaluate the constraints in this case inequalities only and their gradients function h g dh dgl gh2 x h 1 1 1 1 1 1 x 72 2 10 dh 2 x 1 x 1 x 2 x 2 x 3 x 3 g O dg and another to evaluate the Hessian of the Lagrangian function Lxx hess2 x lam cost_mult if nargin lt 3 cost_mult 1 end allows to be used with fmincon mu lam ineqnonlin Lxx cost_mult 0 1 0 1 O 1 O 1 O 2x 1 1 mu O 0 O 2 1 1 mu 0 O O
14. 15 Example Cases a a a 97 D 16 Automated Test Utility Functions 98 D 17 Test Data ee 98 D 18 Miscellaneous MATPOWER Tests 0 0 0 0 0 0 00000000088 99 D 19 MATPOWER OPF Tests 0 0 0 0 0000 002 ee 100 F 1 Auction Types rs ooo eR RE KES 103 F 2 Generator Offers 0 0 e 105 F L ad Bids 2 ee kee we K EEE ESHER RR drbd rdar 105 F 4 Generator Sales e ce soa aedu adaro eee ee dod da 108 F 5 Load Purchases a a a a 108 F 6 Smartmarket Files and Functions 108 1 Introduction 1 1 Background MATPOWER is a package of MATLAB M files for solving power flow and optimal power flow problems It is intended as a simulation tool for researchers and educators that is easy to use and modify MATPOWER is designed to give the best performance possible while keeping the code simple to understand and modify The MATPOWER home page can be found at http www pserc cornell edu matpower MATPOWER was initially developed by Ray D Zimmerman Carlos E Murillo S nchez and Deqiang Gan of PSERC at Cornell University under the direction of Robert J Thomas The initial need for MATLAB based power flow and optimal power flow code was born out of the computational requirements of the PowerWeb project Many others have contributed to MATPOWER over the years and it continues to be developed and maintained under the direction of Ray Zimmerman 1 2 License and Ter
15. As an example the help for runopf looks like 14 gt gt help runopf RUNOPF Runs an optimal power flow RESULTS SUCCESS RUNOPF CASEDATA MPOPT FNAME SOLVEDCASE Runs an optimal power flow AC OPF by default optionally returning a RESULTS struct and SUCCESS flag Inputs all are optional CASEDATA either a MATPOWER case struct or a string containing the name of the file with the case data default is case9 see also CASEFORMAT and LOADCASE MPOPT MATPOWER options vector to override default options can be used to specify the solution algorithm output options termination tolerances and more see also MPOPTION FNAME name of a file to which the pretty printed output will be appended SOLVEDCASE name of file to which the solved case will be saved in MATPOWER case format M file will be assumed unless the specified name ends with mat Outputs all are optional RESULTS results struct with the following fields all fields from the input MATPOWER case i e bus branch gen etc but with solved voltages power flows etc order info used in external lt gt internal data conversion et elapsed time in seconds success success flag 1 succeeded O failed additional OPF fields see OPF for details SUCCESS the success flag can additionally be returned as a second output argument Calling syntax options results runopf results runopf casedata results runopf casedata mpopt
16. DC model before calling the cor responding general function above 91 name cdf 2matp loadcase mpoption printpf savecase name ext2int e2i_data e2i_field int2ext i2e_data i2e field get_reorder set_reorder name dcpf fdpf gausspf newtonpf pfsoln name opf dcopf fmincopf mopf uopf Table D 3 Input Output Functions description converts data from IEEE Common Data Format to MATPOWER format loads data from a MATPOWER case file or struct into data matrices or a case struct sets and retrieves MATPOWER options pretty prints power flow and OPF results saves case data to a MATPOWER case file Table D 4 Data Conversion Functions description converts case from external to internal indexing converts arbitrary data from external to internal indexing converts fields in mpc from external to internal indexing converts case from internal to external indexing converts arbitrary data from internal to external indexing converts fields in mpc from internal to external indexing returns A with one of its dimensions indexed assigns B to A with one of the dimensions of A indexed Table D 5 Power Flow Functions description implementation of DC power flow solver implementation of fast decoupled power flow solver implementation of Gauss Seidel power flow solver implementation of Newton method power flow solver computes branch flows generator reactive power and real power for slack bus updates bus
17. F 1 Auction Types auction type name description 0 discriminative price of each cleared offer bid is equal to the offered bid price 1 LAO uniform price equal to the last accepted offer 2 FRO uniform price equal to the first rejected offer 3 LAB uniform price equal to the last accepted bid 4 FRB uniform price equal to the first rejected bid 5 first price uniform price equal to the offer bid price of the marginal unit 6 second price uniform price equal to min FRO LAB if the marginal unit is an offer or max FRB LAO if it is a bid T split the difference uniform price equal to the average of the LAO and LAB 8 dual LAOB uniform price for sellers equal to LAO for buyers equal to LAB Generalizing to a network with possible losses and congestion results in nodal prices Ap which vary according to location These Ap values can be used to normalize all bids and offers to a reference location by multiplying by a locational scale factor For bids and offers at bus this scale factor is Ais A where A is the nodal price at the reference bus The desired uniform pricing rule can then be applied to the adjusted offers and bids to get the appropriate uniform price at the reference bus This uniform price is then adjusted for location by dividing by the locational 103 scale factor T he appropriate locationally adjusted uniform price is then used for all cleared bids and offers The relationships between the OPF resu
18. Functions name invoked typical use ext2int from ext2int immediately after Check consistency of input data con case data is converted from external vert to internal indexing to internal indexing formulation from opf after OPF Model om Modify OPF formulation by adding object is initialized with standard user defined variables constraints OPF formulation costs int2ext from int2ext immediately before Convert data back to external index case data is converted from internal ing populate any additional fields in back to external indexing the results struct printpf from printpf after pretty printing Pretty print any results not included the standard OPF output in standard OPF savecase from savecase after printing all of Write non standard case struct fields the other case data to the file 6 5 Example Extensions to the case file MATPOWER includes three OPF extensions implementing via callbacks respectively the co optimization of energy and reserves interface flow limits and dispatchable DC transmission lines 6 5 1 Fixed Zonal Reserves This extension is a more complete version of the example of fixed zonal reserve requirements used for illustration above in Sections 6 2 and 6 3 The details of the extensions to the standard OPF problem are given in equations 6 2 6 5 and a description of the relevant input and output data structures is summarized in Table 6 1 The code for implementing the cal
19. Onis Di 1 and b is defined in terms of the series reactance x and tap ratio 7 for branch 1 as 1 LT b For a shunt element at bus 2 the amount of complex power consumed is So vi yo vs i IU er Iin Ds 3 25 So the vector of real power consumed by shunt elements at all buses can be approx imated by With a DC model the linear network equations relate real power to bus voltage angles versus complex currents to complex bus voltages in the AC case Let the n X 1 vector Bye be constructed similar to Yp where the i th element is b and let Pr shife be the n x 1 vector whose i th element is equal to Oe Dj Then the nodal real power injections can be expressed as a linear function of O the nz x 1 vector of bus voltage angles PO BpusO T Fusch 3 27 where Pbus shift e Cy _ C Pr shite 3 28 2l Similarly the branch flows at the from ends of each branch are linear functions of the bus voltage angles P Q BjO Pr snitt 3 29 and due to the lossless assumption the flows at the to ends are given by P Py The construction of the system B matrices is analogous to the system Y matrices for the AC model By Beg Cf C 3 30 Bous Cy Ct By 331 The DC nodal power balance equations for the system can be expressed in matrix form as gp O Po BpusO E Fussi SI Pi oie Em a OP 0 3 32 22 4 Power Flow The standard power flow or loadflow problem i
20. a case file Table B 1 Bus Data mpc bus name column description BUS_I 1 bus number positive integer BUS_TYPE 2 bus type 1 PQ 2 PV 3 ref 4 isolated PD 3 real power demand MW QD 4 reactive power demand MVAr GS 5 shunt conductance MW demanded at V 1 0 p u BS 6 shunt susceptance MVAr injected at V 1 0 p u BUS_AREA 7 area number positive integer VM 8 voltage magnitude p u VA 9 voltage angle degrees BASE_KV 10 base voltage kV ZONE 11 loss zone positive integer VMAX 12 maximum voltage magnitude p u VMIN 13 minimum voltage magnitude p u LAM P 14 Lagrange multiplier on real power mismatch u MW LAM_Q 15 Lagrange multiplier on reactive power mismatch u MVAr MU_VMAX 16 Kuhn Tucker multiplier on upper voltage limit u p u MU_VMIN 17 Kuhn Tucker multiplier on lower voltage limit u p u t Included in OPF output typically not included or ignored in input matrix Here we assume the objective function has units u 0 name GEN_BUS PG QG QMAX QMIN VG MBASE GEN_STATUS PMAX PMIN pc1 pco QC1MIN QC1MAX QC2MIN QC2MAX RAMP_AGC RAMP_10 RAMP_30 RAMP_Q APF MU_PMAX MU_PMIN MU_QMAX MU_QMIN Table B 2 Generator Data mpc gen column moe O NDANE N NwmOMWNN FF RPP ppp RO NOOO IO OF KR W Wb 20 description bus number real power output MW reactive power output MVAr maximum reactive power output MVAr mi
21. a complex nz X np bus admittance matrix Ypus that relates the complex nodal current injections bus to the complex node voltages V ie Youn 3 8 Similarly for a network with n branches the n X nz system branch admittance matrices Y and Y relate the bus voltages to the n x 1 vectors I and f of branch currents at the from and to ends of all branches respectively Ip YV 3 9 If is used to denote an operator that takes an n x 1 vector and creates the corresponding n x n diagonal matrix with the vector elements on the diagonal these system admittance matrices can be formed as follows Yy Y gp Cp Y pr Ce 3 11 Y Yy Cp Yue Ci 3 12 Yous Cf Yy C Y Yon 3 13 The current injections of 3 8 3 10 can be used to compute the corresponding complex power injections as functions of the complex bus voltages V Stus V V fous V Yas Y 3 14 SV CV I CV Y V 3 15 SV CV E CV YV 3 16 The nodal bus injections are then matched to the injections from loads and generators to form the AC nodal power balance equations expressed as a function of the complex bus voltages and generator injections in complex matrix form as gs V Sy Sbus V J Sd 5 OS 0 3 17 3 7 DC Modeling The DC formulation 8 is based on the same parameters but with the following three additional simplifying assumptions 19 e Branches can be considered lossless In particular branc
22. anism is used to shut down generators if doing so results in a smaller overall system cost see Section 7 25See http www pserc cornell edu powerweb 102 In step 3 the OPF solution is used to determine for each offer bid block how much was cleared and at what price These values are returned in co and cb which have the same structure as offers and bids The mkt parameter is a struct used to specify a number of things about the market including the type of auction to use type of OPF AC or DC to use and the price limits T here are two basic types of pricing options available through mkt auction_type discriminative pricing and uniform pricing The various uniform pricing options are best explained in the context of an unconstrained lossless network In this context the allocation is identical to what one would get by creating bid and offer stacks and finding the intersection point The nodal prices Ap computed by the OPF and returned in bus LAM_P are all equal to the price of the marginal block This is either the last accepted offer LAO or the last accepted bid LAB depending which is the marginal block i e the one that is split by intersection of the offer and bid stacks There is often a gap between the last accepted bid and the last accepted offer Since any price within this range is acceptable to all buyers and sellers we end up with a number of options for how to set the price as listed in Table F 1 Table
23. any optional args supplied via add_userfcn Output is the case struct The purpose of this callback is to write any non standard case struct fields to the case file In this example the zones req cost and qty fields of mpc reserves are written to the M file This ensures that a case with reserve data if it is loaded via loadcase possibly run then saved via savecase will not lose the data in the reserves field This callback could also include the saving of the output fields if present The contributed serialize function can be very useful for this purpose http www mathworks com matlabcentral fileexchange 1206 54 function mpc userfcn_reserves_savecase mpc fd prefix args h mpc userfcn_reserves_savecase mpc fd mpopt args A This is the savecase stage userfcn callback that prints the M file h code to save the reserves field in the case file It expects a MATPOWER case struct mpc a file descriptor and variable prefix A usually mpc The optional args are not currently used r mpc reserves fprintf fd Dll mss Reserve Data AhhhNn fprintf fd f h reserve zones element i j is 1 iff gen j is in zone i n fprintf fd sreserves zones n prefix template for i 1 size r zones 2 template template t d end template template n fprintf fd template r zones fprintf fd n fprintf fd An 4 reserve requirements for each
24. as a fraction of its initial flow for an outage of branch j First let H represent the matrix of sensitivities of branch flows to branch flows found by multplying the PTDF matrix by the node branch incidence matrix H H C C 4 11 If hij is the sensitivity of flow in branch 2 with respect to flow in branch 7 then l can be expressed as hi me bi 4 1 hy a 4 12 il ey MATPOWER includes functions for computing both the DC PTDF matrix and the corresponding LODF matrix for either a single slack bus k or a general slack distribution vector w See the help for makePTDF and makeLODF for details 28 5 Optimal Power Flow MATPOWER includes code to solve both AC and DC versions of the optimal power flow problem The standard version of each takes the following form min f x 5 1 subject to g x 0 h x lt 0 3 Tmin L lt Tmax 4 5 1 Standard AC OPF The optimization vector x for the standard AC OPF problem consists of the nz x 1 vectors of voltage angles O and magnitudes Vm and the ng x 1 vectors of generator real and reactive power injections P and Q e 5 5 The objective function 5 1 is simply a summation of individual polynomial cost functions f and fo of real and reactive power injections respectively for each generator fg oP 2 Lolo fala 5 6 The equality constraints in 5 2 are simply the full set of 2 n nonlinear real and reactive power balance equations from 4 2 and 4 3 The
25. as the five callback functions function mpc toggle_reserves mpc on_off TOGGLE_RESERVES Enable or disable fixed reserve requirements h mpc toggle_reserves mpc on h mpc toggle_reserves mpc off if strcmp on_off on h lt code to check for required reserves fields in mpc gt hh add callback functions mpc add_userfcn mpc ext2int Guserfcn_reserves_ext2int mpc add_userfcn mpc formulation userfcn_reserves_formulation mpc add_userfcn mpc int2ext userfcn_reserves_int2ext mpc add_userfcn mpc printpf Guserfcn_reserves_printpf mpc add_userfcn mpc savecase userfcn_reserves_savecase elseif strcmp on_off off mpc remove_userfcn mpc savecase userfcn_reserves_savecase mpc remove_userfcn mpc printpf userfcn_reserves_printpf mpc remove_userfcn mpc int2ext userfcn_reserves_int2ext mpc remove_userfcn mpc formulation userfcn_reserves_formulation mpc remove_userfcn mpc ext2int userfcn_reserves_ext2int else error toggle_reserves 2nd argument must be either on or off end Running a case that includes the fixed reserves requirements is as simple as loading the case turning on reserves and running it mpc loadcase t_case30_userfcns mpc toggle_reserves mpc on results runopf mpc 50 6 4 Summary The five callback stages currently defined by MATPOWER are summarized in Ta ble 6 3 Table 6 3 Callback
26. columns are used for input values some for results and some such as PF can be either input or output depending on whether the problem is a simple power flow or an optimal power flow The idx_dcline function defines a set of constants for use as named column indices for the dcline matrix An optional dclinecost matrix in the same form as gencost can be used to specify a cost to be applied to py in the OPF If the dclinecost field is not present the cost is assumed to be zero MATPOWER s DC line handling is implemented in toggle_dcline and examples of using it can be found in t_dcline he case file t_case9_dcline includes some example DC line data See help toggle_dcline for more information Running a case that includes DC lines is as simple as loading the case turning on the extension and running 1t Unlike with the reserves extension MATPOWER does not currently have a wrapper function to automate this mpc loadcase t_case9_dcline mpc toggle_dcline mpc on results runopf mpc 19A future version may make the handling of this second option automatic 61 7 Unit De commitment Algorithm The standard OPF formulation described in the previous section has no mechanism for completely shutting down generators which are very expensive to operate Instead they are simply dispatched at their minimum generation limits MATPOWER includes the capability to run an optimal power flow combined with a unit de commitme
27. does by default runpf optionally returns the solution in a results struct gt gt results runpf casedata The results struct is a superset of the input MATPOWER case struct mpc with some additional fields as well as additional columns in some of the existing data fields The solution values are stored as shown in Table 4 1 Additional optional input arguments can be used to set options mpopt and provide file names for saving the pretty printed output fname or the solved case data solvedcase gt gt results runp casedata mpopt fname solvedcase 29 Table 4 1 Power Flow Results name description results success success flag 1 succeeded O failed results et computation time required for solution results order see ext2int help for details on this field results bus VM bus voltage magnitudes results bus VA bus voltage angles results gen PG generator real power injections results gen QG generator reactive power injections results branch PF real power injected into from end of branch results branch PT real power injected into to end of branch results branch QF reactive power injected into from end of branch results branch QT reactive power injected into to end of branch t AC power flow only The options that control the power flow simulation are listed in Table 4 2 and those controlling the output printed to the screen in Table 4 3 By defau
28. gen branch matrices with solved values Table D 6 OPF and Wrapper Functions description the main OPF function called by runopf calls opf with options set to solve DC OPF calls opf with options set to use fmincon to solve AC OPF calls opf with options set to use MINOPF to solve AC OPF implements unit decommitment heuristic called by runuopf t Can also be used as a top level function run directly from the command line It provides more calling options than runopf primarly for backward compatibility with previous versions of mopf from MINOPF but does not offer the option to save the output or the solved case Wrapper with same calling conventions as opf Requires the installation of an optional package See Appendix G for details on the corresponding package 92 name opf_model add_constraints add_costs add_vars build_cost_params compute_cost display get_cost_params get_idx get_mpc getN get getv linear_constraints opf_model userdata Table D 7 OPF Model Object description OPF model object used to encapsulate the OPF problem formulation adds a named subset of constraints to the model adds a named subset of user defined costs to the model adds a named subset of optimization variables to the model builds and stores the full generalized cost parameters in the model computes a user defined cost called to display object when statement not terminated by semicolon returns the cost parame
29. inequality constraints 5 3 consist of two sets of n branch flow limits as nonlinear functions of the bus voltage angles and magnitudes one for the from end and one for the to end of each branch 29 The flows are typically apparent power flows expressed in MVA but can be real power or current flows yielding the following three possible forms for the flow constraints S O Vn apparent power Fi O Vma 3 P O Vin real power 5 9 I 0 Vin current where ff is defined in 3 9 Sf in 3 15 Pf RA Sp and the vector of flow limits Fmax has the appropriate units for the type of constraint It is likewise for F O Vm The variable limits 5 4 include an equality constraint on any reference bus angle and upper and lower limits on all bus voltage magnitudes and real and reactive generator injections Oo 0a i Leer 5 10 ee eS d 5 11 pimin lt pi lt pima 1 m 5 12 a0 N r TE Do 5 13 5 2 Standard DC OPF When using DC network modeling assumptions and limiting polynomial costs to second order the standard OPF problem above can be simplified to a quadratic program with linear constraints and a quadratic cost function In this case the voltage magnitudes and reactive powers are eliminated from the problem completely and real power flows are modeled as linear functions of the voltage angles The optimization variable is O g P 5 14 and the overall problem reduces to the following form min 2
30. mpc gen RAMP_10 lt Rmax Rmax k mpc gen k RAMP_10 hh and ramp rate Rmax Rmax mpc baseMVA 4h constraints I speye ng hh identity matrix Ar I I Pmax mpc gen PMAX mpc baseMVA lreq r req mpc baseMVA hh cost Cw r cost mpc baseMVA hh per unit cost coefficients hh add them to the model om add_vars om R ng Rmin Rmax om add_constraints om Pg_plus_R Ar Pmax Pg R om add_constraints om Rreq r zones lreq R om add_costs om Rcost struct N I Cw Cw R 6 2 3 int2ext Callback After the simulation is complete and before the results are printed or saved MAT POWER converts the case data in the results struct back to external indexing by calling the following results int2ext results This conversion essentially undoes everything that was done by ext2int Generators are restored to their original ordering buses to their original numbering and all out of service or isolated generators branches and buses are restored This callback is invoked from int2ext immediately before the resulting case is converted from internal back to external indexing At this point the simulation AQ has been completed and the results struct a superset of the original MATPOWER case struct passed to the OPF contains all of the results This results struct is passed to the callback along with any optional args supplied when the ca
31. or number of data points for piecewise linear parameters defining total cost function f p begin in this column units of f and p are hr and MW or MVAr respectively MODEL 1 gt Poslo Pigs irse Prd a where po lt p lt lt pn and the cost f p is defined by the coordinates po fo p1 fi Pn fn of the end break points of the piecewise linear cost MODEL 2 e E n 1 coefficients of n th order polynomial cost starting with highest order where cost is f p cnp cp co If gen has ng rows then the first ng rows of gencost contain the costs for active power produced by the corresponding generators If gencost has 2ng rows then rows ng 1 through 2ng contain the reactive power costs in the same format Not currently used by any MATPOWER functions SU name F_BUS T_BUS BR_STATUS PFT PTT QF QT VF VT PMIN PMAX QMINF QMAXF QMINT QMAXT LOSSO LOSS1 MU_PMIN MU_PMAX MU_QMINF MU_QMAXF MU_QMINT MU_QMAXT column 18 19 20 21 22 23 Table B 5 DC Line Data mpc dcline description from bus number to bus number initial branch status 1 in service 0 out of service real power flow at from bus end MW from to real power flow at to bus end MW from to reactive power injected into from bus MVAr reactive power injected into to bus MVAr voltage magnitude setpoint at
32. rameters See help gurobi_options and the Parameters section of the Gurobi Optimizer Reference Manual at http www gurobi com doc 45 refman for de tails It can also be used to solve general LP and QP problems via MATPOWER s common QP solver interface qps_matpower with algorithm option 700 or by calling 110 qps_gurobi directly G 4 IPOPT Interior Point Optimizer IPOPT 22 Interior Point OP Timizer pronounced I P Opt is a software package for large scale nonlinear optimization It is is written in C and is released as open source code under the Common Public License CPL It is available from the COIN OR initiative at https projects coin or org Ipopt The code has been written by Carl Laird and Andreas Wachter who is the COIN project leader for IPOPT MATPOWER requires the MATLAB MEX interface to IPOPT which is included in the IPOPT source distribution but must be built separately Additional information on the MEX interface is available at https projects coin or org Ipopt wiki MatlabInterface Please consult the IPOPT documentation web site and mailing lists for help in building and installing IPOPT MATLAB interface This interface uses callbacks to MATLAB functions to evaluate the objective function and its gradient the constraint values and Jacobian and the Hessian of the Lagrangian When installed IPOPT can be used by MATPOWER to solve both AC and DC OPF problems See Table C 8 for a summary o
33. the branch matrix The complex current injections 27 and 2 at the from and to ends of the branch respectively can be expressed in terms of the 2 x 2 branch admittance matrix Yp and the respective terminal voltages vs and v ajala ea With the series admittance element in the 7 model denoted by y 1 z the branch admittance matrix can be written 7 DE O E Ie Yo J 7 7 Is re Toni l 3 2 Ys res shift Ys J 2 Yi N N qe shift Figure 3 1 Branch Model If the four elements of this matrix for branch 2 are labeled as follows id Yip Yt Pa then four n X 1 vectors Ypf Yre Yig and Yg can be constructed where the th element of each comes from the corresponding element of Y Furthermore the n x np sparse connection matrices Cp and C used in building the system admittance matrices can be defined as follows The i 7 element of Cp and the i k element of C are equal to 1 for each branch 2 where branch i connects from bus 7 to bus k All other elements of Cf and C are zero 17 3 3 Generators A generator is modeled as a complex power injection at a specific bus For generator 2 the injection is 84 Py IQ 3 4 Let S P jQ be the ng x 1 vector of these generator injections The MW and MVAr equivalents before conversion to p u of pr and de are specified in columns 2 and 3 respectively of row 7 of the gen matrix A sparse np X ng generator connection matrix C can be define
34. the following code runs a power flow on the 300 bus example in case300 m using the fast decoupled XB version algorithm with verbose printing of the algorithm progress but suppressing all of the pretty printed output gt gt mpopt mpoption PF_ALG 2 VERBOSE 2 OUT_ALL 0 gt gt results runpf case300 mpopt To modify an existing options vector for example to turn the verbose option off and re run with the remaining options unchanged simply pass the existing options as the first argument to mpoption gt gt mpopt mpoption mpopt VERBOSE 0 gt gt results runpf case300 mpopt See Appendix C or type gt gt help mpoption for more information on MATPOWER s options 2 4 Documentation There are two primary sources of documentation for MATPOWER The first is this manual which gives an overview of MATPOWER s capabilities and structure and describes the modeling and formulations behind the code It can be found in your MATPOWER distribution at MATPOWER docs manual pdf The second is the built in help command As with MATLAB s built in functions and toolbox routines you can type help followed by the name of a command or M file to get help on that particular function Nearly all of MATPOWER s M files have such documentation and this should be considered the main reference for the 13 calling options for each individual function See Appendix D for a list of MATPOWER functions
35. zone in MW n fprintf fd sreserves req lt fg prefix r req 1 if length r req gt 1 fprintf fd tfg r req 2 end end fprintf fd t n fprintf fd In 4 reserve costs in MW for each gen n fprintf fd sreserves cost t g prefix r cost 1 if length r cost gt 1 fprintf fd t g r cost 2 end end fprintf fd t n if isfield r qty fprintf fd n h max reserve quantities for each gen n fprintf fd sreserves qty L t g prefix r qty 1 if length r qty gt 1 fprintf fd t g r qty 2 end end fprintf fd t n end hh save output fields for solved case 313 6 3 Registering the Callbacks As seen in the fixed zonal reserve example adding a single extension to the standard OPF formulation is often best accomplished by a set of callback functions A typical use case might be to run a given case with and without the reserve requirements active so a simple method for enabling and disabling the whole set of callbacks as a single unit is needed The recommended method is to define all of the callbacks in a single file containing a toggle function that registers or removes all of the callbacks depending on whether the value of the second argument is on or off The state of the registration of any callbacks is stored directly in the mpc struct In our example the toggle_reserves m file contains the toggle_reserves function as well
36. 0 are optional x f exitflag output lambda mips problem The calling syntax is nearly identical to that used by fmincon from MATLAB s Optimization Toolbox The primary difference is that the linear constraints are specified in terms of a single doubly bounded linear function l lt Ax lt u as opposed to separate equality constrained A 7x beq and upper bounded Az lt b functions Internally equality constraints are handled explicitly and determined at run time based on the values of l and u 20For MATLAB 6 x use mips6 64 name f_fcn xO A Le xmin xmax gh fcn hess_fcn opt problem Table A 1 Input Arguments for mips description Handle to a function that evaluates the objective function its gradients and Hessian for a given value of x Calling syntax for this function f df d2f f_fcn x Starting value of optimization vector zx Define the optional linear constraints l lt Ax lt u Default values for the elements of l and u are Inf and Inf respectively Optional lower and upper bounds on the x variables defaults are Inf and Inf respectively Handle to function that evaluates the optional nonlinear constraints and their gra dients for a given value of x Calling syntax for this function is h g dh dg gh fcn x Handle to function that computes the Hessian of the Lagrangian for given values of x A and u where A and u are the multipliers on the equality and inequalit
37. 07 exitflag 1 1 58114 2 23607 1 58114 lambda ineqnonlin O 0 707107 More example problems for mips can be found in t_mips m 69 A 3 Quadratic Programming Solver A convenience wrapper function called gps mips is provided to make it trivial to set up and solve linear programming LP and quadratic programming QP problems of the following form 1 min 5 Ha c z A 11 subject to I lt Ar lt u A 12 Tmin lt L Tmax A 13 Instead of a function handle the objective function is specified in terms of the paramters H and c of quadratic cost coefficients Internally qps mips passes mips the handle of a function that uses these paramters to evaluate the objective function gradients and Hessian The calling syntax for qps mips is similar to that used by quadprog from the MATLAB Optimization Toolbox x f exitflag output lambda qps_mips H c A 1 u xmin xmax x0 opt Alternatively the input arguments can be packaged as fields in a problem struct and passed in as a single argument where all fields except H c A and 1 are optional x f exitflag output lambda qps_mips problem Aside from H and c all input and output arguments correspond exactly to the same arguments for mips as described in Tables A 1 and A 2 As with mips and fmincon the primary difference between the calling syntax for qps mips and quadprog is that the linear constraints are specified in terms of a single doubly bounded
38. 2 1 1 mu 22 From http en wikipedia org wiki Nonlinear_programming 3 dimensional_example 23Since the problem has nonlinear constraints and the Hessian is provided by hess_fcn this function will never be called with three output arguments so the code to compute d2f is actually not necessary 63 Then create a problem struct with handles to these functions a starting value for x and an option to print the solver s progress Finally pass this struct to mips to solve the problem and print some of the return values to get the output below function example2 problem struct ffen x f2 x gh_fcn x gh2 x hess_fcn x lam cost_mult hess2 x lam cost_mult XO 1 1 O ropt struct verbose 2 x f exitflag output lambda mips problem fprintf nf g exitflag d n f exitflag fprintf nx n fprintf g n x fprintf Anlambda ineqnonlin n fprintf gin lambda inegnonlin gt gt example2 MATLAB Interior Point Solver MIPS Version 1 0 O 7 Feb 2011 objective step size feascond gradcond compcond costcond 3250167 O 0 894235 0 850653 4708991 0 97413 0 129183 0 00936418 0 117278 0553031 0 10406 0 00174933 0 0196518 0686267 0 034574 0 00041301 0 0030084 0706104 0 0065191 1 53531e 05 000337971 0710134 0 00062152 1 22094e 07 41308e 05 0710623 5 7217e 05 9 848 8e 10 41587e 06 0710673 5 6761e 06 9 73397e 12 41615e 07 Converged f 7 071
39. 90 20 46 75 20 48 60 bids P qty 10 10 10 10 10 10 10 10 10 bids P prc 100 70 60 100 50 20 100 60 50 mpc_out co cb f dispatch success et runmarket mpc offers bids mkt 106 The resulting cleared offers and bids are 107 In other words the sales by generators and purchases by loads are as shown summarized in Tables F 4 and Tables F 5 respectively Table F 4 Generator Sales Generator Quantity Sold Selling Price MW MWh 1 35 3 50 00 2 36 0 50 24 3 36 0 50 34 4 36 0 51 02 5 36 0 52 17 6 36 0 52 98 Table F 5 Load Purchases Load Quantity Bought Purchase Price MW MWh 1 30 0 51 82 10 0 54 03 3 20 0 55 62 F 3 Smartmarket Files and Functions Table F 6 Smartmarket Files and Functions name description extras smartmarket auction clears set of bids and offers based on pricing rules and OPF results case2off generates quantity price offers and bids from gen and gencost idx_disp named column index definitions for dispatch matrix off2case updates gen and gencost based on quantity price offers and bids pricelimits fills in a struct with default values for offer and bid limits printmkt prints the market output runmarket top level simulation function runs the OPF based smart market runmkt top level simulation function runs the OPF based smart market smartmkt implements the smart market solver SM_CHANGES change history for the smart market softwa
40. C power flow solution If any generator has a violated reactive power limit its reactive injection is fixed at the limit the corresponding bus is converted to a PQ bus and the power flow is 24 solved again This procedure is repeated until there are no more violations Note that this option is based solely on the QMIN and QMAX parameters for the generator and does not take into account the trapezoidal generator capability curves described in Section 5 4 3 4 2 DC Power Flow For the DC power flow problem 8 the vector x consists of the set of voltage angles at non reference buses L Or Vi q Lief 4 6 and 4 1 takes the form Back Le 4 7 where Bac is the np 1 x np 1 matrix obtained by simply eliminating from Bpus the row and column corresponding to the slack bus and reference angle respectively Given that the generator injections P are specified at all but the slack bus Py can be formed directly from the non slack rows of the last four terms of 3 32 The voltage angles in x are computed by a direct solution of the set of linear equations The branch flows and slack bus generator injection are then calculated directly from the bus voltage angles via 3 29 and the appropriate row in 3 32 respectively 4 3 runpf In MATPOWER a power flow is executed by calling runpf with a case struct or case file name as the first argument casedata In addition to printing output to the screen which it
41. F related to the display of binding constraints that are listed Table 5 3 along with an option that can be used to force the AC OPF to return information about the constraint values and Jacobian and the objective function gradient and Hessian By default runopf solves an AC optimal power flow problem using a primal dual interior point method To run a DC OPF the PF_DC option must be set to 1 For convenience MATPOWER provides a function rundcopf which is simply a wrapper that sets PF_DC before calling runopf Internally the runopf function does a number of conversions to the problem data before calling the appropriate solver routine for the selected OPF algorithm This external to internal format conversion is performed by the ext2int function described in more detail in Section 6 2 1 and includes the elimination of out of service 40 idx 11 16 24 20 26 Table 5 2 Optimal Power Flow Options name OPF_ALG OPF_VIOLATION OPF_FLOW_LIM OPF_IGNORE_ANG_LIM OPF_ALG_DC default 0 5 x 107 0 description AC optimal power flow algorithm O choose default solver based on availability in the following order 540 560 300 constr MATLAB Opt Toolbox 1 x and 2 x 320 dense successive LP 340 sparse successive LP relaxed 360 sparse successive LP full 500 MINOPF MINOS based solver 520 fmincon MATLAB Opt Toolbox gt 2 x 540 PDIPM primal dual interior point method 545
42. In MATPOWER an optimal power flow is executed by calling runopf with a case struct or case file name as the first argument casedata In addition to printing output to the screen which it does by default runpf optionally returns the solution in a results struct gt gt results runopf casedata The results struct is a superset of the input MATPOWER case struct mpc with some additional fields as well as additional columns in some of the existing data fields In addition to the solution values included in the results for a simple power flow shown in Table 4 1 in Section 4 3 the following additional optimal power flow solution values are stored as shown in Table 5 1 Additional optional input arguments can be used to set options mpopt and provide file names for saving the pretty printed output fname or the solved case data solvedcase gt gt results runopf casedata mpopt fname solvedcase Some of the main options that control the optimal power flow simulation are listed in Table 5 2 There are many other options that can be used to control the termination l3See http www ziena com l4See http www gurobi com name results results x Table 5 1 Optimal Power Flow Results description final objective function value final value of optimization variables internal order results om OPF model object results bus LAM_P Lagrange multiplier on real power mismatch results bus LAM_Q Lagrange mul
43. LI lt 7 c x A ADA 5 32 MpL Tn FCn Tn 1 lt T LO t1 L2 Ln Figure 5 3 Constrained Cost Variable 34 defined by a sequence of points xj cj j 0 n where m denotes the slope of the j th segment Cj Cj 1 eS j l n 5 33 Tj Ej and lt i lt lt az and Mi lt Mo S gt lt Mp The basin corresponding to this cost function is formed by the following n constraints on the helper cost variable y Zman e Ja h 5 34 The cost term added to the objective function in place of c x is simply the variable y MATPOWER uses this CCV approach internally to automatically generate the appropriate helper variable cost term and corresponding set of constraints for any piecewise linear costs on real or reactive generation All of MATPOWER s OPF solvers for both AC and DC OPF problems use the CCV approach with the ex ception of two that are part of the optional TSPOPF package 11 namely the step controlled primal dual interior point method SCPDIPM and the trust region based augmented Lagrangian method TRALM both of which use a cost smoothing technique instead 12 5 4 2 Dispatchable Loads A simple approach to dispatchable or price sensitive loads is to model them as nega tive real power injections with associated negative costs T his is done by specifying a generator with a negative output ranging from a minimum injection equal to the negative of the largest possible load to a max
44. MATPOWER 4 1 User s Manual Ray D Zimmerman Carlos E Murillo S nchez December 14 2011 2010 2011 Power Systems Engineering Research Center PSERC All Rights Reserved Contents 1 Introduction IA a saoe ew hee ew Poe ew A ee ee we ee a 1 2 License and Terms of Use 0 0 0002 0000004 1 3 Citing MATPOWER 1 0 a Getting Started 2 1 System Requirements 22 ASAIO 4 x vous ewe Oe we ed wwe eH SOs 2 3 Running a Simulation eo ocn osas sida dw ko 2 3 1 Preparing Case Input Data 2 3 2 solving the Case e 2 3 3 Accessing the Results 2o94 DENE UNS s ssas a ee ea Ee Aw RS 2 4 Documentation eao s e ss saoe ss doe a ee ee Modeling al Data POEMA 4s ns bee ew eee AA 3 o oa Gb eee eV a ha eae A ee Owe Doe ew So 3 3 Generators ooa a a a SK LOS E E ROR EEE SEE mo Shunt Elements oaa aa es ss ds De par Network Eguations sec eo BAKE e we OREO Sariko da Ee ce ee eRe osa Power Flow 41 AC Power Flow 00000000008 42 DC Power Flow 00 0 0 0 00 2 00002 2 eee ERA 44 Linear Shift Factors gt s e se lt 0 ew wee wes Optimal Power Flow 5 1 Standard AC OPF 0 000000000000000008 52 standard DO OPF assesses kasaa d ae Kaoa Bw ee wee 5 3 Extended OPF Formulation 00020000008 molt Usersdenned Coste 1 2 6 4 46s bd GPA RO eRe Ew ES 5 3 2 User defined Constraints
45. Mathematical Programming 106 1 2557 2006 G 4 23 R H Byrd J Nocedal and R A Waltz KNITRO An Integrated Package for Nonlinear Optimization Large Scale Nonlinear Optimization G di Pillo and M Roma eds pp 35 59 2006 Springer Verlag http www ziena com papers integratedpackage pdf 5 5 G 5 116
46. OPF cases this method has the advantage of being direct and straightforward While MAT POWER does include code to eliminate the columns of A and N corresponding to Vm and Q when running a DC OPF as well as code to reorder and eliminate columns appropriately when converting from external to internal data formats this mecha nism still requires the user to take special care in preparing the A and N matrices 5Only if they contain all zeros 43 to ensure that the columns match the ordering of the elements of the opimization vectors x and z All extra constraints and variables must be incorporated into a single set of parameters that are constructed before calling the OPF The bookkeep ing needed to access the resulting variables and shadow prices on constraints and variable bounds must be handled manually by the user outside of the OPF along with any processing of additional input data and processing printing or saving of the additional result data Making further modifications to a formulation that al ready includes user supplied costs constraints or variables requires that both sets be incorporated into a new single consistent set of parameters 6 2 Callback Functions The second method based on defining a set of callback functions offers several distinct advantages especially for more complex scenarios or for adding a feature for others to use such as the zonal reserve requirement or the interface flow limits mentioned pr
47. OPF_ALG option set to 500 only Requires the installation of an optional package See Appendix G for details on the corresponding package Default values in parenthesis refer to defaults assigned in MEX file if called with option equal to 0 89 Table C 11 OPF Options for MOSEK idx name default description 111 MOSEK_LP_ALG 0 solution algorithm used by MOSEK for continuous LP problems 0 automatic let MOSEK choose 1 interior point 4 primal simplex 5 dual simplex 6 primal dual simplex 7 automatic simplex MOSEK chooses which simplex 10 concurrent 112 MOSEK_MAX_IT 0 400 MSK_IPAR_INTPNT_MAX_ITERATIONS interior point max imum iterations 113 MOSEK_GAP_TOL 0 le 8 MSK DPAR_INTPNT_TOL_REL_GAP interior point relative gap tolerance 114 MOSEK_MAX_TIME 0 1 MSK_ DPAR_OPTIMIZER_MAX_TIME maximum time allowed for solver negative means Inf 115 MOSEK_NUM_THREADS 0 1 MSK_IPAR INTPNT_NUM_THREADS maximum number of threads to use 116 MOSEK_OPT 0 if non zero appended to mosek_user_options_ to form the name of a user supplied function called to modify the default options struct for MOSEK t For OPF_ALG_DC option set to 600 only Requires the installation of an optional package See Appendix G for details on the corresponding package Default values in parenthesis refer to defaults assigned by MOSEK if called with option equal to 0 See help mosek_options for details 90 Appendix D MAT
48. Output Options name VERBOSE OUT_ALL DUT_SYS_SUM OUT_AREA_SUM OUT_BUS OUT_BRANCH OUT_GEN OUT_ALL_LIM OUT_V_LIM OUT_LINE_LIM OUT_PG_LIM OUT_QG_LIM RETURN_RAW_DER default 1 Oh Robe l an description amount of progress info to be printed O print no progress info 1 print a little progress info 2 print a lot progress info 3 print all progress info controls pretty printing of results 1 individual flags control what is printed 0 do not print anything 1 print everything print system summary 0 or 1 print area summaries 0 or 1 print bus detail includes per bus gen info 0 or 1 print branch detail 0 or 1 print generator detail 0 or 1 controls constraint info output 1 individual flags control what is printed 0 do not print any constraint info 1 print only binding constraint info 2 print all constraint info control output of voltage limit info 0 do not print 1 print binding constraints only 2 print all constraints control output of line flow limit info control output of gen active power limit info control output of gen reactive power limit infot for AC OPF return constraint and derivative info in results raw in fields g dg df d2f Takes values of 0 1 or 2 as for OUT_V_LIM 9 idx 81 82 83 84 85 86 87 88 89 90 91 92 93 Table C 4 OPF Options for MIPS and TSPOPEF name PDIPM_FEASTOL PDI
49. P Q capability curve constraints checks for availability of optional functionality named column index definitions for areas matrix named column index definitions for branch matrix named column index definitions for bus matrix named column index definitions for gencost matrix named column index definitions for dcline matrix named column index definitions for gen matrix checks if generators are actually dispatchable loads converts fixed loads to dispatchable loads prints version information for MATPOWER and optional packages modifies gencost by horizontal or vertical scaling or shifting creates piecewise linear approximation to polynomial cost function evaluates polynomial generator cost and its derivatives splits gencost into real and reactive power costs scales fixed and or dispatchable loads by load zone returns vector of total load in each load zone Deprecated Will be removed in a subsequent version 96 name caseformat case_ieee30 case24 ieee rts case4gs case6ww case9 case9Q casel4 case30 case30pwl case30Q case39 caseo case118 case300 case2383wp case2 36sp case2 3 sop case2 46wop case2 46wp case3012wp case3120sp case3375wp D 3 Example MATPOWER Cases Table D 15 Example Cases description help file documenting MATPOWER case format IEEE 30 bus case IEEE RTS 24 bus case 4 bus example case from Grainger Stevenson 6 bus example case from Wood amp Wollenberg 9 bus example case from Ch
50. PM_GRADTOL PDIPM_COMPTOL PDIPM_COSTTOL PDIPM_MAX_IT SCPDIPM_RED_IT TRALM_FEASTOL TRALM_PRIMETOL TRALM_DUALTOL TRALM_COSTTOL TRALM_MAJOR_1T TRALM_MINOR_IT default 5 x 1074 5 x 1074 107 40 100 SMOOTHING RATIOS 0 04 description feasibiliy equality tolerance set to value of OPF_VIOLATION by default gradient tolerance complementarity condition inequality tolerance optimality tolerance maximum number of iterations maximum number of step size reductions per iteration feasibiliy tolerance set to value of OPF_VIOLATION by default primal variable tolerance dual variable tolerance optimality tolerance maximum number of major iterations maximum number of minor iterations piecewise linear curve smoothing ratio t For OPF_ALG option set to 540 545 560 or 565 and OPF_ALG_DC option set to 200 or 250 MIPS PDIPM and SC PDIPM solvers only For OPF_ALG option set to 545 or 565 and OPF_ALG_DC option set to 250 step controlled solvers MIPS sc or SC PDIPM only For OPF_ALG option set to 550 TRALM solver only For OPF_ALG option set to 545 or 550 SC PDIPM or TRALM solvers only Table C 5 OPF Options for fmincon KNIT RO constr and successive LP Solvers idx 17 18 19 20 2l 22 23 55 name CONSTR_TOL_X CONSTR_TOL_F CONSTR_MAX_1T LPC_TOL_GRAD LPC_TOL_X LPC_MAX_IT LPC MAX RESTART FMC_ALGS default 1074 1074 0 3 x 1073 1074 400 5 4 description termina
51. POWER Files and Functions This appendix lists all of the files and functions that MATPOWER provides with the exception of those in the extras directory see Appendix E In most cases the function is found in a MATLAB M file of the same name in the top level of the distri bution where the m extension is omitted from this listing For more information on each at the MATLAB prompt simply type help followed by the name of the function For documentation and data files the filename extensions are included D 1 Documentation Files Table D 1 MATPOWER Documentation Files name description README README txt basic introduction to MATPOWER docs CHANGES CHANGES txt MATPOWER change history manual pdf MATPOWER 4 1 User s Manual TN1 OPF Auctions pdf Tech Note 1 Uniform Price Auctions and Optimal Power Flow TN2 OPF Derivatives pdf Tech Note 2 AC Power Flows Generalized OPF Costs and their Derivatives using Complex Matrix Notation t For Windows users text file with Windows style line endings D 2 MATPOWER Functions Table D 2 Top Level Simulation Functions name description runpf power flow runopf optimal power flow runuopf optimal power flow with unit decommitment rundcpf DC power flowt rundcopf DC optimal power flow runduopf DC optimal power flow with unit decommitment runopf_w_res optimal power flow with fixed reserve requirements t Uses AC model by default Simple wrapper function to set option to use
52. R A M van Amerongen A General Purpose Version of the Fast Decoupled Load Flow Power Systems IEEE Transactions on vol 4 no 2 pp 760 770 May 1989 4 1 A F Glimm and G W Stagg Automatic Calculation of Load Flows AIEE Transactions Power Apparatus and Systems vol 76 pp 817 828 October 1957 4 1 A J Wood and B F Wollenberg Power Generation Operation and Control 2nd ed New York J Wiley amp Sons 1996 3 7 4 2 4 4 T Guler G Gross and M Liu Generalized Line Outage Distribution Fac tors Power Systems IEEE Transactions on vol 22 no 2 pp 879 881 May 2007 4 4 R D Zimmerman C E Murillo S nchez and R J Thomas MATPOWER s Extensible Optimal Power Flow Architecture Power and Energy Society Gen eral Meeting 2009 IEEE pp 1 7 July 26 30 2009 5 3 TSPOPF Online Available http www pserc cornell edu tspopf 5 4 1 5 5 G8 114 112 H Wang C E Murillo S nchez R D Zimmerman and R J Thomas On Computational Issues of Market Based Optimal Power Flow Power Systems IEEE Transactions on vol 22 no 3 pp 1185 1193 August 2007 5 4 1 5 5 A A 4 G 8 13 LL Optimization Toolbox 4 Users s Guide The MathWorks Inc 2008 On line Available http www mathworks com access helpdesk help pdf_ doc optim optim_tb pdf 5 5 14 B PMPD_MEX Online Available http www pserc cornell edu bpmpa 5 5 G 1 15 C M sz ros
53. SC PDIPM step controlled variant of PDIPM 550 TRALM trust region based augmented Lan grangian method 560 MIPS MATLAB Interior Point Solver pri mal dual interior point method 565 MIPS sc step controlled variant of MIPS 580 Ipopr 600 KNITRO constraint violation tolerance quantity to limit for branch flow constraints 0 apparent power flow limit in MVA 1 active power flow limit in MW 2 current magnitude limit in MVA at 1 p u voltage ignore angle difference limits for branches 0 include angle difference limits if specified 1 ignore angle difference limits even if specified DC optimal power flow algorithm 0 choose default solver based on availability in the following order 700 600 500 100 200 100 BPMPD 200 MIPS MATLAB Interior Point Solver pri mal dual interior point method 250 MIPS sc step controlled variant of MIPS 300 MATLAB Opt Toolbox quadprog linprog 400 IpopT 500 CPLEX 600 MOSEK 700 Gurobi T Requires the installation of an optional package See Appendix G for details on the corresponding package 41 Table 5 3 OPF Output Options idx name default description 38 QUT_ALL_LIM 1 controls constraint info output 1 individual flags control what is printed 0 do not print any constraint info 1 print only binding constraint info 2 print all constraint info 39 OUT_V_LIM 1 control output of voltage limit inf
54. Win dows 32 bit at http www pserc cornell edu bpmpd When installed BPMPD_MEX can be selected as the solver for DC OPFs by setting the OPF_ALG_DC to 100 It can also be used to solve general LP and QP problems via MATPOWER s common QP solver interface gps_matpower with algorithm option 100 or by calling gps_bpmpd directly G 2 CPLEX High performance LP and QP Solvers The IBM ILOG CPLEX Optimizer or simply CPLEX is a collection of optimiza tion tools that includes high performance solvers for large scale linear programming LP and quadratic programming QP problems among others More informa tion is available at http www ibm com software integration optimization cplex optimizer Although CPLEX is a commercial package at the time of this writing the full 109 version is available to academics at no charge through the IBM Academic Initia tive program for teaching and non commercial research See http www ibm com support docview wss uid swg21419058 for more details When the MATLAB interface to CPLEX is installed the CPLEX LP and QP solvers cplexlp and cplexqp can be used to solve DC OPF problems by setting the OPF_ALG_DC option equal to 500 The solution algorithms can be controlled by MATPOWER s CPLEX_LPMETHOD and CPLEX_QPMETHOD options See Table C 6 for a summary of the CPLEX related MATPOWER options A CPLEX user options function can also be used to override the defaults for any of the many CPLEX pa
55. X Z A 30 And the Hessian of the Lagrangian with respect to X is given by Lxx X ZA fxx GxxlA Axx 1 A 31 T A 4 3 First Order Optimality Conditions The first order optimality Karush Kuhn Tucker conditions for this problem are satisfied when the partial derivatives of the Lagrangian above are all set to zero F X Z A uw 0 A 32 Z gt 0 A 33 p gt 0 A 34 where De fx Gx Hx u F X Z 1 Ye A x x A 35 A x Z A X Z A 4 4 Newton Step The first order optimality conditions are solved using Newton s method The Newton update step can be written as follows AX Fx Fe FR Ful S F X Z A A 36 Ap Li 0 Gx Hx AX p ce aZ Ko am Hx I 0 0 Au H X Z This set of equations can be simplified and reduced to a smaller set of equations by solving explicitly for Ay in terms of AZ and for AZ in terms of AX Taking the 2 row of A 37 and solving for Ay we get 1 AZ Z Ay u Z ye Z Au Z w ye a AZ Au u Z ye u AZ A 38 Solving the 4 row of A 37 for AZ yields Hy AX AZ H X Z AZ H X Z HxAX A 39 13 Then substituting A 38 and A 39 into the 1 row of A 37 results in L AX Gx AA Hx Ap Ty Lyx AX Gx AA Hx u Z ye 1 AZ Ly ARAS oD Hx p Z ye u H X Z HxAX Ly LL AX Gx A Hx w Hx Z ye Hx Z u H X Hx Z Z u Hx gt a HxAX Lx Lyx Ax
56. a free academic license available See http www mosek com index php id 99 for more details When the MATLAB interface to MOSEK is installed the MOSEK LP and QP solvers can be used to solve DC OPF problems by setting the OPF_ALG_DC option equal to 600 The solution algorithm for LP problems can be controlled by MATPOWER s MOSEK_LP_ALG option See Table C 11 for other MOSEK related MATPOWER options A MOSEK user options function can also be used to override the defaults for any of the many MOSEK parameters For details see help mosek_options and the Parameters reference in Appendix E of The MOSEK optimization toolbox for MATLAB manual at http www mosek com documentation 112 It can also be used to solve general LP and QP problems via MATPOWER s common QP solver interface qps matpower with algorithm option 600 or by calling qps_mosek directly G 8 TSPOPF Three AC OPF Solvers by H Wang TSPOPF 11 is a collection of three high performance AC optimal power flow solvers for use with MATPOWER The three solvers are e PDIPM primal dual interior point method e SCPDIPM step controlled primal dual interior point method e TRALM trust region based augmented Lagrangian method The algorithms are described in 12 19 The first two are essentially C language implementations of the algorithms used by MIPS see Appendix A with the ex ception that the step controlled version in TSPOPF also includes a cost smo
57. an of the Lagrangian KNITRO options can be controlled directly by creating a standard KNITRO options file named knitro_user_options_n txt in your working directory and setting MATPOWER s KNITRO_OPT option to n where n is some positive integer value See the KNITRO user manuals at http www ziena com documentation htm for details on the available options G 6 MINOPF AC OPF Solver Based on MINOS MINOPF 16 is a MINOS based optimal power flow solver for use with MATPOWER It is for educational and research use only MINOS 17 is a legacy Fortran based software package developed at the Systems Optimization Laboratory at Stanford University for solving large scale optimization problems While MINOPF is often MATPOWER s fastest AC OPF solver on small problems as of MATPOWER 4 it no longer becomes the default AC OPF solver when it is installed It can be selected manually by setting the OPF_ALG option to 500 see help mpoption for details Builds are available for Linux 32 bit Mac OS X PPC Intel 32 bit and Win dows 32 bit at http www pserc cornell edu minopf G 7 MOSEK High performance LP and QP Solvers MOSEK is a collection of optimization tools that includes high performance solvers for large scale linear programming LP and quadratic programming QP problems among others More information is available at http www mosek com Although MOSEK is a commercial package at the time of this writing there is
58. and return a single MATLAB struct The M file format is plain text that can be edited using any standard text editor The fields of the struct are baseMVA bus branch gen and optionally gencost where baseMVA is a scalar and the rest are matrices In the matrices each row corresponds to a single bus branch or generator The columns are similar to the columns in the standard IEEE CDF and PTI formats The number of rows in bus branch and gen are np n and ng respectively If present gencost has either n or 2n rows depending on whether 1t includes costs for reactive power or just real power Full details of the MATPOWER case format are documented in Appendix B and can be accessed from the MATLAB command line by typing help caseformat 3 2 Branches All transmission lines transformers and phase shifters are modeled with a com mon branch model consisting of a standard 7 transmission line model with series impedance Zs rs j and total charging capacitance be in series with an ideal phase shifting transformer The transformer whose tap ratio has magnitude 7 and 8 This does not include DC transmission lines For more information the handling of DC trans mission lines in MATPOWER see Section 6 5 3 16 phase shift angle snitt is located at the from end of the branch as shown in Fig ure 3 1 The parameters r Ys be T and Osnir are specified directly in columns 3 4 5 9 and 10 respectively of the corresponding row of
59. ariable mpc This struct is typically defined in a case file either a function M file whose return value is the mpc struct or a MAT file that defines a variable named mpc when loaded The main simulation routines whose names begin with run e g runpf runopf accept either a file name or a MATPOWER case struct as an input Use loadcase to load the data from a case file into a struct if you want to make modifications to the data before passing it to the simulation gt gt mpc loadcase casefilename See also savecase for writing a MATPOWER case struct to a case file The structure of the MATPOWER case data is described a bit further in Section 3 1 and the full details are documented in Appendix B and can be accessed at any time via the command help caseformat The MATPOWER distribution also includes many example case files listed in Table D 15 2 3 2 Solving the Case The solver is invoked by calling one of the main simulation functions such as runpf or runopf passing in a case file name or a case struct as the first argument For example to run a simple Newton power flow with default options on the 9 bus system defined in case9 m at the MATLAB prompt type gt gt runpf case9 If on the other hand you wanted to load the 30 bus system data from case30 m increase its real power demand at bus 2 to 30 MW then run an AC optimal power flow with default options this could be accomplished as follows This describes v
60. capability curve constraints Deprecated Will be removed in a subsequent version t Used by constr and LPconstr for AC OPF Used by fmincon MIPS IPOPT and KNITRO for AC OPF name add_user cn remove_userfcn run_userfcn toggle_dcline toggle_iflims toggle_reserves Table D 10 OPF User Callback Functions description appends a userfcn to the list of those to be called for a given case appends a userfcn from the list executes the userfcn callbacks for a given stage enable disable the callbacks implementing DC lines enable disable the callbacks implementing interface flow limits enable disable the callbacks implementing fixed reserve requirements 94 name dlbr_dV dSbr_dV dSbus_dV dAbr_dV d2Ibr_dV2 d2Sbr_dV2 d2ATbr_dV2 d2ASbr_dV2 d2Sbus_dV2 Table D 11 Power Flow Derivative Functions description evaluates the partial derivatives of J evaluates the V evaluates the partial derivatives of S evaluates the V evaluates the partial derivatives of Spy evaluates the V evaluates the partial derivatives of F p with respect to V evaluates the 2 derivatives of I fit evaluates the V evaluates the 2 derivatives of S fit evaluates the V evaluates the 2 derivatives of I evaluates the V evaluates the 2 4 derivatives of S y evaluates the V evaluates the 2 4 derivatives of Shus evaluates the V t V represents complex bus voltages I f complex branch current injections Spf complex branch
61. column jJ hij represents the change in the real power flow in branch i given a unit increase in the power injected at bus j with the assumption that the additional unit of power is extracted according to some specified slack distribution AP HAP sus 4 8 This slack distribution can be expressed as an np x 1 vector w of non negative 2 weights whose elements sum to 1 Each element specifies the proportion of the slack taken up at each bus For the special case of a single slack bus k w is equal to the vector ex The corresponding PTDF matrix AH can be constructed by first creating the n x np 1 matrix H B By 4 9 then inserting a column of zeros at column k Here B y and Bac are obtained from By and Bhus respectively by eliminating their reference bus columns and in the case of Bac removing row k corresponding to the slack bus The PTDF matrix H corresponding to a general slack distribution w can be obtained from any other PTDF such as Hg by subtracting w from each column equivalent to the following simple matrix multiplication H H I w 1 4 10 These same linear shift factors may also be used to compute sensitivities of branch flows to branch outages known as line outage distribution factors or LODFs 9 Given a PTDF matrix H the corresponding n x m LODF matrix L can be con structed as follows where l is the element in row 7 and column J representing the change in flow in branch i
62. ction in early versions of MATLAB s Optimization Toolbox The primary difference is that modifications can be made by option name as opposed to having to remember the index of each option The MATPOWER options vector controls the following e power flow algorithm e power flow termination criterion e power flow options e g enforcing of reactive power generation limits e OPF algorithm e OPF termination criterion e OPF options e g active vs apparent power vs current for line limits e verbose level e printing of results The default MATPOWER options vector is obtained by calling mpoption with no arguments gt gt opt mpoption Calling it with a set of name value pairs as arguments returns an options vector with the named options set to the specified values and all others set to their default values For example the following runs a fast decoupled power flow of case30 with very verbose progress output gt gt opt mpoption PF_ALG 2 VERBOSE 3 gt gt runpf case30 opt To make changes to an existing options vector simply include it as the first argument For example to modify the previous run to enforce reactive power limts suppress the pretty printing of the output and save the results to a struct instead 82 gt gt opt mpoption opt ENFORCE_Q_LIMS 1 OUT_ALL 0 gt gt results runpf case30 opt The available options and their default values are summarized in the
63. d such that its i 7 element is 1 if generator j is located at bus 1 and O otherwise The nz x 1 vector of all bus injections from generators can then be expressed as So bus Cy Sy 3 5 3 4 Loads Constant power loads are modeled as a specified quantity of real and reactive power consumed at a bus For bus 2 the load is sq Pat 344 3 6 and Sa Pa 7Qq denotes the nz x 1 vector of complex loads at all buses The MW and MVAr equivalents before conversion to p u of p and q are specified in columns 3 and 4 respectively of row 1 of the bus matrix Constant impedance and constant current loads are not implemented directly but the constant impedance portions can be modeled as a shunt element described below Dispatchable loads are modeled as negative generators and appear as negative values in Sy 3 5 Shunt Elements A shunt connected element such as a capacitor or inductor is modeled as a fixed impedance to ground at a bus The admittance of the shunt element at bus 2 is given as UU Uh 3 7 and Y Gsh IBsp denotes the np x 1 vector of shunt admittances at all buses The parameters g and b are specified in columns 5 and 6 respectively of row i of the bus matrix as equivalent MW consumed and MVAr injected at a nominal voltage magnitude of 1 0 p u and angle of zero 18 3 6 Network Equations For a network with n buses all constant impedance elements of the model are incorporated into
64. e Oe ERE ESO 17 Relationship of w to r for d 1 linear option 32 Relationship of w to r for d 2 quadratic option 33 Constrained Cost Variable o oo a a a 34 Marginal Benefit or Bid Function 36 Total Cost Function for Negative Injection 36 Generator P Q Capability Curve 040 37 Adding Constraints Across Subsets of Variables 48 DC Line Model oc kw hehe ww whee hw ee ee aaa 60 Equivalent Dummy Generators e 60 of Tables Power Flow Results 2 20 00 00 02 0020020005 26 Power Flow Options oaoa a a a 26 Power Flow Output Options AA Optimal Power Flow Results 0 0 0 0 0 0 0 0048 40 Optimal Power Flow Options a a 41 OPF Outpt Options oa te sas iarri naer Reade eee de 42 Names Used by Implementation of OPF with Reserves 46 Results for User Defined Variables Constraints and Costs 50 Callback F unclions oa a ss dns bakes tee bw Hw He OM BROS 57 Input Data Structures for Interface Flow Limits 59 Output Data Structures for Interface Flow Limits 59 Input Arguments for mips 0 a a a 65 Output Arguments for mips ooa a a a 66 Bus Data mpo DUS e ow RRR eww padoma de ea 77 Generator Data mpc gen 2 2 ee ee 78 Branch Data npe branch s saw oes KA ace pa a EE we we 19 Generator Cost Data mpc gencost 80 DC Line Data mp
65. e deline lt lt debe SOE RG 4 Eo ES 81 Power Flow Options 0 0 0 0 00 0 eee ee 83 General OPF Options 002000002 ea 84 Power Flow and OPF Output Options 85 OPF Options for MIPS and TSPOPF 86 OPF Options for fmincon KNITRO constr and successive LP Solvers 86 C 6 OPF Options for CPLEX 0 0 0 0 0 0 0048 87 C 7 OPF Options for Gurobi 0 0 0 02 02 00 0008 87 C 8 OPF Options for IPOPT 0 0 0 2 00 0000048 88 C 9 OPF Options for KNITRO 0 0 0 0 0 00048 88 C 10 OPF Options for MINOPF 0 0 0 0 0 8 89 C 11 OPF Options for MOSEK 0 0 0 20 02 0248 90 D 1 MATPOWER Documentation Files oa a a a a a 91 D 2 Top Level Simulation Functions a a a o 91 D 3 Input Output Functions 0 000000 ee 92 D 4 Data Conversion Functions 0 0 0 0 00 00000 8 92 D 5 Power Flow Functions 0 0 00000004 92 D 6 OPF and Wrapper Functions a e a 92 D 7 OPF Model Object gt cirios rra dr 93 Des OPF Solver Functions aoaaa a a DEE HES 93 D 9 Other OPF Functions a a a a a a a a 00008 94 D 10 OPF User Callback Functions oaoa a a a a a 94 D 11 Power Flow Derivative Functions 95 D 12 NLP LP amp QP Solver Functions 0 95 D 13 Matrix Building Functions 0 0 a 96 D 14 Utility Functions 24 542 6 54 566 08 oo ewe da ewe eee ES 96 D
66. elimited format for the data matrices to make it simple to transfer data seamlessly back and forth between a text editor and a spreadsheet via simple copy and paste The details of the MATPOWER case format are given in the tables below and can also be accessed by typing help caseformat at the MATLAB prompt First the baseMVA field is a simple scalar value specifying the system MVA base used for converting power into per unit quantities For convenience and code portability idx_bus defines a set of constants to be used as named indices into the columns of the bus matrix Similarly idx_brch idx_gen and idx_cost define names for the columns of branch gen and gencost respectively The script define_constants provides a simple way to define all the usual constants at one shot These are the names that appear in the first column of the tables below 16 The MATPOWER case format also allows for additional fields to be included in the structure The OPF is designed to recognize fields named A 1 u H Cw N fparm zO zl and zu as parameters used to directly extend the OPF formulation as described in Section 6 1 Other user defined fields may also be included such as the reserves field used in the example code throughout Section 6 2 The loadcase function will automatically load any extra fields from a case file and if the appropriate savecase callback function see Section 6 2 5 is added via add_userfcn savecase will also save them back to
67. ersion 2 of the MATPOWER case format which is used internally and is the default The version 1 format now deprecated but still accessible via the loadcase and savecase functions defines the data matrices as individual variables rather than fields of a struct and some do not include all of the columns defined in version 2 l1 gt gt define_constants gt gt mpc loadcase case30 gt gt mpc bus 2 PD 30 gt gt runopf mpc The define_constants in the first line is simply a convenience script that defines a number of variables to serve as named column indices for the data matrices In this example it allows us to access the real power demand column of the bus matrix using the name PD without having to remember that it is the 3 column Other top level simulation functions are available for running DC versions of power flow and OPF for running an OPF with the option for MATPOWER to shut down decommit expensive generators etc These functions are listed in Table D 2 in Appendix D 2 3 3 Accessing the Results By default the results of the simulation are pretty printed to the screen displaying a system summary bus data branch data and for the OPF binding constraint information The bus data includes the voltage angle and total generation and load at each bus It also includes nodal prices in the case of the OPF The branch data shows the flows and losses in each branch These pretty printed results ca
68. estrictions involving all of the optimization variables and are specified via matrix A and lower and upper bound vectors l and u These parameters can be used to create equality constraints l u or inequality constraints that are bounded below u co bounded above l oo or bounded on both sides 5 3 3 User defined Variables The creation of additional user defined z variables is done implicitly based on the difference between the number of columns in A and the dimension of x The op tional vectors Zmin and Zmax are available to impose lower and upper bounds on z respectively 33 5 4 Standard Extensions In addition to making this extensible OPF structure available to end users MAT POWER also takes advantage of it internally to implement several additional capa bilities 5 4 1 Piecewise Linear Costs The standard OPF formulation in 5 1 5 4 does not directly handle the non smooth piecewise linear cost functions that typically arise from discrete bids and offers in electricity markets When such cost functions are convex however they can be modeled using a constrained cost variable CCV method The piecewise lin ear cost function c x is replaced by a helper variable y and a set of linear constraints that form a convex basin requiring the cost variable y to lie in the epigraph of the function c 2 Figure 5 3 illustrates a convex n segment piecewise linear cost function MmEH Po Baw Mo L L F C2
69. eviously This approach makes it possible to e define and access variable constraint sets as individual named blocks e define constraints costs only in terms of variables directly involved e pre process input data and or post process result data e print and save new result data e simultaneously use multiple independently developed extensions e g zonal reserve requirements and interface flow limits MATPOWER defines five stages in the execution of a simulation where custom code can be inserted to alter the behavior or data before proceeding to the next stage This custom code is defined as a set of callback functions that are regis tered via add_userfcn for MATPOWER to call automatically at one of the five stages Each stage has a name and by convention the name of a user defined callback func tion ends with the name of the corresponding stage For example a callback for the formulation stage that modifies the OPF problem formulation to add reserve requirements could be registered with the following line of code mpc add_userfcn mpc formulation userfcn_reserves_formulation 44 The sections below will describe each stage and the input and output arguments for the corresponding callback function which vary depending on the stage An example that employs additional variables constraints and costs will be used for illustration Consider the problem of jointly optimizing the allocation of both energy and rese
70. example See cpf_intro pdf for a brief in troduction to this code psse2matpower Perl script for converting PSS E data files into MATPOWER case file format Derived from a psse2psat script in the PSAT distribution Usage psse2matpower lt options gt inputfile lt outputfile gt se State estimation code contributed by Rui Bo Type test_se test_se_14bus Or test_se_14bus_err to run some examples See se_intro pdf for a brief introduction to this code smartmarket Code that implements a smart market auction clearing mech anism based on MATPOWER s optimal power flow solver See Appendix F for details state_estimator Older state estimation example based on code by James S Thorp 101 Appendix F Smart Market Code MATPOWER 3 and later includes in the extras smartmarket directory code that implements a smart market auction clearing mechanism The purpose of this code is to take a set of offers to sell and bids to buy and use MATPOWER s optimal power flow to compute the corresponding allocations and prices It has been used extensively by the authors with the optional MINOPF package 16 in the context of POWERWEB but has not been widely tested in other contexts The smart market algorithm consists of the following basic steps 1 Convert block offers and bids into corresponding generator capacities and costs 2 Run an optimal power flow with decommitment option uopf to find generator allocations and nodal prices
71. f the IPOPT related MATPOWER options The many algorithm options can be set by creating an IPOPT user options function to override the defaults set by ipopt_options See help ipopt_options and the options reference section of the IPOPT documentation at http www coin or org Ipopt documentation for details It can also be used to solve general LP and QP problems via MATPOWER s common QP solver interface qps_matpower with algorithm option 400 or by calling qps_ipopt directly G 5 KNITRO Non Linear Programming Solver KNITRO 23 is a general purpose optimization solver specializing in nonlinear prob lems The MATLAB Optimization Toolbox from The MathWorks includes an inter face to the KNITRO libraries called ktrlink but the libraries themselves must be acquired directly from Ziena Optimization LLC More information is available at http www ziena com and http www ziena com knitromatlab htm Although KNITRO is a commercial package at the time of this writing there is a free academic license available with details on their download page When installed KNITRO s MATLAB interface function ktrlink can be used by MATPOWER to solve AC OPF problems by simply setting the OPF_ALG option to 600 111 See Table C 9 for a summary of KNITRO related MATPOWER options The ktrlink function uses callbacks to MATLAB functions to evaluate the objective function and its gradient the constraint values and Jacobian and the Hessi
72. flow MATPOWER was improved in various ways in response to Doug Mitarotonda s contributions and suggestions Thanks also to many others who have contributed code testing time bug reports and suggestions over the years And last but not least thanks to all of the many users who by using MATPOWER in their own work have helped to extend the contribution of MATPOWER to the field of power systems far beyond what we could do on our own 63 Appendix A MIPS MATLAB Interior Point Solver Beginning with version 4 MATPOWER includes a new primal dual interior point solver called MIPS for MATLAB Interior Point Solver It is implemented in pure MATLAB code derived from the MEX implementation of the algorithms described in 12 19 This solver has application outside of MATPOWER to general nonlinear optimiza tion problems of the following form min Fx A 1 subject to g x 0 A 2 h x lt 0 A 3 I lt Ar lt u A 4 Lmin lt Y lt Tmax A 5 where f R gt R g R gt R and h R gt R The solver is implemented by the mips function which can be called as follows x f exitflag output lambda mips f_fcn x0 A 1 u xmin xmax gh_fcn hess_fcn opt where the input and output arguments are described in Tables A 1 and A 2 respec tively Alternatively the input arguments can be packaged as fields in a problem struct and passed in as a single argument where all fields except f_fcn and x
73. following tables and can also be accessed via the command help mpoption Some of the options require separately installed optional packages available from the MATPOWER website Table C 1 Power Flow Options idx name default description 1 PF_ALG 1 AC power flow algorithm 1 Newtons s method 2 Fast Decoupled XB version 3 Fast Decouple BX version 4 Gauss Seidel 2 PF_TOL 1078 termination tolerance on per unit P and Q dispatch 3 PF_MAX_IT 10 maximum number of iterations for Newton s method 4 PF_MAX_IT_FD 30 maximum number of iterations for fast decoupled method 5 PF_MAX_IT_GS 1000 maximum number of iterations for Gauss Seidel method 6 ENFORCE_Q_LIMS 0 enforce gen reactive power limits at expense of Vm l 0 do not enforce limits 1 enforce limits simultaneous bus type conversion 2 enforce limits one at a time bus type conversion 10 PFDC 0 DC modeling for power flow and OPF formulation 0 use AC formulation and corresponding alg options 1 use DC formulation and corresponding alg options 83 idx 11 16 24 20 26 name OPF_ALG OPF_VIOLATION OPF_FLOW_LIM OPF_IGNORE_ANG_LIM OPF_ALG_DC Table C 2 General OPF Options default 0 5 x 107 0 description AC optimal power flow algorithm O choose default solver based on availability in the following order 540 560 300 constr MATLAB Opt Toolbox 1 x and 2 x 320 dense successive LP 340 sparse
74. for details Table C 9 OPF Options for KNITRO idx name default description 58 KNITRO_OPT 0 if non zero a positive integer n indicating that all KNITRO options should be handled by a KNITRO options file named knitro_user_options_n txt For OPF_ALG option set to 600 only Requires the installation of an optional package See Appendix G for details on the corresponding package 88 idx 61 62 63 64 65 66 67 68 69 70 71 12 13 Table C 10 OPF Options for MINOPF name MNS_FEASTOL MNS_ROWTOL MNS_XTOL MNS_MAJDAMP MNS_MINDAMP MNS_PENALTY_PARM MNS_MAJOR_IT MNS_MINOR_IT MNS_MAX_IT MNS_VERBOSITY MNS_CORE MNS_SUPBASIC_LIM MNS_MULTI_PRICE default 0 1078 0 1073 0 1073 0 0 30 description primal feasibility tolerance set to value of OPF_VIOLATION by default row tolerance set to value of OPF_VIOLATION by default x tolerance set to value of CONSTR_TOL_X by default major damping parameter minor damping parameter penalty parameter major iterations minor iterations iteration limit amount of progress output printed by MEX file 1 controlled by VERBOSE option O do not print anything 1 print only only termination status message 2 print termination status amp screen progress 3 print screen progress report file usually fort 9 memory allocation defaults to 1200n 2 n ng superbasics limit defaults to 2n 2ng multiple price t For
75. fore calling the solver This is the ideal place for modifying the problem formulation with additional variables constraints and costs using the add_vars add_constraints and add_costs methods of the OPF Model object Inputs are the om object and any optional args supplied when the callback was registered via add_userfcn Output is the updated om object The om object contains both the original MATPOWER case data as well as all of the indexing data for the variables and constraints of the standard OPF formulation See the on line help for opf_model for more details on the OPF model object and the methods available for manipulating and accessing it In the example code a new variable block named R with n elements and the limits from 6 2 is added to the model via the add_vars method Similarly two linear constraint blocks named Pg_plus_R and Rreq implementing 6 4 and 6 5 respectively are added via the add_constraints method And finally the add_costs method is used to add to the model a user defined cost block corresponding to 6 3 Notice that the last argument to add_constraints and add_costs allows the con straints and costs to be defined only in terms of the relevant parts of the optimiza tion variable x For example the A matrix for the Pg_plus_R constraint contains only columns corresponding to real power generation Pg and reserves R and need not bother with voltages reactive power injections etc As illustrated in Figu
76. formulation of the AC power flow problem the power balance equation in 3 17 is split into its real and reactive components expressed as functions of the voltage angles O and magnitudes Vm and generator injections P and where the load injections are assumed constant and given gP Q Vim Fa Fae Vin EF Py Cu 0 4 2 gq 9 Viis Q E OwO Vm EJ Qa CQ 4 3 For the AC power flow problem the function g x from 4 1 is formed by taking the left hand side of the real power balance equations 4 2 for all non slack buses 23 and the reactive power balance equations 4 3 for all PQ buses and plugging in the reference angle the loads and the known generator injections and voltage magnitudes a O Mato a Vins Qg Yi Lpy U LrPQ Vj Tpo 4 4 g x The vector x consists of the remaining unknown voltage quantities namely the volt age angles at all non reference buses and the voltage magnitudes at PQ buses o 0 Vid Tyc 4 5 y V9 LpQ This yields a system of nonlinear equations with np 2Npg equations and un knowns where np and np are the number of PV and PQ buses respectively After solving for x the remaining real power balance equation can be used to compute the generator real power injection at the slack bus Similarly the remaining np 1 reactive power balance equations yield the generator reactive power injections MATPOWER includes four different alg
77. full 3 dimensional set of second partial derivatives of F will not be computed Instead a matrix of partial derivatives will be formed by computing the Jacobian of the vector function obtained by multiplying the transpose of the Jacobian of F by a vector A using the following notation Fxx A ae Fx d A 18 Please note also that A is used to denote a diagonal matrix with vector A on the diagonal and e is a vector of all ones 71 A 4 2 Problem Formulation and Lagrangian The primal dual interior point method used by MIPS solves a problem of the form min FX A 19 subject to G X 0 A 20 A X lt 0 A 21 where the linear constraints and variable bounds from A 4 and A 5 have been incorporated into G X and H X The approach taken involves converting the n inequality constraints into equality constraints using a barrier function and vector of positive slack variables Z min 100 gt y In Zm A 22 subject to G X 0 A 23 A X Z 0 A 24 L gt 0 A 25 As the parameter of perturbation y approaches zero the solution to this problem approaches that of the original problem For a given value of y the Lagrangian for this equality constrained problem is LUX ZA u FOO HA GOO A A X Z 7 Y In Zm A 26 Taking the partial derivatives with respect to each of the variables yields LUX ZA u fx NX Gx p Ax A 27 3 X Z r 4 pw yel Z A 28 LUX ZA u G X A 29 LI X Z u H
78. g MIPS sc runs tests for AC OPF solver using fmincon runs tests for AC OPF solver using IPoPT runs tests for AC OPF solver using KNITRO runs tests for AC OPF solver using dense successive LP runs tests for AC OPF solver using sparse successive LP full runs tests for AC OPF solver using sparse successive LP sparse runs tests for AC OPF solver using MINOPF runs tests for AC OPF solver using MIPS runs tests for AC OPF solver using MIPS sc t_opf_tspopf_pdipm runs tests for AC OPF solver using PDIPM t_opf_tspopf_scpdipm runs tests for AC OPF solver using SC PDIPM t_opf_tspopf_tralm runs tests for AC OPF solver using TRALM t_opf_userfcns runs tests for AC OPF with userfcn callbacks for reserves and interface flow limits runs tests for AC OPF with fixed reserve requirements t_runopf_w_res Deprecated Will be removed in a subsequent version t Requires the installation of an optional package See Appendix G for details on the corresponding package 100 Appendix E Extras Directory For a MATPOWER installation in MATPOWER the contents of MATPOWER extras con tains additional MATPOWER related code some contributed by others Some of these could be moved into the main MATPOWER distribution in the future with a bit of polishing and additional documentation Please contact the developers if you are interested in helping make this happen cpf Continuation power flow code contributed by Rui Bo Type test_cpf to run an
79. h resistances r and charging capacitances be are negligible 1 1 amp beO 3 18 ret its jas 3 18 e All bus voltage magnitudes are close to 1 p u Uji X efi 3 19 e Voltage angle differences across branches are small enough that sin 0 0 Osnitt X O 0 Oshift 3 20 Substituting the first set of assumptions regarding branch parameters from 3 18 the branch admittance matrix in 3 2 approximates to 1 1 1 a Vip amp e l 3 21 1 J Ls TeJOshift Combining this and the second assumption with 3 1 yields the following approxi mation for 7 1 1 1 ES a j0 ee gO of a 5 E Te JOsnift E 2d lo ef Ot 0snin 3 22 JDT T The approximate real power flow is then derived as follows first applying 3 19 and 3 22 then extracting the real part and applying 3 20 pr Riss R 0 17 we RS eir Th ety Ort Oars EST T R J 1 oJ Of 0 Osnire EST 75 1 l 1 N on sialo Oi Onit J cos f 0 ba 1 EST Os O Onit 3 23 20 As expected given the lossless assumption a similar derivation for the power injec tion at the to end of the line leads to leads to p py The relationship between the real power flows and voltage angles for an individual branch 2 can then be summarized as Pf _ pi O y i ms Byr 6 ar high 3 24 where E E si pt y a i i l P hift gt
80. imal simplex 2 dual simplex 3 network simplex 4 barrier if non zero appended to cplex_user_options_ to form the name of a user supplied function called to modify the default options struct for CPLEX Requires the installation of an optional package See Appendix G for details C 7 OPF Options for Gurobi description algorithm used by Gurobi for LP QP problems 0 primal simplex 1 dual simplex 2 barrier 3 concurrent LP only 4 deterministic concurrent LP only maximum time allowed for solver secs maximum number of threads to use if non zero appended to gurobi_user_options_ to form the name of a user supplied function called to modify the default options struct for GurobiS t For OPF_ALG_DC option set to 700 only Requires the installation of an optional package See Appendix G for details on the corresponding package Default values in parenthesis refer to defaults assigned by Gurobi if called with option equal to 0 See help gurobi_options for details 31 Table C 8 OPF Options for IPopPT idx name default description 60 IPOPT_OPT 0 if non zero appended to ipopt_user_options_ to form the name of a user supplied function called to modify the default options struct for IPOPT t For OPF_ALG option set to 580 and OPF_ALG_DC set to 400 only Requires the installation of an optional package See Appendix G for details on the corresponding package See help ipopt_options
81. imum injection of zero Consider the example of a price sensitive load whose marginal benefit function is shown in Figure 5 4 The demand pg of this load will be zero for prices above Aj p for prices between A and A and p pa for prices below Ag This corresponds to a negative generator with the piecewise linear cost curve shown in Figure 5 5 Note that this approach assumes that the demand blocks can be partially dispatched or split Requiring blocks to be accepted or rejected in their entirety would pose a mixed integer problem that is beyond the scope of the current MATPOWER implementation With an AC network model there is also the question of reactive dispatch for such loads Typically the reactive injection for a generator is allowed to take on any value within its defined limits Since this is not normal load behavior the model used in MATPOWER assumes that dispatchable loads maintain a constant power factor When formulating the AC OPF problem MATPOWER will automatically generate 30 MW A marginal benefit Figure 5 4 Marginal Benefit or Bid Function c total cost MW p injection Figure 5 5 Total Cost Function for Negative Injection 36 an additional equality constraint to enforce a constant power factor for any negative generator being used to model a dispatchable load It should be noted that with this definition of dispatchable loads as negative generators if the negative cost c
82. irection lims nif X3 matrix of interface limits where nis is the number of interface limits to be enforced The first column is the index k of the interface and the second and third columns are F oe and f7 the lower and upper limits respectively on the DC model flow limits in MW for the interface Table 6 5 Output Data Structures for Interface Flow Limits name description results OPF results struct superset of mpc with additional fields for output data if additional field in results containing output parameters for interface flow limits in the following sub fields P nis X 1 vector of actual flow in MW across the corresponding interface as measured at the from end of associated branches mu l nig X 1 vector of shadow prices on lower flow limits u MW mu u nif X 1 vector of shadow prices on upper flow limits u MW t Here we assume the objective function has units u Running a case that includes the interface flow limits is as simple as loading the case turning on the extension and running it Unlike with the reserves extension MATPOWER does not currently have a wrapper function to automate this mpc loadcase t_case30_userfcns mpc toggle_iflims mpc on results runopf mpc 6 5 3 DC Transmission Lines Beginning with version 4 1 MATPOWER also includes a simple model for dispatchable DC transmission lines While the implementation is based on the extensible OPF architecture described abo
83. ity constraints removed solution data AC OPF of t_case9_opf w extra cost constraints solution data AC OPF of t_case9_opf w OPF_FLOW_LIM 1 solution data AC OPF of t_case9_opfv2 w only gen PQ capabil ity constraints branch angle diff limits removed solution data AC OPF of t_case9_opf solution data AC power flow of t_case9_pf case data used to test auction code case data used to test ext2int and int2ext external indexing case data used to test ext2int and int2ext internal indexing same as t_case9_opfv2 with additional DC line data sample case file with OPF data version 1 format sample case file with OPF data version 2 format includes addi tional branch angle diff limits amp gen PQ capability constraints sample case file with only power flow data version 1 format sample case file with only power flow data version 2 format sample case file with OPF reserves and interface flow limit data 98 Table D 18 Miscellaneous MATPOWER Tests name description t test_matpower t_auction_minopf t_auction_mips t_auction_tspopf_pdipm t_dcline t_ext2int2ext t_hasPQcap t_hessian t_jacobian t_loadcase t_makeLODF t_makePTDF t_mips t mips6 t_modcost t_off2case t_qps matpower t_pf t_runmarket t_scale_load t_total_load t_totcost runs all MATPOWER tests runs tests for auction using MINOPF runs tests for auction using MIPS runs tests for auction using PDIPM runs tests for DC line implementation in toggle _dcline
84. lags control what is printed 0 do not print anything 1 print everything 33 OUT_SYS_SUM 1 print system summary 0 or 1 34 OUT_AREA_SUM 0 print area summaries 0 or 1 39 OUT_BUS 1 print bus detail includes per bus gen info 0 or 1 36 OUT_BRANCH 1 print branch detail 0 or 1 37 OUT_GEN 0 print generator detail 0 or 1 t Overrides individual flags Internally the runpf function does a number of conversions to the problem data before calling the appropriate solver routine for the selected power flow algorithm This external to internal format conversion is performed by the ext2int function described in more detail in Section 6 2 1 and includes the elimination of out of service equipment the consecutive renumbering of buses and the reordering of generators by increasing bus number All computations are done using this internal indexing When the simulation has completed the data is converted back to external format by int2ext before the results are printed and returned 4 4 Linear Shift Factors The DC power flow model can also be used to compute the sensitivities of branch flows to changes in nodal real power injections sometimes called injection shift factors ISF or generation shift factors 8 These n x n sensitivity matrices also called power transfer distribution factors or PTDF s carry an implicit assumption about the slack distribution If H is used to denote a P TDF matrix then the element in row 2 and
85. lbacks can be found in toggle_reserves A wrapper around runopf that turns on this extension before running the OPF is ot provided in runopf _w_res allowing you to run a case with an appropriate reserves field such as t_case30_userfcns as follows results runopf_w_res t_case30_userfcns See help runopf_w_res and help toggle_reserves for more information Exam ples of using this extension and a case file defining the necessary input data can be found in t_opf_userfcns and t_case30_userfcns respectively Additional tests for runopf_w_res are included in t_runopf_w_res 6 5 2 Interface Flow Limits This extension adds interface flow limits based on flows computed from a DC network model It is implemented in toggle_iflims A flow interface k is defined as a set By of branch indices 2 and a direction for each branch If p represents the real power flow from bus gt to bus in branch 7 and d is equal to 1 or 1 to indicate the direction then the interface flow fp for interface k is defined as f 0 dipi Q 6 6 1 By where each branch flow p is an approximation calculated as a linear function of the bus voltage angles based on the DC power flow model from equation 3 29 This extension adds to the OPF problem a set of nip doubly bounded constraints on these flows Fo lt FLO lt FP Yke ve 6 7 where Fy and FP are the specified lower and upper bounds on the interface flow and Zr is a
86. linear function 1 lt Ax lt u as opposed to separate equality constrained Aeg beg and upper bounded Ax lt b functions MATPOWER also includes another wrapper function qps matpower that provides a consistent interface for all of the QP and LP solvers it has available This interface is identical to that used by qps mips with the exception of the structure of the opt input argument The solver is chosen according to the value of opt alg See the help for qps_matpower for details Several examples of using gps_matpower to solve LP and QP problems can be found in t_qps_matpower m 4For MATLAB 6 x use qps mips6 A 4 Primal Dual Interior Point Algorithm This section provides some details on the primal dual interior point algorithm used by MIPS and described in 12 19 A 4 1 Notation For a scalar function f R R of a real vector X 1 To La l we use the following notation for the first derivatives transpose of the gradient of of f Of a of oe ge A 14 The matrix of second partial derivatives the Hessian of f is OX ep J OL ROL Ox of a l a Teds xx ay Sy A 15 For a vector function F R R of a vector X where F X A X 00 lt lt falo J A 16 the first derivatives form the Jacobian matrix where row 7 is the transpose of the gradient of f OU 2 2 AE OF 0x1 Orn Dic e E A 17 OX dim Ofm 0x1 Orn In these derivations the
87. llback was registered via add_userfcn The output of the callback is the updated results struct This is typically used to convert any results to external indexing and populate any corresponding fields in the results struct The results struct contains in addition to the standard OPF results solution in formation related to all of the user defined variables constraints and costs Table 6 2 summarizes where the various data is found Each of the fields listed in the table is actually a struct whose fields correspond to the named sets created by add_vars add_constraints and add_costs Table 6 2 Results for User Defined Variables Constraints and Costs name description results var val final value of user defined variables results var mu shadow price on lower limit of user defined variables shadow price on upper limit of user defined variables results lin mu 1 shadow price on lower left hand limit of linear constraints results lin mu shadow price on upper right hand limit of linear constraints results cost final value of user defined costs results var mu cece In the example code below the callback function begins by converting the reserves input data in the resulting case qty cost and zones fields of results reserves back to external indexing via calls to i2e_field See the help for i2e_field and i2e_data for more details on how they can be used Then the reserves results of interest are extracted from the appropriate
88. lt runpf solves an AC power flow problem using a standard Newton s method solver To run a DC power flow the PF_DC option must be set to 1 For convenience MATPOWER provides a function rundcpf which is simply a wrapper that sets PF_DC before calling runpf Table 4 2 Power Flow Options idx name default description 1 PF_ALG 1 AC power flow algorithm 1 Newtons s method 2 Fast Decoupled XB version 3 Fast Decouple BX version 4 Gauss Seidel 2 PF_TOL 10 termination tolerance on per unit P and Q dispatch 3 PF_MAX_IT 10 maximum number of iterations for Newton s method 4 PF_MAX_IT_FD 30 maximum number of iterations for fast decoupled method 5 PF_MAX_IT_GS 1000 maximum number of iterations for Gauss Seidel method 6 ENFORCE_Q_LIMS 0 enforce gen reactive power limits at expense of Vm 0 do not enforce limits 1 enforce limits simultaneous bus type conversion 2 enforce limits one at a time bus type conversion 10 PFDC 0 DC modeling for power flow and OPF formulation 0 use AC formulation and corresponding alg options 1 use DC formulation and corresponding alg options 26 Table 4 3 Power Flow Output Options idx name default description 31 VERBOSE 1 amount of progress info to be printed 0 print no progress info 1 print a little progress info 2 print a lot progress info 3 print all progress info 32 OUT_ALL 1 controls pretty printing of results 1 individual f
89. lts and the pricing rules of the various uniform price auctions are described in detail in 20 There are certain circumstances under which the price of a cleared offer deter mined by the above procedures can be less than the original offer price such as when a generator is dispatched at its minimum generation limit or greater than the price cap lim P max_cleared_offer For this reason all cleared offer prices are clipped to be greater than or equal to the offer price but less than or equal to lim P max_cleared_offer Likewise cleared bid prices are less than or equal to the bid price but greater than or equal to lim P min_cleared_bid F 1 Handling Supply Shortfall In single sided markets in order to handle situations where the offered capacity is insufficient to meet the demand under all of the other constraints resulting in an infeasible OPF we introduce the concept of emergency imports We model an import as a fixed injection together with an equally sized dispatchable load which is bid in at a high price Under normal circumstances the two cancel each other and have no effect on the solution Under supply shortage situations the dispatchable load is not fully dispatched resulting in a net injection at the bus mimicking an import When used in conjunction with the LAO pricing rule the marginal load bid will not set the price if all offered capacity can be used F 2 Example The case file t t_auction_case m used for this example
90. mn MU_PMAX MU_QMIN or MU_QMAX in the k row of gen 5 4 4 Branch Angle Difference Limits The difference between the bus voltage angle 0 at the from end of a branch and the angle 0 at the to end can be bounded above and below to act as a proxy for a transient stability limit for example If these limits are provided MATPOWER creates the corresponding constraints on the voltage angle variables 5 5 Solvers Early versions of MATPOWER relied on MATLAB s Optimization Toolbox 13 to provide the NLP and QP solvers needed to solve the AC and DC OPF problems respectively While they worked reasonably well for very small systems they did not scale well to larger networks Eventually optional packages with additional solvers were added to improve performance typically relying on MATLAB extension MEX files implemented in Fortran or C and pre compiled for each machine architecture Some of these MEX files are distributed as optional packages due to differences in terms of use For DC optimal power flow there is a MEX build 14 of the high performance interior point BPMPD solver 15 for LP QP problems For the AC OPF problem the MINOPF 16 and TSPOPF 11 packages provide solvers suitable for much larger systems The former is based on MINOS 17 and the latter includes the primal dual interior point and trust region based augmented Lagrangian methods described in 12 MATPOWER version 4 and later also includes the option to use the open
91. ms of Use Beginning with version 4 the code in MATPOWER is distributed under the GNU General Public License GPL 1 with an exception added to clarify our intention to allow MATPOWER to interface with MATLAB as well as any other MATLAB code or MEX files a user may have installed regardless of their licensing terms The full text of the GPL can be found in the COPYING file at the top level of the distribution or at http www gnu org licenses gp1 3 0 txt The text of the license notice that appears with the copyright in each of the code files reads http www pserc cornell edu http www pserc cornell edu powerweb MATPOWER is free software you can redistribute it and or modify it under the terms of the GNU General Public License as published by the Free Software Foundation either version 3 of the License or at your option any later version MATPOWER is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public License for more details You should have received a copy of the GNU General Public License along with MATPOWER If not see lt http www gnu org licenses gt Additional permission under GNU GPL version 3 section 7 If you modify MATPOWER or any covered work to interface with other modules such as MATLAB code and MEX files available in a MATLAB R or comparable environment co
92. n be saved to a file by providing a filename as the optional 3 argument to the simulation function The solution is also stored in a results struct available as an optional return value from the simulation functions This results struct is a superset of the MATPOWER case struct mpc with additional columns added to some of the existing data fields and additional fields The following example shows how simple it is after running a DC OPF on the 118 bus system in case118 m to access the final objective function value the real power output of generator 6 and the power flow in branch 51 define_constants results rundcopf case118 final_objective results f gen6_output results gen 6 PG branch51_flow results branch 51 PF Full documentation for the content of the results struct can be found in Sec tions 4 3 and 5 6 12 2 3 4 Setting Options MATPOWER has many options for selecting among the available solution algorithms controlling the behavior of the algorithms and determining the details of the pretty printed output These options are passed to the simulation routines as a MATPOWER options vector The elements of the vector have names that can be used to set the corresponding value via the mpoption function Calling mpoption with no arguments returns the default options vector the vector used if none is explicitly supplied Calling 1t with a set of name and value pairs modifies the default vector For example
93. n the m x 1 vector of nonlinear equality constraint violations g x the p x 1 vector of nonlinear inequality constraint violations A x along with their gradients in dg and dh Here dg is an n x m matrix whose j column is Vg and dh is n x p with 7 column equal to Vh Finally for cases with nonlinear constraints hess_fcn returns the n x n Hessian TL of the Lagrangian function L z A 1 0 of x A glo p hz A 6 for given values of the multipliers A and u where is the cost_mult scale factor for the objective function Unlike fmincon mips passes this scale factor to the Hessian evaluation function in the 3 argument The use of nargout in f_fcn and gh _fcn is recommended so that the gradients 66 and Hessian are only computed when required A 1 Example 1 The following code shows a simple example of using mips to solve a 2 dimensional unconstrained optimization of Rosenbrock s banana function f x 100 z2 2 1 21 A 7 First create a MATLAB function that will evaluate the objective function its gradients and Hessian for a given value of x In this case the coefficient of the first term is defined as a paramter a function f df d2f banana x a f a x 2 x 1 72 72 1 x 1 72 if nargout gt 1 hh gradient is required df 4 a x 1 73 x 1 x 2 2 x 1 2 2 a x 2 x 1 72 Is if nargout gt 2 hh Hessian is required d2f 4 a x 3xx 1 72 x 2 1 2 a x 1 x 1
94. ne is applied to each element of u to produce the corresponding element of w mifa ui ki Ug SK Wile Ue he ty A Here k specifies the size of the dead zone m is a simple scale factor and fa is a pre defined scalar function selected by the value of d Currently MATPOWER implements only linear and quadratic options Q if d fala 2 fg 2 5 31 a as illustrated in Figure 5 1 and Figure 5 2 respectively Figure 5 1 Relationship of w to r for d 1 linear option This form for f provides the flexibility to handle a wide range of costs from simple linear functions of the optimization variables to scaled quadratic penalties on quantities such as voltages lying outside a desired range to functions of linear 32 Figure 5 2 Relationship of w to r for d 2 quadratic option combinations of variables inspired by the requirements of price coordination terms found in the decomposition of large loosely coupled problems encountered in our own research Some limitations are imposed on the parameters in the case of the DC OPF since MATPOWER uses a generic quadratic programming QP solver for the optimization In particular k 0 and d 1 for all 2 so the dead zone is not considered and only the linear option is available for fq As a result for the DC case 5 30 simplifies to w Muu 5 3 2 User defined Constraints The user defined constraints 5 25 are general linear r
95. nimum reactive power output MVAr voltage magnitude setpoint p u total MVA base of machine defaults to baseMVA gt 0 machine in service lt 0 machine out of service maximum real power output MW minimum real power output MW lower real power output of PQ capability curve MW upper real power output of PQ capability curve MW minimum reactive power output at PC1 MVAr maximum reactive power output at PC1 MVAr minimum reactive power output at PC2 MVAr maximum reactive power output at PC2 MVAr ramp rate for load following AGC MW min ramp rate for 10 minute reserves MW ramp rate for 30 minute reserves MW ramp rate for reactive power 2 sec timescale MVAr min area participation factor Kuhn Tucker multiplier on upper P limit u MW Kuhn Tucker multiplier on lower P limit u MW Kuhn Tucker multiplier on upper Q limit u MVAr Kuhn Tucker multiplier on lower Qg limit u MVAr machine status Not included in version 1 case format Included in OPF output typically not included or ignored in input matrix Here we assume the objective function has units u 18 Table B 3 Branch Data mpc branch name column description F_BUS 1 from bus number T_BUS 2 to bus number BRR 3 resistance p u BR_X 4 reactance p u BR_B 5 total line charging susceptance p u RATE_A 6 MVA rating A long term rating RATE_B 7 MVA rating B short term rating RATE_C 8 MVA rating C emergenc
96. nt for a single time period which allows it to shut down these expensive units and find a least cost commitment and dispatch To run this for case30 for example type gt gt runuopf case30 By default runuopf is based on the AC optimal power flow problem To run a DC OPF the PF_DC option must be set to 1 For convenience MATPOWER provides a function runduopf which is simply a wrapper that sets PF_DC before calling runuopf MATPOWER uses an algorithm similar to dynamic programming to handle the de commitment It proceeds through a sequence of stages where stage N has N generators shut down starting with N 0 as follows Step 1 Begin at stage zero N 0 assuming all generators are on line with all limits in place Step 2 Solve a normal OPF Save the solution as the current best Step 3 Go to the next stage N N 1 Using the best solution from the previous stage as the base case for this stage form a candidate list of generators with minimum generation limits binding If there are no candidates skip to Step 5 Step 4 For each generator on the candidate list solve an OPF to find the total system cost with this generator shut down Replace the current best solu tion with this one if it has a lower cost If any of the candidate solutions produced an improvement return to Step 3 Step 5 Return the current best solution as the final solution It should be noted that the method employed here is simply a heu
97. ntaining parts covered under other licensing terms the licensors of MATPOWER grant you additional permission to convey the resulting work Please note that the MATPOWER case files distributed with MATPOWER are not covered by the GPL In most cases the data has either been included with permission or has been converted from data available from a public source 1 3 Citing MATPOWER While not required by the terms of the license we do request that publications derived from the use of MATPOWER explicitly acknowledge that fact by citing reference 2 R D Zimmerman C E Murillo S nchez and R J Thomas MATPOWER Steady State Operations Planning and Analysis Tools for Power Systems Research and Ed ucation Power Systems IEEE Transactions on vol 26 no 1 pp 12 19 Feb 2011 2 Getting Started 2 1 System Requirements To use MATPOWER 4 1 you will need e MATLAB version 6 5 or later or e GNU Octave version 3 2 or later For the hardware requirements please refer to the system requirements for the version of MATLAB or Octave that you are using If the MATLAB Optimization Toolbox is installed as well MATPOWER enables an option to use 1t to solve optimal power flow problems though this option is not recommended for most applications In this manual references to MATLAB usually apply to Octave as well However due to lack of extensive testing support for Octave should be considered experimen
98. nvolves solving for the set of voltages and flows in a network corresponding to a specified pattern of load and generation MATPOWER includes solvers for both AC and DC power flow problems both of which involve solving a set of equations of the form g x 0 4 1 constructed by expressing a subset of the nodal power balance equations as functions of unknown voltage quantities All of MATPOWER s solvers exploit the sparsity of the problem and except for Gauss Seidel scale well to very large systems Currently none of them include any automatic updating of transformer taps or other techniques to attempt to satisfy typical optimal power flow constraints such as generator voltage or branch flow limits 4 1 AC Power Flow In MATPOWER by convention a single generator bus is typically chosen as a refer ence bus to serve the roles of both a voltage angle reference and a real power slack The voltage angle at the reference bus has a known value but the real power gen eration at the slack bus is taken as unknown to avoid overspecifying the problem The remaining generator buses are classified as PV buses with the values of voltage magnitude and generator real power injection given Since the loads P and Qq are also given all non generator buses are PQ buses with real and reactive injections fully specified Let Zier Zpy and Tpq denote the sets of bus indices of the reference bus PV buses and PQ buses respectively In the traditional
99. o 0 do not print 1 print binding constraints only 2 print all constraints control output of line flow limit info control output of gen active power limit info control output of gen reactive power limit info for AC OPF return constraint and derivative info in results raw in fields g dg df d2f 40 OUT_LINE_LIM 41 OUT_PG_LIM 42 OQUT_QG_LIM 52 RETURN_RAW_DER O HA t Overrides individual flags Takes values of 0 1 or 2 as for OUT_V_LIM equipment the consecutive renumbering of buses and the reordering of generators by increasing bus number All computations are done using this internal indexing When the simulation has completed the data is converted back to external format by int2ext before the results are printed and returned In addition both ext2int and int2ext can be customized via user supplied callback routines to convert data needed by user supplied variables constraints or costs into internal indexing 42 6 Extending the OPF The extended OPF formulation described in Section 5 3 allows the user to modify the standard OPF formulation to include additional variables costs and or constraints There are two primary mechanisms available for the user to accomplish this The first is by directly constructing the full parameters for the addional costs or constraints and supplying them either as fields in the case struct or directly as arguments to the opf function The second and more powerful meth
100. od is via a set of callback functions that customize the OPF at various stages of the execution MATPOWER includes two examples of using the latter method one to add a fixed zonal reserve requirement and another to implement interface flow limits 6 1 Direct Specification To add costs directly the parameters H C N 7 k d and m of 5 27 5 31 described in Section 5 3 1 are specified as fields or arguments H Cw N and fparn repectively where fparm is the nuy x 4 matrix um 10 f k m 6 1 When specifying additional costs N and Cw are required while H and fparm are optional The default value for H is a zero matrix and the default for fparm 1s such that d and m are all ones and f and k are all zeros resulting in simple linear cost with no shift or dead zone N and H should be specified as sparse matrices For additional constraints the A l and u parameters of 5 25 are specified as fields or arguments of the same names A 1 and u respectively where A is sparse Additional variables are created implicitly based on the difference between the number of columns in A and the number n of standard OPF variables If A has more columns than x has elements the extra columns are assumed to correspond to a new z variable The initial value and lower and upper bounds for z can also be specified in the optional fields or arguments z0 z1 and zu respectively For a simple formulation extension to be used for a small number of
101. orithms for solving the AC power flow problem The default solver is based on a standard Newton s method 4 using a polar form and a full Jacobian updated at each iteration Each Newton step involves computing the mismatch g x forming the Jacobian based on the sensitivities of these mismatches to changes in x and solving for an updated value of x by factorizing this Jacobian This method is described in detail in many textbooks Also included are solvers based on variations of the fast decoupled method 5 specifically the XB and BX methods described in 6 These solvers greatly reduce the amount of computation per iteration by updating the voltage magnitudes and angles separately based on constant approximate Jacobians which are factored only once at the beginning of the solution process These per iteration savings however come at the cost of more iterations The fourth algorithm is the standard Gauss Seidel method from Glimm and Stagg 7 It has numerous disadvantages relative to the Newton method and is included primarily for academic interest By default the AC power flow solvers simply solve the problem described above ignoring any generator limits branch flow limits voltage magnitude limits etc How ever there is an option ENFORCE_Q_LIMS that allows for the generator reactive power limits to be respected at the expense of the voltage setpoint This is done in a rather brute force fashion by adding an outer loop around the A
102. orresponds to a benefit for consumption minimizing the cost f x of generation is equivalent to maximizing social welfare 5 4 3 Generator Capability Curves The typical AC OPF formulation includes box constraints on a generator s real and reactive injections specified as simple lower and upper bounds on p Pmin and Pmax and q Qmin and dmax On the other hand the true P Q capability curves of phys ical generators usually involve some tradeoff between real and reactive capability so that it is not possible to produce the maximum real output and the maximum or minimum reactive output simultaneously To approximate this tradeoff MAT POWER includes the ability to add an upper and lower sloped portion to the standard box constraints as illustrated in Figure 5 6 where the shaded portion represents the Figure 5 6 Generator P Q Capability Curve 37 feasible operating region for the unit The two sloped portions are constructed from the lines passing through the two pairs of points defined by the six parameters p q q po q and que If these six parameters are specified for a given generator MATPOWER automatically constructs the corresponding additional linear inequality constraints on p and q for that unit If one of the sloped portions of the capability constraints is binding for genera tor k the corresponding shadow price is decomposed into the corresponding Hp and UQ OT UQmax Components and added to the respective colu
103. othing technique in place of the constrained cost variable CCV approach for handling piece wise linear costs The PDIPM in particular is significantly faster for large systems than any previ ous MATPOWER AC OPF solver including MINOPF When TSPOPF is installed the PDIPM solver becomes the default optimal power flow solver for MATPOWER Additional options for TSPOPF can be set using mpoption see help mpoption for details Builds are available for Linux 32 bit 64 bit Mac OS X PPC Intel 32 bit Intel 64 bit and Windows 32 bit 64 bit at http www pserc cornell edu tspopf 113 References 1 GNU General Public License Online Available http www gnu org 2 10 111 LL licenses 1 2 R D Zimmerman C E Murillo S nchez and R J Thomas MATPOWER Steady State Operations Planning and Analysis Tools for Power Systems Re search and Education Power Systems IEEE Transactions on vol 26 no 1 pp 12 19 Feb 2011 1 3 F Milano An Open Source Power System Analysis Toolbox Power Systems IEEE Transactions on vol 20 no 3 pp 1199 1206 Aug 2005 W F Tinney and C E Hart Power Flow Solution by Newton s Method IEEE Transactions on Power Apparatus and Systems vol PAS 86 no 11 pp 1449 1460 November 1967 4 1 B Stott and O Alsac Fast Decoupled Load Flow IEEE Transactions on Power Apparatus and Systems vol PAS 93 no 3 pp 859 869 May 1974 4 1
104. ow case9 with reactive power costs IEEE 14 bus case 30 bus case based on IEEE 30 bus case case30 with piecewise linear costs case30 with reactive power costs 39 bus New England case IEEE 57 bus case IEEE 118 bus case IEEE 300 bus case Polish system winter 1999 2000 peak Polish system summer 2004 peak Polish system summer 2004 off peak Polish system winter 2003 04 off peak Polish system winter 2003 04 evening peak Polish system winter 2007 08 evening peak Polish system summer 2008 morning peak Polish system plus winter 2007 08 evening peak 97 D 4 Automated Test Suite Table D 16 Automated Test Utility Functions soln9_dcopf mat soln9_dcpf mat soln9_opf_ang mat soln9_opf_extras1 mat soln9_opf_Plim mat soln9_opf_PQcap mat soln9_opf mat soln9_pf mat t_auction_case m t_case_ext m t_case_int m t_case9_dcline m t_case9_opf m t_case9_opfv2 m t_case9_pf m t_case9_pfv2 m t_case30_userfcns m name description t t_begin begin running tests t_end finish running tests and print statistics t_is tests if two matrices are identical to with a specified tolerance t_ok tests if a condition is true t_run_tests run a series of tests t_skip skips a number of tests with explanatory message Table D 17 Test Data name description solution data DC OPF of t_case9_opf solution data DC power flow of t_case9_pf solution data AC OPF of t_case9_opfv2 w only branch angle difference limits gen PQ capabil
105. power injec tions Ipys complex bus current injections Spy complex bus power injections and F f refers to branch flows either If or Sf depending on the inputs The second derivatives are all actually partial derivatives of the product of a first derivative matrix and a vector X name cplex_options gurobi_options ipopt_options mips mips6 mipsver mosek_options mp_1p mp qp qps matpower qps bpmpd qps cplex qps gurobi qps ipopt qps mips apsmips6 qps_mosek qps_ot Table D 12 NLP LP amp QP Solver Functions description default options for CPLEX solver default options for Gurobi solver default options for IPOPT solver MATLAB Interior Point Solver primal dual interior point solver for NLP MATLAB Interior Point Solver primal dual interior point solver for NLP4 prints version information for MIPS default options for MOSEK solver old wrapper function for MATPOWER s LP solvers old wrapper function for MATPOWER s QP solvers Quadratic Program Solver for MATPOWER wrapper function provides a common QP solver interface for various QP LP solvers common QP solver interface to BPMPD_MEX common QP solver interface to CPLEX cplexlp and cplexqp common QP solver interface to Gurobi common QP solver interface to IPOPT based solver common QP solver interface to MIPS based solver common QP solver interface to MIPS based solver common QP solver interface to MOSEK mosekopt common QP
106. re Deprecated Will be removed in a subsequent version 108 Appendix G Optional Packages There are a number of optional packages not included in the MATPOWER distribu tion that MATPOWER can utilize if they are installed in your MATLAB path Each of them is based on one or more MEX files pre compiled for various platforms some distributed by PSERC others available from third parties and each with their own terms of use G l BPMPD MEX MEX interface for BPMPD BPMPD_MEX 14 15 is a MATLAB MEX interface to BPMPD an interior point solver for quadratic programming developed by Csaba M sz ros at the MTA SZ TAKI Computer and Automation Research Institute Hungarian Academy of Sci ences Budapest Hungary It can be used by MATPOWER s DC and LP based OPF solvers and it improves the robustness of MINOPF It is also useful outside of MAT POWER as a general purpose QP LP solver This MEX interface for BPMPD was coded by Carlos E Murillo Sanchez while he was at Cornell University It does not provide all of the functionality of BPMPD however In particular the stand alone BPMPD program is designed to read and write results and data from MPS and QPS format files but this MEX version does not implement reading data from these files into MATLAB The current version of the MEX interface is based on version 2 21 of the BPMPD solver implemented in Fortran Builds are available for Linux 32 bit Mac OS X PPC Intel 32 bit and
107. re 6 1 this allows the same code to be used with both the AC OPF where x includes Vm and Q and the DC OPF where it does not This code is also independent of any 6Tt is perfectly legitimate to register more than one callback per stage such as when enabling multiple independent OPF extensions In this case the callbacks are executed in the order they were registered with add_userfcn E g when the second and subsequent formulation callbacks are invoked the om object will reflect any modifications performed by earlier formulation callbacks AY additional variables that may have been added by MATPOWER e g y variables from MATPOWER s CCV handling of piece wise linear costs or by the user via previous formulation callbacks MATPOWER will place the constraint matrix blocks in the appropriate place when it constructs the overall A matrix at run time This is an im portant feature that enables independently developed MATPOWER OPF extensions to work together Va vm Pg Qg y R Seen Y NI O AA xa Vs v Vs Va Pg y R Figure 6 1 Adding Constraints Across Subsets of Variables 48 function om userfcn_reserves_formulation om args hh initialize some things define_constants mpc get_mpc om r mpc reserves ng size mpc gen 1 hh number of on line gens hh Variable bounds Rmin zeros ng 1 hh bound below by O Rmax r qty hh bound above by stated max reserve qty k find mpc gen RAMP_10 gt O
108. results runopf casedata mpopt fname results runopf casedata mpopt fname solvedcase results success runopf Alternatively for compatibility with previous versions of MATPOWER some of the results can be returned as individual output arguments baseMVA bus gen gencost branch f success et runopf Example results runopf case30 See also RUNDCOPF RUNUOPF 15 3 Modeling MATPOWER employs all of the standard steady state models typically used for power flow analysis The AC models are described first then the simplified DC models In ternally the magnitudes of all values are expressed in per unit and angles of complex quantities are expressed in radians Internally all off line generators and branches are removed before forming the models used to solve the power flow or optimal power flow problem All buses are numbered consecutively beginning at 1 and generators are reordered by bus number Conversions to and from this internal indexing is done by the functions ext2int and int2ext T he notation in this section as well as Sec tions 4 and 5 is based on this internal numbering with all generators and branches assumed to be in service Due to the strengths of the MATLAB programming lan guage in handling matrices and vectors the models and equations are presented here in matrix and vector form 3 1 Data Formats The data files used by MATPOWER are MATLAB M files or MAT files which define
109. rgs value supplied when the callback was registered via add_userfcn Output is the presumably updated mpc This is typically used to reorder any input arguments that may be needed in internal ordering by the formulation stage The example shows how e2i_field can also be used with a case struct that has already been converted to internal indexing to convert other data structures by passing in 2 or 3 extra parameters in addition to the case struct In this case it automatically converts the input data in the qty cost and zones fields of mpc reserves to be consistent with the internal generator ordering where off line generators have been eliminated and the on line generators are sorted in order of increasing bus number Notice that it is the second dimension columns of mpc reserves zones that is being re ordered See the on line help for e2i_ field and e2i_data for more details on what all they can do 46 function mpc userfcn_reserves_ext2int mpc args mpc e2i_field mpc reserves qty gen mpc e2i_field mpc reserves cost gen mpc e2i_field mpc 1 reserves zones gen 2 This stage is also a good place to check the consistency of any additional input data required by the extension and throw an error if something is missing or not as expected 6 2 2 formulation Callback This stage is called from opf after the OPF Model om object has been initialized with the standard OPF formulation but be
110. ristic It does not guarantee that the least cost commitment of generators will be found It is also rather computationally expensive for larger systems and was implemented as a simple way to allow an OPF based smart market such as described in Appendix F the option to reject expensive offers while respecting the minimum generation limits on generators 62 8 Acknowledgments The authors would like to acknowledge contributions from others who have helped make MATPOWER what it is today First we would like to acknowledge the input and support of Bob Thomas throughout the development of MATPOWER Thanks to Chris DeMarco one of our PSERC associates at the University of Wisconsin for the technique for building the Jacobian matrix Our appreciation to Bruce Wollenberg for all of his suggestions for improvements to version 1 The enhanced output func tionality in version 2 0 is primarily due to his input Thanks also to Andrew Ward for code which helped us verify and test the ability of the OPF to optimize reactive power costs Thanks to Alberto Borghetti for contributing code for the Gauss Seidel power flow solver and to Mu Lin for contributions related to power flow reactive power limits Real power line limits were suggested by Pan Wei Thanks to Roman Korab for data for the Polish system Some state estimation code was contributed by James S Thorp and Rui Bo contributed additional code for state estimation and continuation power
111. rmat There are two versions of the MATPOWER case file format MATPOWER versions 3 0 0 and earlier used the version 1 format internally Subsequent versions of MATPOWER have used the version 2 format described below though version 1 files are still han dled and converted automatically by the loadcase and savecase functions In the version 2 format the input data for MATPOWER are specified in a set of data matrices packaged as the fields of a MATLAB struct referred to as a MAT POWER case struct and conventionally denoted by the variable mpc This struct is typically defined in a case file either a function M file whose return value is the mpc struct or a MAT file that defines a variable named mpc when loaded The fields of this struct are baseMVA bus branch gen and optionally gencost The baseMVA field is a scalar and the rest are matrices Each row in the data matrices corresponds to a single bus branch or generator and the columns are similar to the columns in the standard IEEE and PTI formats The mpc struct also has a version field whose value is a string set to the current MATPOWER case version currently 2 by default The version 1 case format defines the data matrices as individual variables rather than fields of a struct and some do not include all of the columns defined in version 2 Numerous examples can be found in the case files listed in Table D 15 in Ap pendix D The case files created by savecase use a tab d
112. rves where the reserve requirements are defined as a set of n fixed zonal MW quantities Let Z be the set of generators in zone k and R be the MW reserve requirement for zone k A new set of variables r are introduced representing the reserves provided by each generator The value r for generator 2 must be non negative and is limited above by a user provided upper bound r e g a reserve offer quantity as well as the physical ramp rate Aj Er Soa Ah OSH Le 6 2 If the vector c contains the marginal cost of reserves for each generator the user defined cost term from 5 21 is simply falz z c r 6 3 There are two additional sets of constraints needed The first ensures that for each generator the total amount of energy plus reserve provided does not exceed the capacity of the unit p r lt q Sd ste 6 4 The second requires that the sum of the reserve allocated within each zone k meets the stated requirements y tl Wea 6 5 1ELk Table 6 1 describes some of the variables and names that are used in the example callback function listings in the sections below 6 2 1 ext2int Callback Before doing any simulation of a case MATPOWER performs some data conversion on the case struct in order to achieve a consistent internal structure by calling the following mpc ext2int mpc 45 Table 6 1 Names Used by Implementation of OPF with Reserves name description mpc MATPOWER Case struct rese
113. rves additional field in mpc containing input parameters for zonal reserves in the following sub fields cost ng X 1 vector of reserve costs c from 6 3 qty Ng X 1 vector of reserve quantity upper bounds ith element is i zones Nrz X Ng Matrix of reserve zone definitions y J 1 if gen j belongs to reserve zone k j Zz di O otherwise j Zz req Mp2 X 1 vector of zonal reserve requirements k element is Ry from 6 5 om OPF model object already includes standard OPF setup results OPF results struct superset of mpc with additional fields for output data ng Nng number of generators R name for new reserve variable block it element is r Pg_plus_R name for new capacity limit constraint set 6 4 Rreq name for new reserve requirement constraint set 6 5 All isolated buses out of service generators and branches are removed along with any generators or branches connected to isolated buses The buses are renumbered consecutively beginning at 1 and the in service generators are sorted by increasing bus number All of the related indexing information and the original data matrices are stored in an order field in the case struct to be used later by int2ext to perform the reverse conversions when the simulation is complete The first stage callback is invoked from within the ext2int function immediately after the case data has been converted Inputs are a MATPOWER case struct mpc freshly converted to internal indexing and any optional a
114. s e MATPOWER t test scripts for MATPOWER e optional sub directories of MATPOWER extras additional function ality and contributed code see Appendix E for details Step 4 At the MATLAB prompt type test_matpower to run the test suite and verify that MATPOWER is properly installed and functioning The result should resemble the following possibly including extra tests depending on the availablility of optional packages solvers and extras gt gt test_matpower t_loadcase t_ext2int2ext t_jacobian t_hessian 180 of 288 skipped t_opf_mips t_opf_mips_sc t_opf_dc_mips t_opf_dc_mips_sc ok t_opf_dc_ot t_opf_userfcns t_runopf_w_res t_dcline t_makePTDF t_makeLODF t_total_load t_scale_load All tests successful 1588 passed 180 skipped of 1768 Elapsed time 6 60 seconds 2 3 Running a Simulation The primary functionality of MATPOWER is to solve power flow and optimal power flow OPF problems This involves 1 preparing the input data defining the all of 10 the relevant power system parameters 2 invoking the function to run the simulation and 3 viewing and accessing the results that are printed to the screen and or saved in output data structures or files 2 3 1 Preparing Case Input Data The input data for the case to be simulated are specified in a set of data matrices packaged as the fields of a MATLAB struct referred to as a MATPOWER case struct and conventionally denoted by the v
115. s the Hessian information must provided by the hess_fcn function and it need not be computed in f_fcn 69 Table A 2 Output Arguments for mips name description x solution vector f final objective function value exitflag exit flag 1 first order optimality conditions satisfied 0 maximum number of iterations reached 1 numerically failed output output struct with fields iterations number of iterations performed hist struct array with trajectories of the following feascond gradcond compcond costcond gamma stepsize obj alphap alphad message exit message lambda struct containing the Langrange and Kuhn Tucker multipliers on the con straints with fields eqnonlin nonlinear equality constraints ineqnonlin nonlinear inequality constraints mu_1 lower left hand limit on linear constraints mu_u upper right hand limit on linear constraints lower lower bound on optimization variables upper upper bound on optimization variables The user defined functions for evaluating the objective function constraints and Hessian are identical to those required by fmincon with one exception described below for the Hessian evaluation function Specifically f_fcn should return f as the scalar objective function value f x df as an n x 1 vector equal to Vf and unless gh_fcn is provided and the Hessian is computed by hess_fcn d2f as an n x n matrix equal to the Hessian of Similarly the constraint evaluation function gh_fcn must retur
116. solver interface to MATLAB Opt Toolbox s quadprog linprog Deprecated Will be removed in a subsequent version T For MATLAB 6 x avoids using handles to anonymous functions t Requires the installation of an optional package See Appendix G for details on the corresponding package 95 name makeB makeBdc Table D 13 Matrix Building Functions description forms the fast decoupled power flow matrices B and B forms the system matrices Bus and By and vectors Py shit and Phus shitt for the DC power flow model makeJac makeLODF makePTDF makeSbus makeYbus name bustypes compare_case define_constants fairmax hasPQcap have_fcn idx_area idx_brch idx_bus idx_cost idx_dcline idx_gen isload load2disp mpver modcost poly2pwl polycost pqcost scale_load total_load forms the power flow Jacobian matrix forms the line outage distribution factor matrix forms the DC PTDF matrix for a given choice of slack forms the vector of complex bus power injections forms the complex bus and branch admittance matrices Ypus Yf and Y Table D 14 Utility Functions description creates vectors of bus indices for reference bus PV buses PQ buses prints summary of differences between two MATPOWER cases convenience script defines constants for named column indices to data matrices calls idx_bus idx_brch idx_gen and idx_cost same as MATLAB s max function except it breaks ties randomly checks for generator
117. source IPOPT solver for solving both AC and DC OPFs based on the Matlab MEX interface to IPOPT It also includes the option to use CPLEX or MOSEK Available from https projects coin or org Ipopt 10See https projects coin or org Ipopt wiki MatlabInterface See http www ibm com software integration optimization cplex optimizer 12See http www mosek com 38 for DC OPFs MATPOWER 4 1 added the option to use KNITRO 23 for AC OPFs and the Gurobi Optimizer for DC OPFs See Appendix G for more details on these optional packages Beginnning with version 4 MATPOWER also includes its own primal dual interior point method implemented in pure MATLAB code derived from the MEX imple mentation of the algorithms described in 12 This solver is called MIPS MATLAB Interior Point Solver and is described in more detail in Appendix A If no optional packages are installed MIPS will be used by default for both the AC OPF and as the JP solver used by the DC OPF The AC OPF solver also employs a unique technique for efficiently forming the required Hessians via a few simple matrix operations 18 This solver has application to general nonlinear optimization problems outside of MATPOWER and can be called directly as mips There is also a convenience wrapper function called gps_mips making it trivial to set up and solve LP and QP problems with an interface similar to quadprog from the MATLAB Optimization Toolbox 9 6 runopf
118. sub fields of results var results lin and results cost converted from per unit to per MW where necessary and stored with external indexing for the end user in the chosen fields of the results struct 50 function results userfcn_reserves_int2ext results args convert stuff back to external indexing hh convert all reserve parameters zones costs qty rgens results i2e_field results reserves gty gen results i2e_field results reserves cost gen results i2e_field results reserves zones gen 2 r results reserves ng size results gen 1 hh number of on line gens internal ngO size results order ext gen 1 number of gens external results post processing hh get the results per gen reserves multipliers with internal gen indexing hh and convert from p u to per MW units RO Rl Ru getv results om R R results var val R results baseMVA Rmin Rl results baseMVA Rmax Ru results baseMVA mu_l results var mu 1 R results baseMVA mu_u results var mu u R results baseMVA mu_Pmax results lin mu u Pg_plus_R results baseMVA hh store in results in results struct z zeros ng0 1 results reserves R i2e_data results results reserves Rmin i2e_data results results reserves Rmax i2e_data results results reserves mu l i2e_data results results reserves mu u i2e_data results results reserves mu Pmax i2e_data results results reserves prc 23 for k
119. successive LP relaxed 360 sparse successive LP full 500 MINOPF MINOS based solver 520 fmincon MATLAB Opt Toolbox gt 2 x 540 PDIPM primal dual interior point method 545 SC PDIPM step controlled variant of PDIPM 550 TRALM trust region based augmented Lan grangian method 560 MIPS MATLAB Interior Point Solver pri mal dual interior point method 565 MIPS sc step controlled variant of MIPS 580 Ipopr 600 KNITRO constraint violation tolerance quantity to limit for branch flow constraints 0 apparent power flow limit in MVA 1 active power flow limit in MW 2 current magnitude limit in MVA at 1 p u voltage ignore angle difference limits for branches 0 include angle difference limits if specified 1 ignore angle difference limits even if specified DC optimal power flow algorithm 0 choose default solver based on availability in the following order 700 600 500 100 200 100 BPMPD 200 MIPS MATLAB Interior Point Solver pri mal dual interior point method 250 MIPS sc step controlled variant of MIPS 300 MATLAB Opt Toolbox quadprog linprog 400 IpopT 500 CPLEX 600 MOSEK 700 Gurobi T Requires the installation of an optional package See Appendix G for details on the corresponding package 34 idx 31 32 33 34 30 36 37 38 39 40 41 42 52 t Overrides individual flags Table C 3 Power Flow and OPF
120. tal At the time of writing none of the optional MEX based MATPOWER packages have been built for Octave 2 2 Installation Installation and use of MATPOWER requires familiarity with the basic operation of MATLAB including setting up your MATLAB path Step 1 Follow the download instructions on the MATPOWER home page You should end up with a file named matpowerXXX zip where XXX depends on the version of MATPOWER Step 2 Unzip the downloaded file Move the resulting matpowerXXX directory to the location of your choice These files should not need to be modified so it is recommended that they be kept separate from your own code We will use MATPOWER to denote the path to this directory MATLAB is available from The MathWorks Inc http www mathworks com Though some MATPOWER functionality may work in earlier versions of MATLAB 6 it is not supported MATPOWER 3 2 required MATLAB 6 MATPOWER 3 0 required MATLAB 5 and MATPOWER 2 0 and earlier required only MATLAB 4 MATLAB is a registered trademark of The MathWorks Inc GNU Octave is free software available online at http www gnu org software octave MATPOWER 4 1 may work on earlier versions of Octave but has not been tested on versions prior to 3 2 3 http www mathworks com support sysreq previous_releases html http www pserc cornell edu matpower Step 3 Add the following directories to your MATLAB path e MATPOWER core MATPOWER function
121. ter struct created by build_cost_params returns the idx struct for vars lin nln constraints costs returns the MATPOWER case struct returns the number of variables constraints or cost rows returns the value of a field of the object returns the initial values and bounds for optimimization vector builds and returns the full set of linear constraints A l u constructor for the opf_model class saves or returns values of user data stored in the model For all or alternatively only for a named subset name copf_solver dcopf_solver fmincopf_solver fmincopf6_solver ipoptop f_solver ktropf_solver lpopf_solver mipsopf_solver mips6opf_solver mopf_solver tspopf_solver Table D 8 OPF Solver Functions description sets up and solves OPF problem using constr MATLAB Opt Tbx 1 x 2 x sets up and solves DC OPF problem sets up and solves OPF problem using fmincon MATLAB Opt Toolbox sets up and solves OPF problem using fmincon MATLAB Opt Toolbox sets up and solves OPF problem using IPopPT sets up and solves OPF problem using KNITRO sets up and solves OPF problem using successive LP based method sets up and solves OPF problem using MIPS sets up and solves OPF problem using MIPS1 sets up and solves OPF problem using MINOPF sets up and solves OPF problem using PDIPM SC PDIPM or TRALM Deprecated Will be removed in a subsequent version T For MATLAB 6 x avoids using handles to anonymous functions t Req
122. the set indices of interfaces whose flow limits are to be enforced The data for the problem is specified in an additional if field in the MATPOWER case struct mpc This field is itself a struct with two sub fields map and lims used for input data and two others P and mu used for output data The format of this data is described in detail in Tables 6 4 and 6 5 See help toggle_iflims for more information Examples of using this extension and a case file defining the necessary input data for it can be found in t_opf_userfcns and t_case30_userfcns respectively Note that while this extension can be used for AC OPF problems the actual AC interface flows will not necessarily be limited to the specified values since it is a DC flow approximation that is used for the constraint 18Tf d 1 the definitions of the positive flow direction for the branch and the interface are the same If d 1 they are opposite IS Table 6 4 Input Data Structures for Interface Flow Limits name description mpc MATPOWER Case struct if additional field in mpc containing input parameters for interface flow limits in the following sub fields map Nx Xx2 matrix defining the interfaces where ng is the number branches that belong to interface k The nz branches of interface k are defined by nj rows in the matrix where the first column in each is equal to k and the second is equal to the corresponding branch index 7 multiplied by di to indicate the d
123. tion tolerance on x termination tolerance on f maximum number of iterations 0 use solver s default value termination tolerance on gradient termination tolerance on x min step size maximum number of iterations maximum number of restarts algorithm used by fmincon in MATLAB Opt Toolbox gt 4 1 active set 2 interior point default bfgs Hessian approximation 3 interior point lbfgs Hessian approximation 4 interior point exact user supplied Hessian 5 interior point Hessian via finite differences t For OPF_ALG option set to 300 520 or 600 constr fmincon and KNITRO solvers only For OPF_ALG option set to 320 340 or 360 successive LP based solvers only S For OPF_ALG option set to 520 fmincon solver only 86 idx 95 96 97 name CPLEX_LPMETHOD CPLEX_QPMETHOD CPLEX_OPT Table C 6 OPF Options for CPLEX default 0 0 t For OPF_ALG_DC option set to 500 only on the corresponding package See help cplex options for details idx 121 122 123 124 name GRB_METHOD GRB_TIMELIMIT GRB_THREADS GRB_OPT Table default 0 OO 0 auto 0 description algorithm used by CPLEX for LP problems 0 automatic let CPLEX choose 1 primal simplex 2 dual simplex 3 network simplex 4 barrier 5 sifting 6 concurrent dual barrier and primal algorithm used by CPLEX for QP problems 0 automatic let CPLEX choose 1 pr
124. tions for handling bi directional lines The first is to use a constant loss model by setting l4 0 The second option is to create two separate but identical lines oriented in opposite directions In this case it is important that the lower limit on the flow and the constant term of the loss model lo be set to zero to ensure that only one of the two lines has non zero flow at a time Upper and lower bounds on the value of the flow can be specified for each DC line along with an optional operating cost It is also assumed that the terminals of the line have a range of reactive power capability that can be used to maintain a voltage setpoint Just as with a normal generator the voltage setpoint is only used for simple power flow the OPF dispatches the voltage anywhere between the lower and upper bounds specified for the bus Similarly in a simple power flow the input value for ps and the corresponding value for p computed from 6 8 are used to specify the flow in the line Most of the data for DC lines is stored in a dcline field in the MATPOWER case struct mpc This field is a matrix similar to the branch matrix where each row corresponds to a particular DC line The columns of the matrix are defined in Table B 5 and include connection bus indices line status flows terminal reactive injections voltage setpoints limits on power flow and VAr injections and loss pa rameters Also similar to the branch or gen matrices some of the
125. tiplier on reactive power mismatch results bus MU_VMAX Kuhn Tucker multiplier on upper voltage limit results bus MU_VMIN Kuhn Tucker multiplier on lower voltage limit results gen MU_PMAX Kuhn Tucker multiplier on upper P limit results gen MU_PMIN Kuhn Tucker multiplier on lower P limit results gen MU_QMAX Kuhn Tucker multiplier on upper limit results gen MU_QMIN Kuhn Tucker multiplier on lower Qg limit branch MU_SF branch MU_ST Kuhn Tucker multiplier on flow limit at from bus Kuhn Tucker multiplier on flow limit at to bus shadow prices of constraints results results results mu results g optional constraint values results dg optional constraint 1st derivatives results raw raw solver output in form returned by MINOS and more results var val final value of optimization variables by named subset results var mu shadow prices on variable bounds by named subset results nln shadow prices on nonlinear constraints by named subset results lin shadow prices on linear constraints by named subset results cost final value of user defined costs by named subset T See help for opf model for more details See help for opf for more details criteria and other behavior of the individual solvers See Appendix C or the mpoption help for details As with runpf the output printed to the screen can be controlled by the options in Table 4 3 but there are additional output options for the OP
126. uires the installation of an optional package See Appendix G for details on the corresponding package 93 name fun _cop grad_copf LPconstr LPeqslvr LPrelax LPsetup makeAang makeApq makeAvl makeAy opf_args opf_setup opf_execute opf_consfcn opf_costfcn opf hessfcn totcost update _mupq Table D 9 Other OPF Functions description evaluates AC OPF objective function and nonlinear constraints evaluates gradients of AC OPF objective function and nonlinear constraints successive LP based optimizer calling conventions similar to constr runs Newton power flow used by lpopf_solver solves LP problem with constraint relaxation used by 1popf_solver solves LP problem using specified method used by lpopf_solver forms linear constraints for branch angle difference limits forms linear constraints for generator PQ capability curves forms linear constraints for dispatchable load constant power factor forms linear constraints for piecewise linear generator costs CCV input argument handling for opf constructs an OPF model object from a MATPOWER case executes the OPF specified by an OPF model object evaluates function and gradients for AC OPF nonlinear constraints evaluates function gradients and Hessian for AC OPF objective function evaluates the Hessian of the Lagrangian for AC OPF computes the total cost of generation as a function of generator output updates generator limit prices based on the shadow prices on
127. ve it can be used for simple power flow problems as well in which the case the OPF only formulation callback is skipped 59 Ploss lo lips Figure 6 2 DC Line Model from to bus bus DF pe 1 li pp lo Figure 6 3 Equivalent Dummy Generators A DC line in MATPOWER is modeled as two linked dummy generators as shown in Figures 6 2 and 6 3 one with negative capacity extracting real power from the network at the from end of the line and another with positive capacity injecting power into the network at the to end These dummy generators are added by the ext2int callback and removed by the int2ext callback The real power flow pr on the DC line at the from end is defined to be equal to the negative of the injection of corresponding dummy generator The flow at the to end p is defined to be equal to the injection of the corresponding generator MATPOWER links the values of py and p using the following relationship which includes a linear approximation of the real power loss in the line Pt Pf Ploss pp lo lips 1 l1 ps lo 6 8 Here the linear coefficient l4 is assumed to be a small lt lt 1 positive number Ob viously this is not applicable for bi directional lines where the flow could go either 60 direction resulting in decreasing losses for increasing flow in the to from di rection There are currently two op
128. y constraints g and h respectively The calling syntax for this function is Lxx hess_fcn x lam cost_mult where A lam eqnonlin u lam ineqnonlin and cost_mult is a parameter used to scale the objective function Optional options structure with the following fields all of which are also optional default values shown in parentheses verbose 0 controls level of progress output displayed 0 print no progress info 1 print a little progress info 2 print a lot progress info 3 print all progress info feastol le 6 termination tolerance for feasibility condition gradtol le 6 termination tolerance for gradient condition comptol 1e 6 termination tolerance for complementarity condition costtol le 6 termination tolerance for cost condition max_it 150 maximum number of iterations step_control 0 set to 1 to enable step size control max_red 20 max number of step size reductions if step control is on cost_mult 1 cost multiplier used to scale the objective function for im proved conditioning Note This value is also passed as the 3 argument to the Hessian evaluation function so that it can appropriately scale the objective function term in the Hessian of the Lagrangian Alternative single argument input struct with fields corresponding to arguments above t All inputs are optional except f_fcn and x0 If gh_fcn is provided then hess_fcn is also required Specifically if there are nonlinear constraint
129. y rating TAP 9 transformer off nominal turns ratio taps at from bus impedance at to bus i e if r x 0 tap H SHIFT 10 transformer phase shift angle degrees positive gt delay BR_STATUS 11 initial branch status 1 in service 0 out of service ANGMIN 12 minimum angle difference 0f 0 degrees ANGMAX 13 maximum angle difference 0f 0 degrees PF 14 real power injected at from bus end MW QF 15 reactive power injected at from bus end MVAr PT 16 real power injected at to bus end MW aT 17 reactive power injected at to bus end MVAr MU_SF 18 Kuhn Tucker multiplier on MVA limit at from bus u MVA MU_ST 19 Kuhn Tucker multiplier on MVA limit at to bus u MVA MU_ANGMIN 20 Kuhn Tucker multiplier lower angle difference limit u degree MU_ANGMAX 21 Kuhn Tucker multiplier upper angle difference limit u degree Not included in version 1 case format t Included in power flow and OPF output ignored on input Included in OPF output typically not included or ignored in input matrix Here we assume the objective function has units u 19 name MODEL STARTUP SHUTDOWN NCOST COST Table B 4 Generator Cost Data mpc gencost column 1 e CW N description cost model 1 piecewise linear 2 polynomial startup cost in US dollars shutdown cost in US dollars number of cost coefficients for polynomial cost function
Download Pdf Manuals
Related Search
Related Contents
Epson EB-525W Confession d`un Voleur - Ploug USER MANUAL ダウンロード(240KB) KURZWEIL K 000 TRUMPET REFERENCE Vacuum Tube Bedienerführung 3257 cocción automática Zugangskonstrollsystem Copyright © All rights reserved.
Failed to retrieve file