Home
Matpower 4.0 User`s Manual - Power Systems Engineering
Contents
1. 86 D 3 Input Output Functions 2 4 2555665 de bee eee 87 D 4 Data Conversion Functions 87 D 5 Power Flow Functions e 87 D 6 OPF and Wrapper Functions 0000 ee 87 D 7 OPF Model Object 2 44648 see cs e eee 88 D 8 OPF Solver Functions o 88 D 9 Other OPF Functions 89 D 10 OPF User Callback Functions 0 0 0 a been 89 D 11 Power Flow Derivative Functions 00 0080 0004 90 D 12 NLP LP amp QP Solver Functions 6 645442454 Heo 24s 90 D 13 Matrix Building Functions lt lt eras wae a APE a 91 Ionia Utility Puncthions 4 2d Soe ehh BREEDER EV EDS EERE ES 91 DIS Example Cases sr cidad A BOSE RES 92 D 16 Automated Test Utility Functions a oe oo a 93 Dalt Test Data coi aaa aa a A 93 D 18 Miscellaneous MATPOWER TestS 94 D 19 MATPOWER OPF Tests 0 A RA 95 Pol Auction Types lt rc Role palia A HEHE RE RS 98 F 2 Generator Ceres o gos cce ow p EE ee eo ae a e eS 100 F Load Brde ea a a o ds ea e oe BG eos Em das a 100 Bea Generator Sales o a 2 6 ee ee g e e nni p E we Bw be Se ie 103 F 5 Load Purchases 6 56864 ear e heeded ee e i 103 F 6 Smartmarket Files and Functions 103 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
2. 37 Adding Constraints Across Subsets of Variables 49 of Tables Power Flow Restlts ose aa A OARS E a 26 Power Flow Options 222 24 22424 R446 400424 be odo eK 26 Power Flow Output Options os s c errar e RRR RA 27 Optimal Power Flow Results 2 2 454446 ra a 40 Optimal Power Flow Options ec roeg swo ig a rta de REx 42 OPP Output Options s 2445444444 G4 S45 a 43 Names Used by Implementation of OPF with Reserves 47 Results for User Defined Variables Constraints and Costs 51 Callback Functions oao a ee ee ee ee eS 58 Input Arguments for mips ee eee eee 62 Output Arguments for mips ccoo a 63 Bus Data ARI 74 Generator Data mpe g n ooo ee ee ee ees 75 Branch Data ape brane e s cue pee ee we ae ee E 76 Generator Cost Data mpc gencost oo T7 Power Flow Options secca saa ana a k a a a a See 79 General OPF Options o aa seoa c sadom na d oa pasaat 80 Power Flow and OPF Output Options aoaaa 81 OPF Options for MIPS and TSPOPE 2 lt 4 5 5 ee Rk eee 82 OPF Options for fmincon constr and successive LP Solvers 82 OPF Oplions for OPLEX ocios hb es BR Ree we Pe x 83 OPF Options for MOSER os u God etsea ce e eacee e POSE SS 84 OPF Options for IPOPT oc ccc cecadrentdeni dirani 84 OPF Options for MINOPF gt lt a sd se ea Oe we RE e oie EES 85 MATPOWER Documentation Files 0 o a aa 000 eae 86 D 2 Top Level Simulation Functions
3. 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 G3 108 12 13 iar 14 15 16 17 18 19 20 21 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 3 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 BPMPD_MEX Online Available http www pserc cornell edu bpmpd 5 5 G 1 C M sz ros The Efficient Implementation of Interior Point Methods for Linear Programming and their Applications Ph D thesis E tv s Lor nd University of Sciences Budapest Hungary 1996 5 5 G 1 MINOPF Online Available http www pserc cornell edu minopf 5 5 F G 2 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 2 R D Zimmerman AC Power Flows Generalized OPF Costs and their Deriva
4. default 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 0 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 m ny superbasics limit defaults to 2n 2ng multiple price For OPF_ALG option set to 500 MINOPF only Default values in parenthesis refer to defaults assigned in MEX file if called with option equal to 0 85 Appendix D MATPOWER 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 Docu
5. name description mpc MATPOWER Case struct reserves 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 it element is r zones Nrz X Ng Matrix of reserve zone definitions 1 if gen j belongs to reserve zone k j Zk id O otherwise j Zp req Mz 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 ng number of generators R name for new reserve variable block itt 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
6. 5 33 Lj Lj 1 and zo lt 11 lt lt n and my lt M L lt Mn The basin corresponding to this cost function is formed by the following n constraints on the helper cost variable y y gt milz zj oe Pl 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 This 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 maximum injection of zero Consider the example of a price sensitive load whose marginal benefit function is shown in Figure 5 4 The demand py of this load will be zero for prices above Aj p for prices between A and Ag and p p for prices
7. 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 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 40 and int2ext can be customized via user supplied callback routines to convert data needed by user supplied variables constraints or costs into internal indexing 41 Table 5 2 Optimal Power Flow Options idx name default description 11 OPF_ALG 0 AC optimal power flow algorithm 0 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 solvert 520 fmincon MATLAB Opt Toolbox gt 2 x 540 PDIPM primal dual interior point method 545 SC PDIPM step controlled
8. MATLAB Interior Point Solver primal dual interior point solver for NLP MATLAB Interior Point Solver primal dual interior point solver for NLPY 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 CPLEX cplexlp and cplexqp common QP solver interface to BPMPD_MEX 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 2 common QP solver interface to MATLAB Opt Toolbox s quadprog linprog Deprecated Will be removed in a subsequent version 1 For MATLAB 6 x avoids using handles to anonymous functions Requires optional MATLAB interface to CPLEX available from http www ibm com software integration optimization cplex optimizer t Requires MEX interface to IPOPT solver available from https projects coin or org Ipopt Requires optional MEX based BPMPD_MEX package available from http www pserc cornell edu bpmpd A Requires optional MATLAB interface to MOSEK available from http www mosek com 90 Table D 13 Matrix Building Functions name description makeB forms the fast decoupled power flow
9. 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 The 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 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 standa
10. available from http www ibm com software integration optimization cplex optimizer A Requires optional MATLAB interface to MOSEK available from http www mosek com 42 idx name 38 OUT_ALL_LIM 39 OUT_V_LIM 40 OUT LINE LIM 41 OUT_PG_LIM 42 OUT_QG_LIM 52 RETURN_RAW_DER Overrides individual flags Table 5 3 OPF Output Options default 1 Ohh description 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 info 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 43 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 functio
11. etc As illustrated in Figure 6 1 this allows the same code to be used with both the AC OPF where x includes Vm and and the DC OPF where it does not This code is also independent of any 13Tt 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 48 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 a bricks aes pays ains bles la eee A AC OPF vo 3 A 0 Aal o A2 DC OPF Va Pg y R Figure 6 1 Adding Constraints Across Subsets of Variables 49 function om hh initialize some things define_constants mpc get_mpc om r mpc reserves ng size mpc gen 1 hh hh Variable bounds Rmin zeros ng 1 hh Rmax r qty hh k find mpc gen RAMP_10
12. interior point exact user supplied Hessian 5 interior point Hessian via finite differences For OPF_ALG option set to 300 or 520 fmincon and constr solvers only t For OPF_ALG option set to 320 340 or 360 successive LP based solvers only For OPF_ALG option set to 520 fmincon solver only 82 Table C 6 OPF Options for CPLEX idx name default description 95 CPLEX_LPMETHOD 0 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 96 CPLEX_QPMETHOD 0 algorithm used by CPLEX for QP problems 0 automatic let CPLEX choose 1 primal simplex 2 dual simplex 3 network simplex 4 barrier 97 CPLEX_OPT 0 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 optional MATLAB interface to CPLEX available from http www ibm com software integration optimization cplex optimizer t See help cplex_options for details 83 idx name 111 MOSEK_LP_ALG Table C 7 OPF Options for MOSEK default 0 description solution algorithm used by MOSEK for continuous LP problems 112 MOSEK_MAX_IT 113 MOSEK_GAP_TOL 114 MOSEK_MAX TIME 115 MOSEK_NUM_THREADS 116 MOSEK_OPT 0 automatic let MOSEK choose 1 interior point 4 primal
13. lt options gt inputfile lt outputfile gt 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 Code that implements a smart market auction clearing mech anism based on MATPOWER s optimal power flow solver See Appendix F for details Older state estimation example based on code by James S Thorp 96 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 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
14. 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 f constraints and variables z and can be written in the following form min f x falz z 5 21 subject to g x 0 5 22 h x lt 0 5 23 Tmin x lt Tmax 5 24 isa lt u 5 25 Zan ELE See 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 fu is specified in terms of parameters H C N F k d and m All of the parameters are n x 1 vectors except the symmetric ny X Ny matrix H and the nwu x nz nz matrix N The cost takes the form ie sw Hw C lw 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 7 to the full set of optimization variables NE 5 28 31 u r f 5 29 then a scaled function with a dead zone is applied to each element of u to produce the corresponding element of w Mi fa lui ki u lt ki Mi fa ui ki ui gt ki 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
15. 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 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 3 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 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 Mathematical Programming 106 1 2557 2006 G 5 109
16. 12 12 12 gt gt CO ans 50 50 50 51 52 52 gt gt cb ans 10 10 10 gt gt cb ans 51 54 55 P qty 0000 0000 0000 0000 0000 0000 P prc 0000 2406 3368 0242 1697 9832 P qty 0000 0000 0000 P pre 8207 0312 6208 23 24 24 24 24 24 50 50 50 51 52 52 10 10 51 54 55 3156 0000 0000 0000 0000 0000 0000 2406 3368 0242 1697 9832 0000 0000 8207 0312 6208 50 50 50 51 52 52 10 51 54 55 TO OO O O 0000 2406 3368 0242 1697 9832 0000 8207 0312 6208 102 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 2 10 0 54 03 3 20 0 55 62 F 3 Smartmarket Files and Functions Table F 6 Smartmarket Files and Functions name extras smartmarket auction case2off idx_disp off2case pricelimits printmkt runmarket runmkt smartmkt SM_CHANGES description clears set of bids and offers based on pricing rules and OPF results generates quantity price offers and bids from gen and gencost named column index def
17. 3 User defined Variables Sf Stn Meese oe sc ee e eR EE ERS EE eR EH 5 4 1 Piecewise Linear Costs ee 54 2 Dispatchable Loads 2 2425 ee ee Ge Re e 3 5 4 3 Generator Capability Curves 5 4 4 Branch Angle Difference Limits E EEE DO IOPE br a as e a A RAR A Extending the OPF Bl Diject Special ce ac coes AAA 62 Callback Functions cosse 204024 sara a eo e haa a 6 2 1 extaimt Callback ene ca RR Oe a we 622 formiltation Callback cesos Gale aoe Sm od ew 62 3 antvext Callback ed neadi sa ED ER Oa 02A printpf Capac eee eed Ga Ge PEE RG HES RA 625 savecase Callback lt s p anra c ha a rae aor a ee a 63 Registerme the Callbacks s e se d ocem wb da a wice Date RRS OA DUMA 222 a4 bet a i an HSER i p oha i SE haw SS ERE 7 Unit De commitment Algorithm 8 Acknowledgments Appendix A MIPS MATLAB Interior Point Solver Al al ses ees eale ow be we Ee ole E 2 NO oc ee ORR EER SEER o e a ED eea A A AS Quadratic Programming Solver o e coce seses seraa A 4 Primal Dual Interior Point Algorithm AAT No aa p E AEA we wR EN a E h A 4 2 Problem Formulation and Lagrangian 2 A 4 3 First Order Optimality Conditions A 4 4 Newton Step aoaaa 2000008 Appendix B Data File Format Appendix C MATPOWER Options 59 60 61 64 65 67 68 68 69 70 70 73 78 Appendix D MATPOWER Files and Functions 86 D
18. Each of these is also a struct with matrix fields qty and prc where the element in the i 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 anism is used to shut down generators if doing so results in a smaller overall system cost see Section 7 20See http www pserc cornell edu powerweb 97 In step 3 the OPF solution is used to determine for each offer bid block how much was cleared and
19. 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 containing 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 v
20. 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 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 OPF related to the display of binding constraints that are listed Table 5 3 along with 39 Table 5 1 Optimal Power Flow Results name description results f final objective function value results x final value of optimization variables internal order results om OPF model object results bus LAM_P Lagrange multiplier on real power mismatch results bus LAMQ Lagrange multiplier on reactive power mismatch results bus
21. and reactive injections specified as simple lower and upper bounds on p pmin and Pmax and q dmin and max 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 G q po qu and quee 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 up and Q OT HQmax Components and added to the respective column 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
22. and gh_fcn is recommended so that the gradients 63 and Hessian are only computed when required A l 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 x 2 x 1 24 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 ar x 2 x 1 72 72 1 x 1 72 if nargout gt 1 hh gradient is required df 4 ax x 1 73 x 1 x 2 2 x 1 2 2xax x 2 x 1 72 1 if nargout gt 2 4 Hessian is required d2f 4xrax 3 x 1 72 x 2 1 2 a x 1 x 1 1 2 1 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 x 1 1 f 0 http en wikipedia org wiki Rosenbrock_function 64 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 11 2 T2 3 A 8 subject to tj a jt az 2 lt 0 A 9 citazt a23 10 lt 0 A 10 First create a MATLAB fu
23. 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 There 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 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 eq
24. 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 callback 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 1 shadow price on lower limit of user defined variables results var mu u 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 u shadow price on upper right hand limit of linear constraints results cost final value of user defined costs 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 int2ext with extra argu
25. converted to internal indexing and any optional args 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 ext2int 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 ext2int for more details on what all it can do 47 function mpc userfcn_reserves_ext2int mpc args mpc ext2int mpc reserves qty gen mpc ext2int mpc reserves cost gen mpc ext2int mpc 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
26. data from external to internal indexing converts data 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 name description dcpf implementation of DC power flow solver fdpf implementation of fast decoupled power flow solver gausspf implementation of Gauss Seidel power flow solver newtonpf implementation of Newton method power flow solver pfsoln computes branch flows generator reactive power and real power for slack bus updates bus gen branch matrices with solved values Table D 6 OPF and Wrapper Functions name description opft the main OPF function called by runopf dcopf calls opf with options set to solve DC OPF fmincopf calls opf with options set to use fmincon to solve AC OPF mopf calls opf with options set to use MINOPF to solve AC OPF uopf implements unit decommitment heuristic called by runuopf 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 t Wrapper with same calling conventions as opf Requires optional MEX based MINOPF package available from http www pserc cornel11 edu minopt 87 name opf_model add_constraints add_costs add_vars build_cost_
27. 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 can 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 i
28. equal to the vector ex The corresponding PTDF matrix H can be constructed by first creating the n x na 1 matrix H B Bz 4 9 then inserting a column of zeros at column k Here B y and Bac are obtained from B and Byus 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 Ay by subtracting w from each column equivalent to the following simple matrix multiplication H H 1 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 n LODF matrix L can be con structed as follows where l is the element in row and column j representing the change in flow in branch 3 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 C C 4 11 If hij is the sensitivity of flow in branch 7 with respect to flow in branch j then l can be expressed as ij ao lg 1 hiy a 4 12 i ej MATPOWER includes functions for computing both the DC PTDF matrix and the corresponding LODF matrix for either a si
29. f_fcn x f 2 x gh_fcn Q x gh2 x hess_fcn x lam cost_mult hess2 x lam cost_mult x0 1 1 0 opt struct verbose 2 x f exitflag output lambda mips problem fprintf nf g exitflag dWn f exitflag fprintf nx n fprintf g n x fprintf nlambda ineqnonlin n fprintf g n lambda ineqnonlin gt gt example2 MATLAB Interior Point Solver MIPS Version 1 0 07 Feb 2011 it objective step size feascond gradcond compcond costcond 0 si 0 1 5 5 0 1 5 3250167 1 6875 0 0 894235 0 850653 2 16251 2 7 4708991 0 97413 0 129183 0 00936418 0 117278 0 339269 3 7 0553031 0 10406 O 0 00174933 0 0196518 0 0490616 4 7 0686267 0 034574 O 0 00041301 0 0030084 0 00165402 5 7 0706104 0 0065191 O 1 53531e 05 0 000337971 0 000245844 6 7 0710134 0 00062152 O 1 22094e 07 3 41308e 05 4 99387e 05 7 7 0710623 5 7217e 05 O 9 84878e 10 3 41587e 06 6 05875e 06 8 7 0710673 5 6761e 06 O 9 73397e 12 3 41615e 07 6 15483e 07 Converged f 7 07107 exitflag 1 x 1 58114 2 23607 1 58114 lambda ineqnonlin 0 0 707107 More example problems for mips can be found in t_mips m 66 A 3 Quadratic Programming Solver A convenience wrapper function called qps 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 z Ha ce s A 11 subject to lt Ar lt u
30. gt O mpc userfcn_reserves_formulation om args number of on line gens bound below by 0 bound above by stated max reserve qty gen RAMP_10 lt Rmax Rmax k mpc gen k RAMP_10 hh and ramp rate Rmax Rmax mpc baseMVA 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 per unit cost coefficients 4 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 50 has been completed and the results struct a superset of the original MATPOWER
31. matrices B and B makeBdc forms the system matrices Bpus and By and vectors Py shift and Pous shitt for the DC power flow model makeJac forms the power flow Jacobian matrix makeLODF forms the line outage distribution factor matrix makePTDF forms the DC PTDF matrix for a given choice of slack makeSbus forms the vector of complex bus power injections makeYbus forms the complex bus and branch admittance matrices Ypus Y and Y Table D 14 Utility Functions name description bustypes creates vectors of bus indices for reference bus PV buses PQ buses compare_case define_constants fairmax hasPQcap have_fcn idx_area idx_brch idx_bus idx_cost idx_gen isload load2disp mpver modcost poly2pwl polycost pqcost scale_load total_load 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 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 gen matrix checks if generators are actually dispatchable loads converts fixed loads to dispatchable loads prints
32. 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 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
33. solver based on availability in the following order 540 560 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 IpopT1 500 CPLEX 600 MOSEK t Requires optional MEX based MINOPF package available from http www pserc cornell edu minopf t Requires optional MEX based TSPOPF package available from http www pserc cornell edu tspopf 1 Requires MEX interface to IPOPT solver available from https projects coin or org Ipopt Requires optional MEX based BPMPD_MEX package available from http www pserc cornell edu bpmpd Requires optional MATLAB interface to CPLEX available from http www ibm com software integration optimization cplex optimizer A Requires optional MATLAB interface to MOSEK available from http www mosek com 80 idx 31 32 33 34 35 36 37 38 39 40 41 42 52 Overrides individual flags Table C 3 Power Flow and OPF 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 OrRrROF 1 OrRrRFH description 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
34. solver is chosen according to the value of opt alg See the help for qps_matpower for details Several examples of using qps_matpower to solve LP and QP problems can be found in t_qps matpower m 19For MATLAB 6 x use qps_mips6 67 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 i Lo Ln i we use the following notation for the first derivatives transpose of the gradient OF _ j f f fx a Ox Ja Oz 0x2 Orn A 14 The matrix of second partial derivatives the Hessian of f is ef oy 9 0 0 T Oxy 021 02n xx ai ax 5 Sa A 15 Pf Pf 021 0x1 012 For a vector function F R R of a vector X where F X AX f X mX A 16 the first derivatives form the Jacobian matrix where row 1 is the transpose of the gradient of f OF 0x1 OLn Fx gt AN A 17 ON E Bh 0x1 OLn In these derivations the 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 o Fxx A on Fx A 18 Please note also that A is used
35. system of equations of reduced size E a a S l e pa 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 Ap 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 71 where these scale factors are computed as follows Zm Qp min lt amin 5 a A 46 ia _ Um Qq min lt a E 1 A 47 resulting in the variable updates below X X a AX A 48 Z Z4 a AZ A 49 A agAr A 50 we u aA A 51 The parameter is a constant scalar with a value slightly less than one In MIPS 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 pu ZB ps Ni JEEG A 52 where is a scalar constant between 0 and 1 In MIPS is set to 0 1 72 Appendix B Data File Format 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 t
36. 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 MAT POWER s CPLEX LPMETHOD and CPLEX QPMETHOD options A CPLEX user options 105 function can also be used to override the defaults for any of the many CPLEX pa 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 G 5 IPOPT Interior Point Optimizer IpopT 21 Interior Point OPTimizer 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
37. 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 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 8 Available from https projects coin or org Ipopt See https project
38. to denote a diagonal matrix with vector A on the diagonal and e is a vector of all ones 68 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 H 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 H X Z 0 A 24 Z gt 0 A 25 As the parameter of perturbation y approaches zero this solution to this problem approaches that of the original problem For a given value of y the Lagrangian for this equality constrained problem is PRI 700 ECO BED Y In Zm 4 26 Taking the partial derivatives with respect to each of the variables yields LX Z A u fx t Gx A Hx Up A 27 LY X Z r u p ye Z7 A 28 LY X Z r u G X A 29 LUX Z A HU X 2 A 30 And the Hessian of the Lagrangian with respect to X is given by Lyy X ZA u fxx Gxx A Hxx u A 31 69 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 2 A ft 0 A 32 Z gt 0 A 33 p g
39. 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 16 OPF_VIOLATION 5x 107 constraint violation tolerance 24 OPF_FLOW_LIM 0 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 25 OPF_IGNORE_ANG_LIM 0 ignore angle difference limits for branches 0 include angle difference limits if specified 1 ignore angle difference limits even if specified 26 OPF_ALG_DC 0 DC optimal power flow algorithm 0 choose default solver based on availability in the following order 540 560 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 Ipopr 500 CPLEX 600 MOSEK Requires optional MEX based MINOPF package available from http www pserc cornell edu minopf Requires optional MEX based TSPOPF package available from http www pserc cornell edu tspopf Requires optional MEX based BPMPD_MEX package available from http www pserc cornell edu bpmpd 1 Requires MEX interface to IPOPT solver available from https projects coin or org Ipopt Requires optional MATLAB interface to CPLEX
40. with fields eqnonlin nonlinear equality constraints ineqnonlin nonlinear inequality constraints mu_l 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 mE Similarly the constraint evaluation function gh fcn must return the m x 1 vector of nonlinear equality constraint violations g x the p x 1 vector of nonlinear inequality constraint violations h 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 j column equal to Vh Finally for cases with nonlinear constraints hess_fcn returns the n x n Hessian oe of the Lagrangian function L x 1 0 o f A g x u h x 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
41. 1 Documentation Files lt lt lt a ee ew de bee eee e e ra 86 D2 MATPOWER Functions oso Gee vs as des 86 D 3 Example MATPOWER Cases eee 92 D 4 Automated Test Suite 0 93 Appendix E Extras Directory 96 Appendix F Smart Market Code 97 FA Handling Supply Shortfall s seiss osis siroa ea o e RE 99 F2 Example car ee ed oe KE oS A Be ee 99 F 3 Smartmarket Files and Functions lt 4 64 lt 4a6 4 4 saas 103 Appendix G Optional Packages 104 G 1 BPMPD_MEX MEX interface for BPMPD 104 G 2 MINOPF AC OPF Solver Based on MINOS 104 G 3 TSPOPF Three AC OPF Solvers by H Wang 105 G 4 CPLEX High performance LP and QP Solvers 105 Go IPOPT Interior Point Optimizer 2 62544 46a e eo ees 106 G 6 MOSEK High performance LP and QP Solvers 106 References 108 List 3 1 5 1 5 2 5 3 5 4 5 5 5 6 6 1 List 4 1 4 2 4 3 5 1 5 2 5 3 6 1 6 2 6 3 A 1 A 2 B 1 B 2 B 3 B 4 C 1 C 2 C 4 C 5 C 6 C 7 C 9 D 1 of Figures Branch Model ea AECE Rew ee eR eS 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 2 4 5 6244 eed a e 34 Marginal Benefit or Bid Function aooaa a 36 Total Cost Function for Negative Injection 36 Generator P Q Capability Curve
42. 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 smoothing 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 G 4 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 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
43. 8 the vector x consists of the set of voltage angles at non reference buses Tt 053 gt Vi Tres 4 6 and 4 1 takes the form Back Pac 0 4 7 where Bae 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 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 solved
44. A 12 Tmin lt x lt 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 linear function l lt Ax lt u as opposed to separate equality constrained 4 1 beg and upper bounded Az lt b functions MATPOWER also includes another wrapper function gps_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 gps_mips with the exception of the structure of the opt input argument The
45. EL 2 gt Cn C1 C0 n 1 coefficients of n th order polynomial cost starting with highest order where cost is f p cnp cp co T 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 2ny contain the reactive power costs in the same format Not currently used by any MATPOWER functions TT 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 function 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 th
46. IN MU_QMAX MU_QMIN PC1 PC2 QC1MIN QC1MAX QC2MIN QC2MAX RAMP_AGC RAMP_10 RAMP_30 RAMP_Q APF idx_gen hh 777 print results r results reserves ng length r R nrz size r req 1 OUT_ALL mpopt 32 if OUT_ALL 0 fprintf fd Mn fprintf fd nl Reserves IN fprintf fd n fprintf fd n Gen Bus Status Reserves Price fprintf fd n MW MW fprintf fd n 105 for k i ng fprintf fd n 3d 6d 72d k results gen k GEN_BUS results gen k GEN_STATUS if results gen k GEN_STATUS gt 0 amp amp abs results reserves R k gt le 6 fprintf fd 10 2f results reserves R k else fprintf fd gt 033 end fprintf fd 10 2f results reserves prc k end fprintf fd a 0 See 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 fprintf fd n LD for k 1 nrz iz find r zones k hh gens in zone k fprintf fd n 3d 10 2f 10 2f k sum results reserves R iz results lin mu 1 Rreq k results baseMVA end fprintf fd n print binding reserve limit multipliers end 54 6 2 5 savecase Callb
47. LAB manaul at http www mosek com documentation for details 107 References 1 2 GNU General Public License Online Available http www gnu org 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 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
48. MATPOWER 4 0 User s Manual Ray D Zimmerman Carlos E Murillo S nchez February 7 2011 2010 2011 Power Systems Engineering Research Center PSERC All Rights Reserved Contents 1 Introduction LIL Background so pos dor he ee BO ma BOS SR ra A 1 2 License and Terms of Use La Citne MATPOWER nfs ee 2 eee ams pos as oe eg ee A Getting Started 2 1 System Requirements 0 000 eee eee Oe Installation cen a eh la a e ia Ps E oo Prepara Case Input Dota css res a as he SY a 23 2 Solymg the LA ocres ser A 2 3 3 Accessing the Results ene 23 4 petting UNS o a a a A 24 Documentation Modeling SA Data Formats o roe seata does esse se e aA Sek Broncho s eac a Te Oe See Os the Gove De DA eae A 3 3 Generators aooaa a a a a De Load aa ranan i a hae dk Bae bee ee a h Be ae ai 3 5 Shunt Elements occ corsa rert Re ee wee x oo Network Equations s eae ee Ode Bee he BERS BAe eS Del DO Modeling cae eb ac eed ae ee A Oe Ee Power Flow 11 AC Power Fow css EER EARS DME EG GE RSS 42 WC Power Elo oo ee a Mie Ae a Rea AAA AAA eS 4 4 Linear Shift Factors 2 0 0 0 oee aii e E n p e aa Optimal Power Flow 51 Standard AC OPF cocoa ena Be eee a a 52 Gteandard DO OPF secs ws kate be a aaa aa de 5 3 Extended OPF Formulation a a a aoaaa a a a 5 3 1 User defined Costs lt su oca vi rap eieae e REARS 5 3 2 User defined Constraints es ses ssri dras 5 3
49. 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 Py limit results gen MU_QMAX Kuhn Tucker multiplier on upper Q limit results gen MU_QMIN Kuhn Tucker multiplier on lower Qg limit results branch MU_SF Kuhn Tucker multiplier on flow limit at from bus results branch MU_ST Kuhn Tucker multiplier on flow limit at to bus results mu shadow prices of constraints results g optional constraint values results dg optional constraint 1st derivatives results raw raw solver output in form returned by MINOS and moret 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 See help for opf_model for more details t See help for opf for more details 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
50. PS 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 Win dows 32 bit at http www pserc cornell edu bpmpd G 2 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 104 G 3 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
51. RIMETOL 5 x 1074 primal variable tolerance 89 TRALMDUALTOL 5x 10 4 dual variable tolerance 90 TRALM_COSTTOL 1075 optimality tolerance 91 TRALM_MAJOR_1T 40 maximum number of major iterations 92 TRALM_MINOR_IT 100 maximum number of minor iterations 93 SMOOTHING RATIO 0 04 piecewise linear curve smoothing ratio 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 t 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 idx 17 18 19 20 21 22 23 55 Table C 5 OPF Options for fmincon constr and successive LP Solvers name default CONSTR_TOL_X 10 4 CONSTR_TOL_Ft 10 4 CONSTR_MAX_IT 0 LPC_TOL_GRAD 3 x 10 3 LPC_TOL_X 1074 LPC_MAX_IT 400 LPC_MAX_RESTART 5 FMC_ALG 1 description termination tolerance on x termination tolerance on f maximum number of iterations 0 2n 150 where n is number of buses 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 Ibfgs Hessian approximation 4
52. Rmin z gen results reserves Rmax int2ext results Rmax z gen results reserves mu l int2ext results mu_l z gen results reserves mu u int2ext results mu_u z gen results reserves mu Pmax int2ext results mu_Pmax z gen results reserves prc Z for k 1 ng0 iz find r zones k results reserves prc k max 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 52 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 53 function results userfcn_reserves_printpf results fd mpopt args define named indices into data matrices GEN_BUS PG QG QMAX QMIN VG MBASE GEN_STATUS PMAX PMIN MU_PMAX MU_PM
53. ack 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 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 Mhttp www mathworks com matlabcentral fileexchange 1206 55 function mpc userfcn_reserves_savecase mpc fd prefix args mpc userfcn_reserves_savecase mpc fd mpopt args This is the savecase stage userfcn callback that prints the M file code to save the reserves field in the case file It expects a MATPOWER case struct mpc a file descriptor and variable prefix usually mpc The optional args are not currently used r mpc reserves fprintf fd nhhhh Reserve Data WIND fprintf fd f h reserve z
54. al matrix with the vector elements on the diagonal these system admittance matrices can be formed as follows Y Y yr Cf Y ye Ct 3 11 Y Yy Cf Yu Ct 3 12 Vine OF Y OF Y Yaa 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 Spus V V fous V Yas V 3 14 SV CV 15 CV YF V 3 15 SV CV 17 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 Sa CS 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 branch resistances r and charging capacitances be are negligible 1 1 be 0 3 18 Ts EJTs Jts Ys e All bus voltage magnitudes are close to 1 p u vi x et 3 19 e Voltage angle differences across branches are small enough that sin 6 0 Osnitt X 0 0 Oshitt 3 20 Substituting the first set of assumptions regarding branch parameters from 3 18 the branch admittance matrix in 3 2 approximates to 1 es Vin amp Gee 3 21 o l _ S red shift Combin
55. ation 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 All inputs are optional except f_fcn and x0 t If gh_fcn is provided then hess_fcn is also required Specifically if there are nonlinear constraints the Hessian information must provided by the hess_fcn function and it need not be computed in f_fcn 62 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
56. atrix for branch i are labeled as follows Yi Y Yy 3 3 Yy Yu then four n x 1 vectors Y ff Y yr Yyy and Yy can be constructed where the i th element of each comes from the corresponding element of Y Furthermore the n x ny sparse connection matrices Cf and C used in building the system admittance matrices can be defined as follows The i j element of Cy and the i k element of C are equal to 1 for each branch i where branch 7 connects from bus j 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 i the injection is Sy Py jq 3 4 Let Sy 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 n X ng generator connection matrix C can be defined such that its i j element is 1 if generator j is located at bus and 0 otherwise The n x 1 vector of all bus injections from generators can then be expressed as Sa pus 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 7 the load is Sa Pat IM 3 6 and Sa Pi jQa denotes the ny x 1 vector of complex loads at all buses The MW and MVAr equivalents before conversion to p u of p and qi are specified in c
57. below As 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 35 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 corresponds 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
58. case gt gt results runpf casedata mpopt fname solvedcase 25 Table 4 1 Power Flow Results name description results success success flag 1 succeeded 0 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 qt 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 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 default 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 1078 terminatio
59. cation of both energy and reserves 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 i 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 max 2 0 lt r mA GH Lon 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 falx 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 pi r lt g ee i 1 ng 6 4 The second requires that the sum of the reserve allocated within each zone k meets the stated requirements Y m2 Rg Lo 6 5 1EZk 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 46 Table 6 1 Names Used by Implementation of OPF with Reserves
60. chnique 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 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 60 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 algori
61. 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 93 Table D 18 Miscellaneous MATPOWER Tests name t test_matpower t_auction_minopf t_auction_mips t_auction_tspopf_pdipm t_ext2int2ext t_hasPQcap t_hessian t_jacobian t_loadcase t_makeLODF t_makePTDF t_mips tmips6 t_modcost t_off2case t_qps_matpower t_pf t_runmarket t_scale_load t_total_load t_totcost description runs all MATPOWER tests runs tests runs tests runs tests runs tests runs tests runs tests for auction using MINOPFT for auction using MIPS for auction using PDIPM for ext2int and int2ext for hasPQcap for 2 derivative code runs test for partial derivative code runs tests runs tests runs tests runs tests runs tests runs tests runs tests runs tests runs tests runs tests runs tests runs tests runs tests for loadcase for makeLODF for makePTDF for MIPS NLP solver for MIPS NLP solver for modcost for of f2case for qps_matpower for AC and DC power flow for runmarket for scale_load for total_load for totcost Deprecated Will be removed in a subsequent version Requires optional MEX based MINOPF package available from http www pserc cornell edu minopf Requires optional MEX based TSPOPF package available from http www pserc cornell edu tspopf 1 Fo
62. constructed similar to Yp where the th element is b and let Py shitt be the n x 1 vector whose i th element is equal to 0 urbi Then the nodal real power injections can be expressed as a linear function of O the nz x 1 vector of bus voltage angles Pous O BousO Ppus shift 3 27 where Poussnitt Cp Ce Pp shite 3 28 21 Similarly the branch flows at the from ends of each branch are linear functions of the bus voltage angles P O B 9 FP shift 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 Bsr Cp Ci 3 30 Br C O By 3 31 The DC nodal power balance equations for the system can be expressed in matrix form as gP 9 Po Bra Phus shift Py Gish Tr CP 0 3 32 22 4 Power Flow The standard power flow or loadflow problem involves 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 Cur
63. 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 info 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 81 Table C 4 OPF Options for MIPS and TSPOPF idx name default description 81 PDIPM FEASTOL 0 feasibiliy equality tolerance set to value of OPF_VIOLATION by default 82 PDIPM_GRADTOL 1078 gradient tolerance 83 PDIPM_COMPTOL 1076 complementarity condition inequality tolerance 84 PDIPM_COSTTOL 1078 optimality tolerance 85 PDIPM_MAX_IT 150 maximum number of iterations 86 SCPDIPM_RED_IT 20 maximum number of step size reductions per iteration 87 TRALM_FEASTOL 0 feasibiliy tolerance set to value of OPF_VIOLATION by default 88 TRALMP
64. ction its gradients and Hessian for a given value of x Calling syntax for this function df d2f f_fcn x x0 Starting value of optimization vector zx A 1 u Define the optional linear constraints l lt Ax lt u Default values for the elements of xmin xmax gh_fcn hess_fcn opt problem 1 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 and y are the multipliers on the equality and inequality constraints g and h respectively The calling syntax for this function is Lxx hess_fcn x lam cost_mult where lam eqnonlin y 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 Le 6 comptol le 6 termin
65. des 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 57 6 4 Summary The five callback stages currently defined by MATPOWER are summarized in Ta ble 6 3 Table 6 3 Callback 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 to the case file MATPOWER includes two OPF extensions implemented via callbacks One is a more complete version of the example of fixed zonal reserve requirements use for illus tration above The code can be found in toggle_reserves A wrapper around runopf that turns on this e
66. e 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 78 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 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 V 0 do not enforce limits 1 enforce limits simultaneous bus type conversion 2 enf
67. e 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 PTDFs carry an implicit assumption about the slack distribution If A is used to denote a PTDF matrix then the element in row and column j 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 HAPbus 4 8 This slack distribution can be expressed as an n x 1 vector w of non negative 27 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
68. 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 ap 6 Vm P 93 9 Vm Qg Vi Tpy U Tpo V Teg C 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 Ori Vi Tref q 4 ve Vj Tpo 5 This yields a system of nonlinear equations with np 2rpq 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 n 1 reactive power balance equations yield the generator reactive power injections MATPOWER includes four different algorithms 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
69. h fixed reserve requirements Deprecated Will be removed in a subsequent version Requires optional MEX based MINOPF package available from http www pserc cornel1l edu minopf Requires optional MEX based TSPOPF package available from http www pserc cornell edu tspopf Requires optional MEX based BPMPD_MEX package available from http www pserc cornell edu bpmpd 1 Requires MEX interface to IPOPT solver available from https projects coin or org Ipopt 0 Requires optional MATLAB interface to CPLEX available from http www ibm com software integration optimization cplex optimizer A Requires optional MATLAB interface to MOSEK available from http www mosek com 95 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 psse2matpower se smartmarket state_estimator Continuation power flow code contributed by Rui Bo Type test_cpf to run an example See cpf_intro pdf for a brief in troduction to this code Perl script for converting PSS E data files into MATPOWER case file format Derived from a psse2psat script in the PSAT distribution Usage psse2matpower
70. he 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 delimited 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 pr
71. idding three blocks each as shown in Table F 3 21In 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 99 Table F 2 Generator Offers Generator Block 1 Block 2 Block 3 MW MWh MW MWh MW Q 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 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 1 100 and set up the problem as follows offers P qty 12 24 24 12 24 24 12 24 24 12 24 24 12 24 24 12 24 24 offers P pre 20 50 60 20 40 70 20 42 80 20 44 90 20 46 75 20 48 60 1 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 101 The resulting cleared offers and bids are gt gt co ans 12 12 12
72. ing this and the second assumption with 3 1 yields the following approxi mation for tz 1 1 1 ay Xs Ge Te Osnift E 1 1 y i 04 0sni Zelf MA shitt 3 22 ILT 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 pp R sf R Los i N fer J lestr ainus IST T R J 1 ce 9 O4 Osnitt IST T i fl R E sino 0i Oshift 3 G cos 6 y 0 7 l 1 XL 5T ro Gp b 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 pf The relationship between the real power flows and voltage angles for an individual branch 7 can then be summarized as Pf _ pi 0 i Dt Byr 6 F shift 3 24 where i 1 1 Be ai i i i 1 P shift OcmisDi 1 and b is defined in terms of the series reactance x and tap ratio 7 for branch i as 1 Lor b For a shunt element at bus 2 the amount of complex power consumed is Sin Vi ye vi a e 951 N oe Fn io Up 3 25 So the vector of real power consumed by shunt elements at all buses can be approx imated by Pe Gsh 3 26 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 m x 1 vector Byp be
73. initions for dispatch matrix updates gen and gencost based on quantity price offers and bids fills in a struct with default values for offer and bid limits prints the market output top level simulation function runs the OPF based smart market top level simulation function runs the OPF based smart market implements the smart market solver change history for the smart market software Deprecated Will be removed in a subsequent version 103 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 install in you MATLAB path Each of them is based on one or more MEX files pre compiled for various platforms G 1 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 S nchez 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 Q
74. ion to be used for a small number of 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 Only if they contain all zeros 44 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 inte
75. ions 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 soln9_dcopf mat soln9_dcpf mat soln9_opf_ang mat soln9_opf_extras1 mat so1n9_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_opf m t_case9_opfv2 m t_case9_pf m t_case9_pfv2 m t_case30_userfcns m 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 capability 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 sample case file with OPF data version 1 format sample case file with OPF data version 2 format inludes addi tional branch angle diff limits amp gen PQ capability
76. low limits enable disable the callbacks implementing fixed reserve requirements 89 name dIbr_dV dSbr_dV dSbus_dV dAbr_dV d2Ibr_dv2 d2Sbr_dV2 d2ATbr_dV2 d2ASbr_dV2 d2Sbus_dV2 Table D 11 Power Flow Derivative Functions descriptiont evaluates the partial derivatives of I evaluates the V evaluates the partial derivatives of S evaluates the V evaluates the partial derivatives of Shus evaluates the V evaluates the partial derivatives of Fy with respect to V evaluates the 2 derivatives of I fit evaluates the V evaluates the 2 derivatives of S fle evaluates the V evaluates the 2 derivatives of I p evaluates the V evaluates the 2 derivatives of S j evaluates the V evaluates the 291 derivatives of Situs evaluates the V V represents complex bus voltages I complex branch current injections Sp complex branch power injec tions Ihus complex bus current injections Shus complex bus power injections and Fpjs refers to branch flows either I or Spig 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 Table D 12 NLP LP amp QP Solver Functions description cplex_options ipopt_options mips mips6 mipsver mosek_options mp 1p mp qp qps matpower qps_cplex qps_bpmpd qps_ipopt qps_mips gps_mips6 qps_mosek qps_ot default options for CPLEX solver default options for IPOPT solver
77. me 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 4GNU Octave is free software available online at http www gnu org software octave MATPOWER 4 0 may work on earlier versions of Octave but has not been tested on versions prior to 3 2 3 Shttp www mathworks com support sysreq previous_releases html Shttp www pserc cornell edu matpower Step 3 Add the following directories to your MATLAB path e MATPOWER core MATPOWER functions 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 ok t_ext2int2ext ok t_jacobian ok t_hessian ok t_totcost ok t_modcost ok t_hasPQcap ok GMI S ce ey alee aes wate ok t_qps_matpower ok 144 of 252 skipped GIDE a dicted ee a ok t_opf_fmincon ok t_opf_mips ok t_o
78. mentation Files name description README README txt basic introduction to MATPOWER docs CHANGES CHANGES txt MATPOWER change history manual pdf MATPOWER 4 0 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 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 flowt runopf optimal power flowt runuopf optimal power flow with unit decommitment rundcpf DC power flow rundcopf DC optimal power flow runduopf DC optimal power flow with unit decommitment runopf_w_res optimal power flow with fixed reserve requirements Uses AC model by default t Simple wrapper function to set option to use DC model before calling the cor responding general function above 86 name cdf 2matp loadcase mpoption printpf savecase name ext2int int2ext get_reorder set_reorder 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
79. ments See the help for int2ext for more details on how it can be used Then the reserves results of interest are extracted from the appropriate 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 51 function results userfcn_reserves_int2ext results args gt convert stuff back to external indexing convert all reserve parameters zones costs qty rgens results int2ext results reserves qty gen results int2ext results reserves cost gen results int2ext results reserves zones gen 2 r results reserves ng size results gen 1 number of on line gens internal ng0 size results order ext gen 1 number of gens external Ah results post processing hh get the results per gen reserves multipliers with internal gen indexing and convert from p u to per MW units RO Rl Ru getv results om R R results var val R results baseMVA Rmin R1 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 store in results in results struct z zeros ng0 1 results reserves R int2ext results R z gen results reserves Rmin int2ext results
80. n apparent power Fr O Vm 3 P O Vin real power 5 9 I 0 Vm current where J is defined in 3 9 Sy in 3 15 Pf R S and the vector of flow limits Fmax has the appropriate units for the type of constraint It is likewise for F 0 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 grt lt Q lt ore i Les 5 10 vimin lt vi lt yemak t 5 11 pa lt pi lt na 1 1 Ng 5 12 oe lt gi lt qa 1 1 Ng 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 and the overall problem reduces to the following form min 2 AA 5 15 subject to gP Q Ea Big F Phus shift Pa Gsh CP 0 5 16 h Bjy0 F Py shift E Finax lt 0 5 17 h O z B 0 P shift a Fmax lt 0 5 18 30 ae lt 6 lt ae 1 Lief 5 19 pimin lt pi lt pimax G 1 Ig 5 20 5 3 Extended OPF Formulation MATPOWER employs an extensible OPF structure 10 to allow the user to modify
81. n The second and more powerful method 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 f 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 fparm repectively where fparm is the ny x 4 matrix Fram a 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 is such that d and m are all ones and 7 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 extens
82. n case118 m to access the final objective function value the real power output of generator 6 and the power flow in branch 51 gt gt define_constants gt gt results rundcopf case118 gt gt final_objective results f gt gt gen6_output results gen 6 PG gt gt 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 it with a set of name and value pairs modifies the default vector For example 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 verb
83. n 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 V 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 flags 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 35 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 Overrides individual flags Internally the runpf function does a number of conversions to the problem data before calling the appropriate solver routin
84. nction to evaluate the objective function and its gra dients function f df d2f 2 x f x 1 x 2 x 2 x 3 if nargout gt 1 hh gradient is required df x 2 x 1 x 3 x 2 if nargout gt 2 Hessian is required d2f 0 10 101 01 0 actually not used since end hess_fcn is provided end one to evaluate the constraints in this case inequalities only and their gradients function h g dh dg gh2 x h 1 11 3111 x 72 2 10 dh 2 x 1 x 1 x 2 x 2 x 3 x 3 g Ol dg 01 and another to evaluate the Hessian of the Lagrangian function Lxx hess2 x lam cost_mult if nargin lt 3 cost_mult 1 end h allows to be used with fmincon mu lam ineqnonlin Lxx cost_mult O 1 0 1 0 1 0 1 0 2 1 1 mu O 0 O 2 1 1 mu 0 O O 2x 1 1 mu From http en wikipedia org wiki Nonlinear_programming 3 dimensional_example 18Since 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 65 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
85. nerators are on line with all limits in place Step 2 Solve a normal OPF Save the solution as the current best Step 3 Goto 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 heuristic 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 99 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 te
86. ngle 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 5 2 h x lt 0 5 3 Cin OS ey 5 4 5 1 Standard AC OPF The optimization vector x for the standard AC OPF problem consists of the n x 1 vectors of voltage angles O and magnitudes V and the n x 1 vectors of generator real and reactive power injections P and Q O Vin s 5 5 g Qy 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 Ng ov q 2 Fels 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 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 h Vin F O Vin Fmax lt 0 5 7 hi Vm F 9 Vin Frnax lt 0 5 8 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 Vi
87. ning 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 as the five callback functions function mpc toggle_reserves mpc on_off TOGGLE_RESERVES Enable or disable fixed reserve requirements mpc toggle_reserves mpc on 4 mpc toggle_reserves mpc off if strcmp on_off on lt code to check for required reserves fields in mpc gt add callback functions mpc add_userfcn mpc ext2int userfcn_reserves_ext2int mpc add_userfcn mpc formulation Guserfcn_reserves_formulation mpc add_userfcn mpc int2ext userfcn_reserves_int2ext mpc add_userfcn mpc printpf userfcn_reserves_printpf mpc add_userfcn mpc savecase Guserfcn_reserves_savecase elseif strcmp on_off off mpc remove_userfcn mpc savecase Guserfcn_reserves_savecase mpc remove_userfcn mpc printpf userfcn_reserves_printpf mpc remove_userfcn mpc int2ext userfcn_reserves_int2ext mpc remove_userfcn mpc formulation Guserfcn_reserves_formulation mpc remove_userfcn mpc ext2int userfcn_reserves_ext2int else error toggle_reserves 2nd argument must be either on or off end To run case that inclu
88. 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 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 G 6 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 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 7 for other MOSEK related MATPOWER options 106 A MOSEK user options function can also be used to override the defaults for any of the many MOSEK parameters See help mosek_options and the Parameters ref erence in Appendix E of The MOSEK optimization toolbox for MAT
89. ol 26 no 1 pp 12 19 Feb 2011 2 Getting Started 2 1 System Requirements To use MATPOWER 4 0 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 it 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 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 3MATLAB is available from The MathWorks Inc http www mathworks com Though so
90. olumns 3 and 4 respectively of row 7 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 1 is given as Ysh Gen JOsn 3 7 and Ysn Gen 7 Bsn denotes the ny x 1 vector of shunt admittances at all buses The parameters gf and bf 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 a complex np X np bus admittance matrix Yhus that relates the complex nodal current injections pus to the complex node voltages V Thus Yous V 3 8 Similarly for a network with n branches the n X na system branch admittance matrices Y and Y relate the bus voltages to the n x 1 vectors I and of branch currents at the from and to ends of all branches respectively I Y V 3 9 L Y V 3 10 If is used to denote an operator that takes an n x 1 vector and creates the corresponding n x n diagon
91. ompt 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 73 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 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 sh
92. ones element i j is 1 iff gen j is in zone i n fprintf fd sreserves zones n prefix template for i 1l size r zones 2 template template tid end template template n fprintf fd template r zones fprintf fd n fprintf fd Nn h reserve requirements for each zone in MW n fprintf fd sreserves req thg prefix r req 1 if length r req gt 1 fprintf fd t g r req 2 end end fprintf fd t n fprintf fd An 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 Xt g r cost 2 end end fprintf fd t n if isfield r qty fprintf fd Nn h max reserve quantities for each gen n fprintf fd Asreserves qty thg 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 56 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 contai
93. orce 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 79 Table C 2 General OPF Options idx name default description 11 OPF_ALG 0 AC optimal power flow algorithm 0 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 solvert 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 16 OPF_VIOLATION 5x 107 constraint violation tolerance 24 OPF_FLOW_LIM 0 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 25 OPF_IGNORE_ANG_LIM 0 ignore angle difference limits for branches 0 include angle difference limits if specified 1 ignore angle difference limits even if specified 26 OPF_ALG_DC 0 DC optimal power flow algorithm 0 choose default
94. ose 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 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
95. output at PC2 MVAr QC2MAX 16 maximum reactive power output at PC2 MVAr RAMP_AGC 17 ramp rate for load following AGC MW min RAMP_10 18 ramp rate for 10 minute reserves MW RAMP_30 19 ramp rate for 30 minute reserves MW RAMP_Q 20 ramp rate for reactive power 2 sec timescale MVAr min APF 21 area participation factor MU_PMAX 22 Kuhn Tucker multiplier on upper P limit u MW MU_PMINT 23 Kuhn Tucker multiplier on lower P limit u MW MU_QMAX 24 Kuhn Tucker multiplier on upper Qg limit u MVAr MU_QMINT 25 Kuhn Tucker multiplier on lower Q limit u MVAr Not included in version 1 case format Y Included in OPF output typically not included or ignored in input matrix Here we assume the objective function has units u 75 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 emergency rating TAP 9 transformer off nominal turns ratio taps at from bus impedance at to bus i e if r x 0 tap Ka SHIFT 10 transformer phase shift angle degrees positive delay BR_STATUS 11 initial branch status 1 in service 0 out of service ANGMIN 12 minimum angle difference 0 0 degrees ANGMAX 13 maximum angle diffe
96. params compute_cost display get_cost_params get_idx get lin N get mpc get nln N get var N 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 parameter struct created by build_cost_params returns the idx struct for vars lin nln constraints costs returns the number of linear constraints returns the MATPOWER case struct returns the number of nonlinear constraints returns the number of variablest 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 i Deprecated Will be removed in a subsequent version t For all or alternatively only for a named subset name Table D 8 OPF Solver Functions description copf_solver dcopf_solver fmincopf_solver fmincopf6_solver ipop
97. pc 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 version 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 11 gt gt define_constants gt gt mpc loadcase case30 gt gt mpc bus 2 PD 30 gt gt runopf mpc The
98. pf_mips_sc ok t_opf_dc_mips ok t_opf_dc_mips_sc ok Opt de Obs AAA ok t_opf_userfcns ok t_runopf_w_res ok t_makePTDF ok t_makeLODF ok t_total_load ok t_scale_load ok All tests successful 1530 passed 144 skipped of 1674 Elapsed time 5 36 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 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 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 m
99. r MATLAB 6 x avoids using handles to anonymous functions 94 Table D 19 MATPOWER OPF Tests name description t t_opf _constr t_opf_dc_bpmpd t_opf_dc_cplex 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 _1p_den t_opf_lp_spf ji t_opf lp spr t_opf_minopf t_opf_mips t_opf _mips_sc t_opf _tspopf_pdipm t_opf _tspopf_scpdipm t_opf_tspopf_tralm t_opf _userfcns t_runopf_w_res 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 Ipopr 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 using MIPS sc runs tests for AC OPF solver using fmincon runs tests for AC OPF solver using Ipoprt 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 MINOPFt runs tests for AC OPF solver using MIPS runs tests for AC OPF solver using MIPS sc runs tests for AC OPF solver using PDIPM runs tests for AC OPF solver using SC PDIPM runs tests for AC OPF solver using TRALM runs tests for AC OPF with userfen callbacks for reserves and interface flow limits runs tests for AC OPF wit
100. rd IEEE CDF and PTI formats The number of rows in bus branch and gen are np m and ny respectively If present gencost has either ng or 2n rows depending on whether it 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 r jx and total charging capacitance be in series with an ideal phase shifting transformer The transformer whose tap ratio has magnitude 7 and phase shift angle Osni is located at the from end of the branch as shown in Fig ure 3 1 The parameters rs s be T and Ognig are specified directly in columns 3 4 5 9 and 10 respectively of the corresponding row of the branch matrix 16 The complex current injections i and i at the from and to ends of the branch respectively can be expressed in terms of the 2 x 2 branch admittance matrix Yj and the respective terminal voltages vy and v al en With the series admittance element in the m model denoted by y 1 z the branch admittance matrix can be written be 1 1 Yp Ys 59 T2 Ys Te Init f 3 2 Usain Ys TIF 7 A N N res Msnitt Figure 3 1 Branch Model If the four elements of this m
101. rence 0f 0 degrees PF 14 real power injected at from bus end MW QFt 15 reactive power injected at from bus end MVAr PTt 16 real power injected at to bus end MW qr 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 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 76 Table B 4 Generator Cost Data mpc gencost name column description MODEL 1 cost model 1 piecewise linear 2 polynomial STARTUP 2 startup cost in US dollars SHUTDOWN 3 shutdown cost in US dollars NCOST 4 number of cost coefficients for polynomial cost function or number of data points for piecewise linear COST 5 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 Po fo Pi du Pns fn where po lt p lt lt Pn and the cost f p is defined by the coordinates po fo p1 1 Pn Jn of the end break points of the piecewise linear cost MOD
102. rently 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 Qua are also given all non generator buses are PQ buses with real and reactive injections fully specified Let Zrer Zpy and ZTpq denote the sets of bus indices of the reference bus PV buses and PQ buses respectively In the traditional 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 Qg where the load injections are assumed constant and given gP O Vm Pa Pous O Vm Pi CaF 0 4 2 gQ 9 Vos da Qbus O Vm Qa or ae 0 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
103. rface flow limits mentioned previously 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 print and save new result data 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 Guserfcn_reserves_formulation 45 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 allo
104. s coin or org Ipopt wiki MatlabInterface 10See http www ibm com software integration optimization cplex optimizer See http www mosek com 38 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 QP 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 qps mips making it trivial to set up and solve LP and QP problems with an interface similar to quadprog from the MATLAB Optimization Toolbox 5 6 runopf 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
105. s 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 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 b
106. sed by 1popf_solver LPsetup solves LP problem using specified method used by 1popf_solver makeAang forms linear constraints for branch angle difference limits makeApq forms linear constraints for generator PQ capability curves makeAvl forms linear constraints for dispatchable load constant power factor makeAy forms linear constraints for piecewise linear generator costs CCV opf_args input argument handling for opf opf_setup constructs an OPF model object from a MATPOWER case opf_execute opf_consfcn opf_costfcn opf_hessf cn totcost update_mupq 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 capability curve constraints Deprecated Will be removed in a subsequent version Used by constr and LPconstr for AC OPF Used by fmincon MIPS and Iport for AC OPF name Table D 10 OPF User Callback Functions description add_userfcn remove_userfcn run_userfcn toggle_iflims toggle_reserves appends a userfcn to the list of those to be called for a given case appends a userfen from the list executes the userfcn callbacks for a given stage enable disable the callbacks implementing interface f
107. simplex 5 dual simplex 6 primal dual simplex 7 automatic simplex MOSEK chooses which simplex 10 concurrent MSK_IPAR_INTPNT_MAX_ITERATIONS interior point max imum iterations MSK_DPAR_INTPNT_TOL_REL_GAP interior point relative gap tolerance MSK_DPAR_OPTIMIZER_MAX_TIME maximum time allowed for solver negative means Inf MSK_IPAR_INTPNT_NUM_THREADS maximum number of threads to use 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 Requires optional MATLAB interface to MOSEK available from http www mosek com t Default values in parenthesis refer to defaults assigned by MOSEK if called with option equal to 0 See help mosek_options for details Table C 8 OPF Options for Ipoptt idx name default 60 IPOPT_OPT 0 description 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 IpoptT Requires MEX interface to IPOPT solver available from https projects coin or org Ipopt t See help ipopt_options for details 84 idx 61 62 63 64 65 66 67 68 69 70 71 72 73 Table C 9 OPF Options for MINOPFt 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
108. 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 AC 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
109. standard OPF formulation but before 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
110. t 0 A 34 where e fx Gy p Hy _ uZ e _ u Z ye F X Z u G X G X A 35 H X Z H 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 AZ Fx Fe Fa Ful ay F 2 A m A 36 Au Lt 0 Gx Hx Ax E 0 i 0 Z AZ __ WZ ae Gx 0 0 0 Ao G X a 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 29 row of A 37 and solving for Ay we get 1 AZ Z Ap 1 Z ye Z Ay Z u ye WJ AZ Ap pt Z ye 1 AZ A 38 Solving the 4 row of A 37 for AZ yields HxAX AZ H X Z AZ H X Z Hy AX A 39 70 Then substituting A 38 and A 39 into the 1 row of A 37 results in LY AX Gx AA Hx Ap L Lyx AX Gx AA Hx p Z ye u AZ Ly Ly AX Gx AA Hx Z ye u H X Z en Li Lx AX GxTAX Hx u Ax Z Hx Z 7 a H X Ax Z Z u e Z ul HxAX Lx Hx Z a Hx AX Gx AA Hx Z ye u H X ae MAX Gx AA N A 40 where M LYy Hx Z u Hx A 41 fxx Gxx A Hxx u Hx Z 1 Hx A 42 and 45 Hx Z ye 1 H X A 43 fx Gx u Hx Hx Z ye a H X A 44 Combining A 40 and the 3 row of A 37 results in a
111. the value of d Currently MATPOWER implements only linear and quadratic options Q if di 1 fala dh edn 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 fy As a result for the DC case 5 30 simplifies to Wi Miui 5 3 2 User defined Constraints The user defined constraints 5 25 are general linear restrictions 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 00 bo
112. thms described in 12 19 This solver has application outside of MATPOWER to general nonlinear optimiza tion problems of the following form min f x A 1 subject to giz 0 A 2 h x lt 0 A 3 lt Ax lt u A 4 Lmin L T 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 x0 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 1 lt Ax lt u as opposed to separate equality constrained A beq and upper bounded Ax lt b functions Internally equality constraints are handled explicitly and determined at run time based on the values of l and u 15For MATLAB 6 x use mips6 61 Table A 1 Input Arguments for mips name description f fcn Handle to a function that evaluates the objective fun
113. topf_solver lpopf solver mipsopf_solver mips6opf_solver mopf_solver tspopf_solver sets up and solves OPF problem using constr MATLAB Opt Tbx 1 x amp 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 IPOPT 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 1 For MATLAB 6 x avoids using handles to anonymous functions t Requires MEX interface to IPOPT solver available from https projects coin or org Ipopt Requires optional MEX based MINOPF package available from http www pserc cornell edu minopf Requires optional MEX based TSPOPF package available from http www pserc cornell edu tspopf 88 Table D 9 Other OPF Functions name description fun_copft evaluates AC OPF objective function and nonlinear constraints grad_copf evaluates gradients of AC OPF objective function and nonlinear constraints LPconstr successive LP based optimizer calling conventions similar to constr LPeqslvr runs Newton power flow used by lpopf_solver LPrelax solves LP problem with constraint relaxation u
114. ual 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 7 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 i this scale factor is A S A where AS 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 98 scale factor The appropriate locationally adjusted uniform price is then used for all cleared bids and offers The relationships between the OPF results 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 it
115. unded above l 00 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 Figure 5 3 illustrates a convex n segment piecewise linear cost function mi 1 21 C1 z lt T djs mala 12 6 2 lt i lt La 5 32 Mnl Tyla Baa lt lt S To i T2 Tn Figure 5 3 Constrained Cost Variable 34 defined by a sequence of points xj cj 7 0 n where m denotes the slope of the j th segment Cj Cj m 4 5 j 1 0
116. unt 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 Pp 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_VMINT 17 Kuhn Tucker multiplier on lower voltage limit u p u Included in OPF output typically not included or ignored in input matrix Here we assume the objective function has units u 74 Table B 2 Generator Data mpc gen name column description GEN_BUS 1 bus number PG 2 real power output MW QG 3 reactive power output MVAr QMAX 4 maximum reactive power output MVAr QMIN 5 minimum reactive power output MVAr VG 6 voltage magnitude setpoint p u MBASE 7 total MVA base of machine defaults to baseMVA GENSTATUS 8 machine status 7 9 Machine in service _ gt lt 0 machine out of service PMAX 9 maximum real power output MW PMIN 10 minimum real power output MW pc1 11 lower real power output of PQ capability curve MW pc2 12 upper real power output of PQ capability curve MW QCiMIN 13 minimum reactive power output at PC1 MVAr QCIMAX 14 maximum reactive power output at PC1 MVAr QC2MIN 15 minimum reactive power
117. 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 Terms 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 lhnttp www pserc cornell edu 2http 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
118. 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 91 name caseformat case_ieee30 case24_ieee_rts case4gs case6ww case9 case9Q casel4 case30 case30pwl case30Q case39 caseb7 case118 case300 case2383wp case2736sp case2737sop case2746wop case2746wp 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 amp Stevenson 6 bus example case from Wood amp Wollenberg 9 bus example case from Chow 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 92 D 4 Automated Test Suite Table D 16 Automated Test Utility Funct
119. xtension before running the OPF is provided in runopf_w_res A second extension that imposes interface flow limits using DC model based flows is implemented in toggle iflims Examples of using these extensions and a case file defining the necessary input data for both 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 58 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 commitment 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 ge
Download Pdf Manuals
Related Search
Related Contents
Nokia E75 User Guide 30 A current clamp User's Guide Page 1 Page 2 ラボカ ッター (MC-ー20) 目 次 頁 ー ` ご使用になる前に Copyright © All rights reserved.
Failed to retrieve file