manual mat power 2010

Upload: amel-zerigui

Post on 09-Apr-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 Manual Mat Power 2010

    1/105

    Matpower 4.0b4Users Manual

    Ray D. Zimmerman

    May 21, 2010

    2010 Power Systems Engineering Research Center ( Pserc )

    All Rights Reserved

  • 8/8/2019 Manual Mat Power 2010

    2/105

    Contents

    1 Introduction 71.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 License and Terms of Use . . . . . . . . . . . . . . . . . . . . . . . . 71.3 Citing Matpower . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2 Getting Started 92.1 System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3 Running a Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.3.1 Preparing Case Input Data . . . . . . . . . . . . . . . . . . . . 112.3.2 Solving the Case . . . . . . . . . . . . . . . . . . . . . . . . . 112.3.3 Accessing the Results . . . . . . . . . . . . . . . . . . . . . . . 12

    2.3.4 Setting Options . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3 Modeling 163.1 Data Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2 Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.3 Generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4 Loads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.5 Shunt Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.6 Network Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.7 DC Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    4 Power Flow 234.1 AC Power Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2 DC Power Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.3 runpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.4 Linear Shift Factors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    5 Optimal Power Flow 295.1 Standard AC OPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.2 Standard DC OPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.3 Extended OPF Formulation . . . . . . . . . . . . . . . . . . . . . . . 31

    5.3.1 User-dened Costs . . . . . . . . . . . . . . . . . . . . . . . . 315.3.2 User-dened Constraints . . . . . . . . . . . . . . . . . . . . . 335.3.3 User-dened Variables . . . . . . . . . . . . . . . . . . . . . . 33

    2

  • 8/8/2019 Manual Mat Power 2010

    3/105

    5.4 Standard Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.4.1 Piecewise Linear Costs . . . . . . . . . . . . . . . . . . . . . . 345.4.2 Dispatchable Loads . . . . . . . . . . . . . . . . . . . . . . . . 35

    5.4.3 Generator Capability Curves . . . . . . . . . . . . . . . . . . . 375.4.4 Branch Angle Difference Limits . . . . . . . . . . . . . . . . . 385.5 Solvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.6 runopf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    6 Extending the OPF 436.1 Direct Specication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436.2 Callback Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    6.2.1 ext2int Callback . . . . . . . . . . . . . . . . . . . . . . . . . 456.2.2 formulation Callback . . . . . . . . . . . . . . . . . . . . . . 476.2.3 int2ext Callback . . . . . . . . . . . . . . . . . . . . . . . . . 49

    6.2.4 printpf Callback . . . . . . . . . . . . . . . . . . . . . . . . . 516.2.5 savecase Callback . . . . . . . . . . . . . . . . . . . . . . . . 546.3 Registering the Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . 566.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    7 Unit De-commitment Algorithm 58

    8 Acknowledgments 59

    Appendix A MIPS Matlab Interior Point Solver 60A.1 Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    A.2 Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64A.3 Quadratic Programming Solver . . . . . . . . . . . . . . . . . . . . . 66A.4 Primal-Dual Interior Point Algorithm . . . . . . . . . . . . . . . . . . 67

    A.4.1 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67A.4.2 Problem Formulation and Lagrangian . . . . . . . . . . . . . . 68A.4.3 First Order Optimality Conditions . . . . . . . . . . . . . . . 69A.4.4 Newton Step . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    Appendix B Data File Format 72

    Appendix C Matpower Options 77

    3

  • 8/8/2019 Manual Mat Power 2010

    4/105

    Appendix D Matpower Files and Functions 83D.1 Documentation Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 83D.2 Matpower Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    D.3 ExampleMatpower

    Cases . . . . . . . . . . . . . . . . . . . . . . . 89D.4 Automated Test Suite . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    Appendix E Extras Directory 93

    Appendix F Smart Market Code 94F.1 Handling Supply Shortfall . . . . . . . . . . . . . . . . . . . . . . . . 96F.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96F.3 Smartmarket Files and Functions . . . . . . . . . . . . . . . . . . . . 100

    Appendix G Optional Packages 101G.1 BPMPD MEX MEX interface for BPMPD . . . . . . . . . . . . . . 101G.2 MINOPF AC OPF Solver Based on MINOS . . . . . . . . . . . . . 101G.3 TSPOPF Three AC OPF Solvers by H. Wang . . . . . . . . . . . . 102G.4 Ipopt Interior Point Optimizer . . . . . . . . . . . . . . . . . . . . 102

    References 104

    4

  • 8/8/2019 Manual Mat Power 2010

    5/105

    List of Figures

    3-1 Branch Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175-1 Relationship of wi to r i for di = 1 (linear option) . . . . . . . . . . . . 325-2 Relationship of wi to r i for di = 2 (quadratic option) . . . . . . . . . 335-3 Constrained Cost Variable . . . . . . . . . . . . . . . . . . . . . . . . 345-4 Marginal Benet or Bid Function . . . . . . . . . . . . . . . . . . . . 365-5 Total Cost Function for Negative Injection . . . . . . . . . . . . . . . 365-6 Generator P -Q Capability Curve . . . . . . . . . . . . . . . . . . . . 376-1 Adding Constraints Across Subsets of Variables . . . . . . . . . . . . 48

    List of Tables

    4-1 Power Flow Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264-2 Power Flow Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 274-3 Power Flow Output Options . . . . . . . . . . . . . . . . . . . . . . . 275-1 Optimal Power Flow Results . . . . . . . . . . . . . . . . . . . . . . . 405-2 Optimal Power Flow Options . . . . . . . . . . . . . . . . . . . . . . 415-3 OPF Output Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 426-1 Names Used by Implementation of OPF with Reserves . . . . . . . . 466-2 Results for User-Dened Variables, Constraints and Costs . . . . . . . 506-3 Callback Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57A-1 Input Arguments for mips . . . . . . . . . . . . . . . . . . . . . . . . 61A-2 Output Arguments for mips . . . . . . . . . . . . . . . . . . . . . . . 62

    B-1 Bus Data ( mpc.bus ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73B-2 Generator Data ( mpc.gen ) . . . . . . . . . . . . . . . . . . . . . . . . 74B-3 Branch Data ( mpc.branch ) . . . . . . . . . . . . . . . . . . . . . . . . 75B-4 Generator Cost Data ( mpc.gencost ) . . . . . . . . . . . . . . . . . . . 76C-1 Power Flow Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 78C-2 General OPF Options . . . . . . . . . . . . . . . . . . . . . . . . . . 79C-3 Power Flow and OPF Output Options . . . . . . . . . . . . . . . . . 80C-4 OPF Options for MIPS and TSPOPF . . . . . . . . . . . . . . . . . . 81C-5 OPF Options for fmincon , constr and successive LP Solvers . . . . . 81C-6 OPF Options for Ipopt . . . . . . . . . . . . . . . . . . . . . . . . . 82C-7 OPF Options for MINOPF . . . . . . . . . . . . . . . . . . . . . . . . 82D-1 Matpower Documentation Files . . . . . . . . . . . . . . . . . . . . 83D-2 Top-Level Simulation Functions . . . . . . . . . . . . . . . . . . . . . 83D-3 Input/Output Functions . . . . . . . . . . . . . . . . . . . . . . . . . 84

    5

  • 8/8/2019 Manual Mat Power 2010

    6/105

    D-4 Data Conversion Functions . . . . . . . . . . . . . . . . . . . . . . . . 84D-5 Power Flow Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 84D-6 OPF and Wrapper Functions . . . . . . . . . . . . . . . . . . . . . . 84

    D-7 OPF Model Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85D-8 OPF Solver Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 85D-9 Other OPF Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 86D-10 OPF User Callback Functions . . . . . . . . . . . . . . . . . . . . . . 86D-11 Power Flow Derivative Functions . . . . . . . . . . . . . . . . . . . . 87D-12 NLP, LP & QP Solver Functions . . . . . . . . . . . . . . . . . . . . 87D-13 Matrix Building Functions . . . . . . . . . . . . . . . . . . . . . . . . 88D-14 Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88D-15 Example Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89D-16 Automated Test Utility Functions . . . . . . . . . . . . . . . . . . . . 90D-17 Test Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    D-18 Miscellaneous Matpower Tests . . . . . . . . . . . . . . . . . . . . . 91D-19 Matpower OPF Tests . . . . . . . . . . . . . . . . . . . . . . . . . 92F-1 Auction Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95F-2 Generator Offers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97F-3 Load Bids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97F-4 Generator Sales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100F-5 Load Purchases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100F-6 Smartmarket Files and Functions . . . . . . . . . . . . . . . . . . . . 100

    6

  • 8/8/2019 Manual Mat Power 2010

    7/105

    1 Introduction

    1.1 Background

    Matpower is a package of Matlab M-les for solving power ow and optimalpower ow problems. It is intended as a simulation tool for researchers and educatorsthat is easy to use and modify. Matpower is designed to give the best performancepossible while keeping the code simple to understand and modify. The Matpowerhome page can be found at:

    http://www.pserc.cornell.edu/matpower/

    Matpower was initially developed by Ray D. Zimmerman, Carlos E. Murillo-Sanchez and Deqiang Gan of PSERC 1 at Cornell University under the direction of Robert J. Thomas. The initial need for Matlab -based power ow and optimal powerow code was born out of the computational requirements of the PowerWeb project 2.Many others have contributed to Matpower over the years and it continues to bedeveloped 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 GNUGeneral Public License (GPL) [ 1] with an exception added to clarify our intentionto allow Matpower to interface with Matlab as well as any other Matlab codeor MEX-les a user may have installed, regardless of their licensing terms. The full

    text of the GPL can be found in the COPYINGle at the top level of the distributionor at http://www.gnu.org/licenses/gpl-3.0.txt .The text of the license notice that appears with the copyright in each of the code

    les reads:1 http://www.pserc.cornell.edu/2 http://www.pserc.cornell.edu/powerweb/

    7

    http://www.pserc.cornell.edu/matpower/http://www.gnu.org/licenses/gpl-3.0.txthttp://www.pserc.cornell.edu/http://www.pserc.cornell.edu/powerweb/http://www.pserc.cornell.edu/powerweb/http://www.pserc.cornell.edu/http://www.gnu.org/licenses/gpl-3.0.txthttp://www.pserc.cornell.edu/matpower/
  • 8/8/2019 Manual Mat Power 2010

    8/105

    MATPOWER is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published

    by the Free Software Foundation, either version 3 of the License,or (at your option) any later version.

    MATPOWER is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.

    You should have received a copy of the GNU General Public Licensealong with MATPOWER. If not, see .

    Additional permission under GNU GPL version 3 section 7

    If you modify MATPOWER, or any covered work, to interface withother modules (such as MATLAB code and MEX-files) available in aMATLAB(R) or comparable environment containing parts coveredunder other licensing terms, the licensors of MATPOWER grantyou additional permission to convey the resulting work.

    Please note that the Matpower case les distributed with Matpower are notcovered by the GPL. In most cases, the data has either been included with permissionor 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 derivedfrom the use of Matpower explicitly acknowledge that fact by citing reference [ 10]3.

    R. D. Zimmerman, C. E. Murillo-S anchez, and R. J. Thomas, Matpower s Exten-sible Optimal Power Flow Architecture, Power and Energy Society General Meeting,2009 IEEE , pp. 17, July 2630 2009.

    3 This will be changed to [ 2] as soon as it is published.

    8

  • 8/8/2019 Manual Mat Power 2010

    9/105

    2 Getting Started

    2.1 System Requirements

    To use Matpower 4.0b4 you will need: Matlab version 6.5 or later 4, or

    GNU Octave version 3.2 or later 5

    For the hardware requirements, please refer to the system requirements for theversion of Matlab 6 or Octave that you are using. If the Matlab OptimizationToolbox is installed as well, Matpower enables an option to use it to solve optimalpower ow 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 packageshave 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 page7. Youshould end up with a le named matpowerXXX.zip , where XXXdepends on

    the version of Matpower .Step 2: Unzip the downloaded le. Move the resulting matpowerXXX directory to the

    location of your choice. These les should not need to be modied, so it isrecommended that they be kept separate from your own code. We will use$ MATPOWERto denote the path to this directory.

    4 Matlab is available from The MathWorks, Inc. ( http://www.mathworks.com/ ). Thoughsome 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 andearlier required only Matlab 4. Matlab is a registered trademark of The MathWorks, Inc.

    5 GNU Octave is free software, available online at http://www.gnu.org/software/octave/ .Matpower

    4.0b4 may work on earlier versions of Octave, but has not been tested on versionsprior to 3.2.3.6 http://www.mathworks.com/support/sysreq/previous_releases.html7 http://www.pserc.cornell.edu/matpower/

    9

    http://www.mathworks.com/http://www.gnu.org/software/octave/http://www.gnu.org/software/octave/http://www.mathworks.com/support/sysreq/previous_releases.htmlhttp://www.pserc.cornell.edu/matpower/http://www.pserc.cornell.edu/matpower/http://www.mathworks.com/support/sysreq/previous_releases.htmlhttp://www.gnu.org/software/octave/http://www.mathworks.com/
  • 8/8/2019 Manual Mat Power 2010

    10/105

    Step 3: Add the following directories to your Matlab path:

    $ MATPOWER core Matpower functions $

    MATPOWER/t test scripts forMatpower

    (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 verifythat Matpower is properly installed and functioning. The result shouldresemble the following, possibly including extra tests, depending on theavailablility of optional packages, solvers and extras.

    >> test_matpowert_loadcase..........okt_ext2int2ext.......okt_jacobian..........okt_hessian...........okt_hasPQcap..........okt_mips..............okt_qps_matpower......ok (35 of 140 skipped)t_pf................okt_opf_fmincon.......okt_opf_mips..........okt_opf_mips_sc.......okt_opf_dc_ot.........okt_opf_dc_mips.......okt_opf_dc_mips_sc....okt_opf_userfcns......okt_runopf_w_res......okt_makePTDF..........okt_makeLODF..........okt_total_load........okt_scale_load........okAll tests successful (1374 passed, 35 skipped of 1409)Elapsed time 4.82 seconds.

    2.3 Running a Simulation

    The primary functionality of Matpower is to solve power ow and optimal powerow (OPF) problems. This involves (1) preparing the input data dening the all of the relevant power system parameters, (2) invoking the function to run the simulation

    10

  • 8/8/2019 Manual Mat Power 2010

    11/105

    and (3) viewing and accessing the results that are printed to the screen and/or savedin output data structures or les.

    2.3.1 Preparing Case Input DataThe input data for the case to be simulated are specied in a set of data matricespackaged as the elds of a Matlab struct, referred to as a Matpower case structand conventionally denoted by the variable mpc. This struct is typically dened ina case le, either a function M-le whose return value is the mpc struct or a MAT-le that denes a variable named mpc when loaded8. The main simulation routines,whose names begin with run (e.g. runpf , runopf ), accept either a le name or aMatpower case struct as an input.

    Use loadcase to load the data from a case le into a struct if you want to makemodications to the data before passing it to the simulation.

    >> mpc = loadcase(casefilename);

    See also savecase for writing a Matpower case struct to a case le.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 timevia the command help caseformat . The Matpower distribution also includes manyexample case les 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 runpfor runopf , passing in a case le name or a case struct as the rst argument. Forexample, to run a simple Newton power ow with default options on the 9-bus systemdened in case9.m , at the Matlab prompt, type:

    >> 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 powerow with default options, this could be accomplished as follows:

    8

    This describes version 2 of the Matpower case format, which is used internally and is thedefault. The version 1 format, now deprecated, but still accessible via the loadcase and savecasefunctions, denes the data matrices as individual variables rather than elds of a struct, and somedo not include all of the columns dened in version 2.

    11

  • 8/8/2019 Manual Mat Power 2010

    12/105

    >> define_constants;>> mpc = loadcase( ' case30 ' );>> mpc.bus(2, PD) = 30;

    >> runopf(mpc);

    The define constants in the rst line is simply a convenience script that denes anumber of variables to serve as named column indices for the data matrices. In thisexample, it allows us to access the real power demand column of the bus matrixusing the name PD without having to remember that it is the 3 rd column.

    Other top-level simulation functions are available for running DC versions of power ow and OPF, for running an OPF with the option for Matpower to shutdown (decommit) expensive generators, etc. These functions are listed in Table D-2in Appendix D.

    2.3.3 Accessing the Results

    By default, the results of the simulation are pretty-printed to the screen, displayinga system summary, bus data, branch data and, for the OPF, binding constraintinformation. The bus data includes the voltage, angle and total generation and loadat each bus. It also includes nodal prices in the case of the OPF. The branch datashows the ows and losses in each branch. These pretty-printed results can be savedto a le by providing a lename as the optional 3 rd argument to the simulationfunction.

    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 Matpowercase struct mpc, with additional columns added to some of the existing data eldsand additional elds. The following example shows how simple it is, after running aDC OPF on the 118-bus system in case118.m , to access the nal objective functionvalue, the real power output of generator 6 and the power ow in branch 51.

    >> define_constants;>> results = rundcopf( ' case118 ' );>> final_objective = results.f;>> gen6_output = results.gen(6, PG);>> branch51_flow = results.branch(51, PF);

    Full documentation for the content of the results struct can be found in Sec-tions 4.3 and 5.6.

    12

  • 8/8/2019 Manual Mat Power 2010

    13/105

    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 Matpoweroptions vector. The elements of the vector have names that can be used to set thecorresponding value via the mpoption function. Calling mpoption with no argumentsreturns the default options vector, the vector used if none is explicitly supplied.Calling it with a set of name and value pairs modies the default vector.

    For example, the following code runs a power ow on the 300-bus example incase300.m using the fast-decoupled (XB version) algorithm, with verbose printing of the algorithm progress, but suppressing all of the pretty-printed output.

    >> mpopt = mpoption( ' PF_ALG' , 2, ' VERBOSE' , 2, ' OUT_ALL' , 0);>> results = runpf( ' case300 ' , mpopt);

    To modify an existing options vector, for example, to turn the verbose option off and re-run with the remaining options unchanged, simply pass the existing optionsas the rst argument to mpoption .

    >> mpopt = mpoption(mpopt, ' VERBOSE' , 0);>> results = runpf( ' case300 ' , mpopt);

    See Appendix C or type:

    >> help mpoption

    for more information on Matpower s options.

    2.4 Documentation

    There are two primary sources of documentation for Matpower . The rst is thismanual, which gives an overview of Matpower s capabilities and structure anddescribes the modeling and formulations behind the code. It can be found in yourMatpower 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 orM-le to get help on that particular function. Nearly all of Matpower s M-leshave such documentation and this should be considered the main reference for the

    13

  • 8/8/2019 Manual Mat Power 2010

    14/105

    calling options for each individual function. See Appendix D for a list of Matpowerfunctions.

    As an example, the help for runopf looks like:

    14

  • 8/8/2019 Manual Mat Power 2010

    15/105

    >> help runopfRUNOPF Runs an optimal power flow.

    [RESULTS, SUCCESS] = RUNOPF(CASEDATA, MPOPT, FNAME, SOLVEDCASE)

    Runs an optimal power flow (AC OPF by default), optionally returninga RESULTS struct and SUCCESS flag.

    Inputs (all are optional):CASEDATA : either a MATPOWER case struct or a string containing

    the name of the file with the case data (default is ' case9 ' )(see also CASEFORMAT and LOADCASE)

    MPOPT : MATPOWER options vector to override default optionscan be used to specify the solution algorithm, output optionstermination tolerances, and more (see also MPOPTION).

    FNAME : name of a file to which the pretty-printed output willbe appended

    SOLVEDCASE : name of file to which the solved case will be savedin MATPOWER case format (M-file will be assumed unless thespecified 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 internal data conversionet - elapsed time in secondssuccess - success flag, 1 = succeeded, 0 = failed(additional OPF fields, see OPF for details)

    SUCCESS : the success flag can additionally be returned asa 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 ' );

    See also RUNDCOPF, RUNUOPF. 15

  • 8/8/2019 Manual Mat Power 2010

    16/105

    3 ModelingMatpower employs all of the standard steady state models typically used for powerow analysis. The AC models are described rst, then the simplied DC models. In-ternally, the magnitudes of all values are expressed in per unit and angles of complexquantities are expressed in radians. Internally, all off-line generators and branchesare removed before forming the models used to solve the power ow or optimal powerow problem. All buses are numbered consecutively, beginning at 1, and generatorsare reordered by bus number. Conversions to and from this internal indexing is doneby 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 branchesassumed 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 herein matrix and vector form.

    3.1 Data Formats

    The data les used by Matpower are Matlab M-les or MAT-les which deneand return a single Matlab struct. The M-le format is plain text that can be editedusing any standard text editor. The elds of the struct are baseMVA, bus , branch , genand optionally gencost , where baseMVA is a scalar and the rest are matrices. In thematrices, each row corresponds to a single bus, branch, or generator. The columnsare similar to the columns in the standard IEEE CDF and PTI formats. The numberof rows in bus , branch and gen are nb, n l and ng , respectively. If present, gencosthas either ng or 2ng rows, depending on whether it includes costs for reactive poweror just real power. Full details of the Matpower case format are documentedin Appendix B and can be accessed from the Matlab command line by typinghelp caseformat .

    3.2 Branches

    All transmission lines, transformers and phase shifters are modeled with a com-mon branch model, consisting of a standard transmission line model, with seriesimpedance zs = r s + jx s and total charging capacitance bc, in series with an idealphase shifting transformer. The transformer, whose tap ratio has magnitude andphase shift angle

    shift, is located at the from end of the branch, as shown in Fig-

    ure 3-1. The parameters r s , xs , bc, and shift are specied directly in columns 3, 4,5, 9 and 10, respectively, of the corresponding row of the branch matrix.

    16

  • 8/8/2019 Manual Mat Power 2010

    17/105

    The complex current injections if and it at the from and to ends of the branch,respectively, can be expressed in terms of the 2 2 branch admittance matrix Y brand the respective terminal voltages vf and vt ,

    if i t

    = Y brvf vt

    (3.1)

    With the series admittance element in the model denoted by ys = 1 /z s , the branchadmittance matrix can be written

    Y br =ys + j bc2

    1 2 ys

    1e j shift

    ys 1e j shift ys + jbc2

    (3.2)

    Figure 3-1: Branch Model

    If the four elements of this matrix for branch i are labeled as follows,

    Y ibr =yiff yif tyitf yitt

    (3.3)

    then four n l 1 vectors Y ff , Y f t , Y tf and Y tt can be constructed, where the i-th elementof each comes from the corresponding element of Y ibr . Furthermore, the n l nb sparseconnection matrices C f and C t used in building the system admittance matrices canbe dened as follows. The (i, j )th element of C f and the ( i, k )th element of C t are

    equal to 1 for each branch i, where branch i connects from bus j to bus k. All otherelements of C f and C t are zero.

    17

  • 8/8/2019 Manual Mat Power 2010

    18/105

    3.3 Generators

    A generator is modeled as a complex power injection at a specic bus. For generator i,the injection is

    s ig = pig + jq ig (3.4)Let S g = P g + jQ g be the ng 1 vector of these generator injections. The MW andMVAr equivalents (before conversion to p.u.) of pig and qig are specied in columns 2and 3, respectively of row i of the gen matrix. A sparse nb ng generator connectionmatrix C g can be dened such that its ( i, j )th element is 1 if generator j is locatedat bus i and 0 otherwise. The nb 1 vector of all bus injections from generators canthen be expressed as

    S g,bus = C g S g (3.5)

    3.4 LoadsConstant power loads are modeled as a specied quantity of real and reactive powerconsumed at a bus. For bus i, the load is

    s id = pid + jq

    id (3.6)

    and S d = P d + jQ d denotes the nb 1 vector of complex loads at all buses. TheMW and MVAr equivalents (before conversion to p.u.) of pid and qid are specied incolumns 3 and 4, respectively of row i 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 describedbelow. Dispatchable loads are modeled as negative generators and appear as negativevalues in S g .

    3.5 Shunt Elements

    A shunt connected element such as a capacitor or inductor is modeled as a xedimpedance to ground at a bus. The admittance of the shunt element at bus i is givenas

    yish = gish + jb

    ish (3.7)

    and Y sh = Gsh + jB sh denotes the nb 1 vector of shunt admittances at all buses.The parameters gish and bish are specied in columns 5 and 6, respectively, of row iof the bus matrix as equivalent MW (consumed) and MVAr (injected) at a nominalvoltage magnitude of 1.0 p.u and angle of zero.

    18

  • 8/8/2019 Manual Mat Power 2010

    19/105

    3.6 Network Equations

    For a network with nb buses, all constant impedance elements of the model areincorporated into a complex nb nb bus admittance matrix Y bus that relates thecomplex nodal current injections I bus to the complex node voltages V .

    I bus = Y bus V (3.8)

    Similarly, for a network with n l branches, the n l nb system branch admittancematrices Y f and Y t relate the bus voltages to the n l 1 vectors I f and I t of branchcurrents at the from and to ends of all branches, respectively.

    I f = Y f V (3.9)I t = Y t V (3.10)

    If [ ] is used to denote an operator that takes an n 1 vector and creates thecorresponding n n diagonal matrix with the vector elements on the diagonal, thesesystem admittance matrices can be formed as follows.

    Y f = [Y ff ]C f + [Y f t ]C t (3.11)Y t = [Y tf ]C f + [Y tt ]C t (3.12)

    Y bus = C f T Y f + C t

    T Y t + [Y sh ] (3.13)

    The current injections of ( 3.8)(3.10) can be used to compute the correspondingcomplex power injections as functions of the complex bus voltages V .

    S bus (V ) = [V ] I bus = [V ]Y bus V (3.14)S f (V ) = [C f V ]I f = [C f V ]Y f V (3.15)S t (V ) = [C t V ]I t = [C t V ]Y t V (3.16)

    The nodal bus injections are then matched to the injections from loads and generatorsto form the AC nodal power balance equations, expressed as a function of the complexbus voltages and generator injections in complex matrix form as

    gS (V, S g) = S bus (V ) + S d C gS g = 0 . (3.17)

    3.7 DC ModelingThe DC formulation [ 8] is based on the same parameters, but with the followingthree additional simplifying assumptions:

    19

  • 8/8/2019 Manual Mat Power 2010

    20/105

    Branches can be considered lossless. In particular, branch resistances r s andcharging capacitances bc are negligible.

    ys =

    1

    r s + jx s 1

    jx s , bc 0 (3.18)

    All bus voltage magnitudes are close to 1 p.u.

    vi e j i (3.19)

    Voltage angle differences across branches are small enough that

    sin(f t shift ) f t shift . (3.20)

    Substituting the rst set of assumptions regarding branch parameters from ( 3.18),

    the branch admittance matrix in ( 3.2) approximates to

    Y br 1

    jx s

    1 2

    1e j shift

    1e j shift 1(3.21)

    Combining this and the second assumption with ( 3.1) yields the following approxi-mation for if .

    if 1

    jx s(

    1 2

    e j f 1

    e j shifte j t )

    =1

    jx s (

    1

    e j f e j (t + shift )) (3.22)

    The approximate power ow is then derived as follows

    s f = pf + jq f = vf if

    e j f j

    xs (1

    e j f e j (t + shift ))

    =j

    xs 1

    e j (f t shift )

    =1

    xs sin(f t shift )

    + j1

    cos(f t shift ) (3.23)

    20

  • 8/8/2019 Manual Mat Power 2010

    21/105

    Finally, extracting the real part and applying the last of the DC modeling assump-tions from (3.20) yields

    pf 1

    xs

    (f t shift ) (3.24)

    As expected, given the lossless assumption, a similar derivation for pt leads to pt = pf .

    The relationship between the real power ows and voltage angles for an individualbranch i can then be summarized as

    pf pt

    = B ibrf t

    + P ishift (3.25)

    where B ibr =bi bi

    bi bi, P ishift = ishift

    bibi

    and bi is dened in terms of the

    series reactance and tap ratio for that branch as bi =1

    x is i .For a shunt element at bus i, the amount of complex power consumed is

    s ish = vi (yish vi )

    e j i (gish jbish )e

    j i

    = gish jbish (3.26)

    So the vector of real power consumed by shunt elements at all buses can be approx-imated by

    P sh Gsh (3.27)

    With a DC model, the linear network equations relate real power to bus voltageangles, versus complex currents to complex bus voltages in the AC case. Let then l 1 vector B ff be constructed similar to Y ff , where the i-th element is bi and letP f, shift be the n l 1 vector whose i-th element is equal to ishift bi . Then the nodalreal power injections can be expressed as a linear function of , the nb 1 vector of bus voltage angles

    P bus () = Bbus + P bus ,shift (3.28)

    whereP bus ,shift = ( C f C t )

    T P f, shift (3.29)

    Similarly, the branch ows at the from ends of each branch are linear functions of the bus voltage angles

    P f () = B f + P f, shift (3.30)

    21

  • 8/8/2019 Manual Mat Power 2010

    22/105

    and, due to the lossless assumption, the ows at the to ends are given by P t = P f .The construction of the system B matrices is analogous to the system Y matricesfor the AC model.

    B f = [B ff ] (C f C t ) (3.31)

    Bbus = ( C f C t )T B f (3.32)

    The DC nodal power balance equations for the system can be expressed in matrixform as

    gP (, P g) = Bbus + P bus ,shift + P d + Gsh C gP g = 0 (3.33)

    22

  • 8/8/2019 Manual Mat Power 2010

    23/105

    4 Power Flow

    The standard power ow or loadow problem involves solving for the set of voltagesand ows in a network corresponding to a specied pattern of load and generation.Matpower includes solvers for both AC and DC power ow 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 functionsof unknown voltage quantities.

    All of Matpower s solvers exploit the sparsity of the problem and, except forGauss-Seidel, scale well to very large systems. Currently, none of them include anyautomatic updating of transformer taps or other techniques to attempt to satisfytypical optimal power ow constraints, such as generator, voltage or branch owlimits.

    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 classied as PV buses, with the values of voltagemagnitude and generator real power injection given. Since the loads P d and Qd are

    also given, all non-generator buses are PQ buses, with real and reactive injectionsfully specied. Let I ref , I PV and I PQ denote the sets of bus indices of the referencebus, PV buses and PQ buses, respectively.

    In the traditional formulation of the AC power ow problem, the power balanceequation in ( 3.17) is split into its real and reactive components, expressed as functionsof the voltage angles and magnitudes V m and generator injections P g and Qg , wherethe load injections are assumed constant and given.

    gP (, V m , P g) = P bus (, V m ) + P d C gP g = 0 (4.2)gQ (, V m , Qg) = Qbus (, V m ) + Qd C gQg = 0 (4.3)

    For the AC power ow problem, the function g(x) from (4.1) is formed by takingthe left hand side of the real power balance equations ( 4.2) for all non-slack buses

    23

  • 8/8/2019 Manual Mat Power 2010

    24/105

    and the reactive power balance equations ( 4.3) for all PQ buses and plugging in thereference angle, the loads and the known generator injections and voltage magnitudes.

    g(x) =g{i}

    P (, V

    m, P

    g)

    g{ j }Q (, V m , Qg) i I PV I PQ j I PQ (4.4)

    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.

    x ={i}v{ j }m

    i / I ref j I PQ

    (4.5)

    This yields a system of non-linear equations with n pv + 2 n pq equations and un-knowns, where n pv and n pq are the number of PV and PQ buses, respectively. After

    solving for x, the remaining real power balance equation can be used to computethe generator real power injection at the slack bus. Similarly, the remaining n pv + 1reactive power balance equations yield the generator reactive power injections.

    Matpower includes four different algorithms for solving the AC power owproblem. The default solver is based on a standard Newtons method [ 4] using apolar form and a full Jacobian updated at each iteration. Each Newton step involvescomputing 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 factorizingthis Jacobian. This method is described in detail in many textbooks.

    Also included are solvers based on variations of the fast-decoupled method [5],specically, the XB and BX methods described in [ 6]. These solvers greatly reduce

    the amount of computation per iteration, by updating the voltage magnitudes andangles separately based on constant approximate Jacobians which are factored onlyonce 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 andStagg [7]. It has numerous disadvantages relative to the Newton method and isincluded primarily for academic interest.

    By default, the AC power ow solvers simply solve the problem described above,ignoring any generator limits, branch ow limits, voltage magnitude limits, etc. How-ever, there is an option ( ENFORCE Q LIMS) that allows for the generator reactive powerlimits to be respected at the expense of the voltage setpoint. This is done in a ratherbrute force fashion by adding an outer loop around the AC power ow solution. If any generator has a violated reactive power limit, its reactive injection is xed atthe limit, the corresponding bus is converted to a PQ bus and the power ow is

    24

  • 8/8/2019 Manual Mat Power 2010

    25/105

    solved again. This procedure is repeated until there are no more violations. Notethat this option is based solely on the QMINand QMAXparameters for the generatorand 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 ow problem [8], the vector x consists of the set of voltage anglesat non-reference buses

    x = {i} , i / I ref (4.6)

    and equation ( 4.1) takes the form

    Bdc x P dc = 0 (4.7)

    where Bdc is the (nb 1) (nb 1) matrix obtained by simply eliminating from Bbusthe row and column corresponding to the slack bus and reference angle, respectively.Given that the generator injections P g are specied at all but the slack bus, P dc canbe formed directly from the last four terms of the non-slack rows of ( 3.33).

    The voltage angles in x are computed by a direct solution of the set of linearequations. The branch ows and slack bus generator injection are then calculateddirectly from the bus voltage angles via ( 3.30) and the appropriate row in ( 3.33),respectively.

    4.3 runpf

    In Matpower , a power ow is executed by calling runpf with a case struct or casele name as the rst argument ( casedata ). In addition to printing output to thescreen, which it does by default, runpf optionally returns the solution in a resultsstruct.

    >> results = runpf(casedata);

    The results struct is a superset of the input Matpower case struct mpc, with someadditional elds as well as additional columns in some of the existing data elds.The solution values are stored as shown in Table 4-1.

    Additional optional input arguments can be used to set options ( mpopt ) andprovide le names for saving the pretty printed output ( fname ) or the solved casedata ( solvedcase ).

    25

  • 8/8/2019 Manual Mat Power 2010

    26/105

    Table 4-1: Power Flow Results

    name description

    results.success success ag, 1 = succeeded, 0 = failed

    results.et computation time required for solutionresults.order see ext2int help for details on this eldresults.bus(:, VM) bus voltage magnitudesresults.bus(:, VA) bus voltage anglesresults.gen(:, PG) generator real power injectionsresults.gen(:, QG) generator reactive power injectionsresults.branch(:, PF) real power injected into from end of branchresults.branch(:, PT) real power injected into to end of branchresults.branch(:, QF) reactive power injected into from end of branchresults.branch(:, QT) reactive power injected into to end of branch AC power ow only.

    >> results = runpf(casedata, mpopt, fname, solvedcase);

    The options that control the power ow simulation are listed in Table 4-2 and thosecontrolling the output printed to the screen in Table 4-3.

    By default, runpf solves an AC power ow problem using a standard Newtonsmethod solver. To run a DC power ow, the PF DC option must be set to 1. Forconvenience, Matpower provides a function rundcpf which is simply a wrapperthat sets PF DCbefore calling runpf .

    Internally, the runpf function does a number of conversions to the problem data

    before calling the appropriate solver routine for the selected power ow 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-serviceequipment, the consecutive renumbering of buses and the reordering of generatorsby increasing bus number. All computations are done using this internal indexing.When the simulation has completed, the data is converted back to external formatby int2ext before the results are printed and returned.

    4.4 Linear Shift Factors

    The DC power ow model can also be used to compute the sensitivities of branch

    ows to changes in nodal real power injections, sometimes called injection shift factors(ISF) or generation shift factors [ 8]. These n l nb sensitivity matrices, also calledpower transfer distribution factors or PTDFs, carry an implicit assumption about

    26

  • 8/8/2019 Manual Mat Power 2010

    27/105

    Table 4-2: Power Flow Options

    idx name default description

    1 PF ALG 1 AC power ow algorithm:

    1 Newtonss method2 Fast-Decoupled (XB version)3 Fast-Decouple (BX version)4 Gauss-Seidel

    2 PF TOL 10 8 termination tolerance on per unit P and Q dispatch3 PF MAX IT 10 maximum number of iterations for Newtons method4 PF MAX IT FD 30 maximum number of iterations for fast decoupled method5 PF MAX IT GS 1000 maximum number of iterations for Gauss-Seidel method6 ENFORCE Q LIMS 0 enforce gen reactive power limits at expense of |V m |

    0 do not enforce limits1 enforce limits, simultaneous bus type conversion2 enforce limits, one-at-a-time bus type conversion

    10 PF DC 0 DC modeling for power ow and OPF formulation0 use AC formulation and corresponding alg options1 use DC formulation and corresponding alg options

    Table 4-3: Power Flow Output Options

    idx name default description

    31 VERBOSE 1 amount of progress info to be printed0 print no progress info1 print a little progress info2 print a lot progress info3 print all progress info

    32 OUT ALL -1 controls pretty-printing of results

    -1 individual ags control what is printed0 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 ags.

    the slack distribution. If H is used to denote a PTDF matrix, then the element in

    row i and column j , h ij , represents the change in the real power ow in branch igiven a unit increase in the power injected at bus j , with the assumption that the

    27

  • 8/8/2019 Manual Mat Power 2010

    28/105

    additional unit of power is extracted according to some specied slack distribution.

    P f = H P bus (4.8)

    This slack distribution can be expressed as an nb 1 vector w of non-negativeweights whose elements sum to 1. Each element species the proportion of the slacktaken up at each bus. For the special case of a single slack bus k, w is equal to thevector ek . The corresponding PTDF matrix H k can be constructed by rst creatingthe n l (nb 1) matrix

    H k = B f B 1dc (4.9)

    then inserting a column of zeros at column k. Here B f and Bdc are obtained from B f and Bbus , respectively, by eliminating their reference bus columns and, in the caseof Bdc , removing row k corresponding to the slack bus.

    The PTDF matrix H w , corresponding to a general slack distribution w, can beobtained from any other PTDF, such as H k , by subtracting w from each column,equivalent to the following simple matrix multiplication

    H w = H k (I w 1T ) (4.10)

    These same linear shift factors may also be used to compute sensitivities of branchows to branch outages, known as line outage distribution factors or LODFs [9].Given a PTDF matrix H w , the corresponding n l n l LODF matrix L can be con-structed as follows, where lij is the element in row i and column j , representing thechange in ow in branch i (as a fraction of its initial ow) for an outage of branch j .

    First, let H represent the matrix of sensitivities of branch ows to branch ows,found by multplying the PTDF matrix by the node-branch incidence matrix.

    H = H w (C f C t )T (4.11)

    If h ij is the sensitivity of ow in branch i with respect to ow in branch j , then lijcan be expressed as

    lij =hij

    1 h jji = j

    1 i = j(4.12)

    Matpower includes functions for computing both the DC PTDF matrix and

    the corresponding LODF matrix for either a single slack bus k or a general slackdistribution vector w. See the help for makePTDF and makeLODFfor details.

    28

  • 8/8/2019 Manual Mat Power 2010

    29/105

    5 Optimal Power FlowMatpower includes code to solve both AC and DC versions of the optimal powerow problem. The standard version of each takes the following form.

    minx

    f (x) (5.1)

    subject to

    g(x) = 0 (5.2)h(x) 0 (5.3)

    xmin x xmax (5.4)

    5.1 Standard AC OPF

    The optimization vector x for the standard AC OPF problem consists of the nb 1vectors of voltage angles and magnitudes V m and the ng 1 vectors of generatorreal and reactive power injections P g and Qg .

    x =

    V mP gQg

    (5.5)

    The objective function ( 5.1) is simply a summation of individual polynomial cost

    functions f iP and f

    iQ of real and reactive power injections, respectively, for eachgenerator.

    min ,V m ,P g ,Q g

    n g

    i=1

    f iP ( pig) + f

    iQ (q

    ig) (5.6)

    The equality constraints in ( 5.2) are simply the full set of 2 nb non-linear real andreactive power balance equations from ( 4.2) and (4.3). The inequality constraints(5.3) consist of two sets of n l branch ow limits as non-linear functions of the busvoltage angles and magnitudes, one for the from end and one for the to end of eachbranch.

    hf (, V m ) = |F f (, V m )| F max 0 (5.7)h t (, V m ) = |F t (, V m )| F max 0 (5.8)

    29

  • 8/8/2019 Manual Mat Power 2010

    30/105

    The ows are typically apparent power ows expressed in MVA, but can be real poweror current ows, yielding the following three possible forms for the ow constraints

    F f (, V m ) =S f (, V m ), apparent powerP f (, V m ), real powerI f (, V m ), current

    (5.9)

    where I f is dened in (3.9), S f in (3.15), P f = {S f } and the vector of ow limitsF max has the appropriate units for the type of constraint. Likewise for F t (, V m ).

    The variable limits ( 5.4) include an equality constraint on any reference bus angleand upper and lower limits on all bus voltage magnitudes and real and reactivegenerator injections.

    ref i i ref i , i I ref (5.10)

    vi, minm v

    im v

    i, maxm , i = 1 . . . n b (5.11) pi, ming pig pi, maxg , i = 1 . . . n g (5.12)

    qi, ming qig qi, maxg , i = 1 . . . n g (5.13)

    5.2 Standard DC OPF

    When using DC network modeling assumptions and limiting polynomial costs tosecond order, the standard OPF problem above can be simplied to a quadraticprogram, with linear constraints and a quadratic cost function. In this case, thevoltage magnitudes and reactive powers are eliminated from the problem completelyand real power ows are modeled as linear functions of the voltage angles. Theoptimization variable is

    x = P g(5.14)

    and the overall problem reduces to the following form.

    min ,P g

    n g

    i=1

    f iP ( pig) (5.15)

    subject togP (, P g) = Bbus + P bus ,shift + P d + Gsh C gP g = 0 (5.16)

    hf () = B f + P f, shift F max 0 (5.17)h t () = B f P f, shift F max 0 (5.18)

    30

  • 8/8/2019 Manual Mat Power 2010

    31/105

    ref i i ref i , i I ref (5.19) pi, ming pig pi, maxg , i = 1 . . . n g (5.20)

    5.3 Extended OPF FormulationMatpower employs an extensible OPF structure [ 10] to allow the user to modifyor augment the problem formulation without rewriting the portions that are sharedwith the standard OPF formulation. This is done through optional input parame-ters, preserving the ability to use pre-compiled solvers. The standard formulation ismodied by introducing additional optional user-dened costs f u , constraints, andvariables z and can be written in the following form.

    minx,z

    f (x) + f u (x, z ) (5.21)

    subject tog(x) = 0 (5.22)h(x) 0 (5.23)

    xmin x xmax (5.24)

    l A xz u (5.25)

    zmin z zmax (5.26)

    Section 6 describes the mechanisms available to the user for taking advantage of

    the extensible formulation described here.

    5.3.1 User-dened Costs

    The user-dened cost function f u is specied in terms of parameters H , C , N , r , k,d and m. All of the parameters are nw 1 vectors except the symmetric nw nwmatrix H and the nw (nx + nz ) matrix N . The cost takes the form

    f u (x, z ) =12

    wT Hw + C T w (5.27)

    where w is dened in several steps as follows. First, a new vector u is created by

    applying a linear transformation N and shift r to the full set of optimization variables

    r = N xz , (5.28)

    31

  • 8/8/2019 Manual Mat Power 2010

    32/105

    u = r r, (5.29)

    then a scaled function with a dead zone is applied to each element of u to producethe corresponding element of w.

    wi =m i f d i (ui + ki ), ui < ki

    0, ki ui kim if d i (ui ki ), ui > k i

    (5.30)

    Here ki species the size of the dead zone, m i is a simple scale factor and f d i isa pre-dened scalar function selected by the value of di . Currently, Matpowerimplements only linear and quadratic options

    f d i () =, if di = 1 2, if di = 2

    (5.31)

    as illustrated in Figure 5-1 and Figure 5-2, respectively.

    w i

    m i

    r i

    r i

    k i k i

    Figure 5-1: Relationship of wi to r i for di = 1 (linear option)

    This form for f u provides the exibility to handle a wide range of costs, fromsimple linear functions of the optimization variables to scaled quadratic penaltieson quantities, such as voltages, lying outside a desired range, to functions of linear

    32

  • 8/8/2019 Manual Mat Power 2010

    33/105

    w i

    r i

    r i

    k ik i

    Figure 5-2: Relationship of wi to r i for di = 2 (quadratic option)

    combinations of variables, inspired by the requirements of price coordination termsfound in the decomposition of large loosely coupled problems encountered in our ownresearch.

    Some limitations are imposed on the parameters in the case of the DC OPF sinceMatpower uses a generic quadratic programming (QP) solver for the optimization.In particular, ki = 0 and di = 1 for all i, so the dead zone is not considered andonly the linear option is available for f d i . As a result, for the DC case ( 5.30) simpliesto wi = m iu i .

    5.3.2 User-dened Constraints

    The user-dened constraints ( 5.25) are general linear restrictions involving all of theoptimization variables and are specied via matrix A and lower and upper boundvectors l and u. These parameters can be used to create equality constraints ( li = u i)or inequality constraints that are bounded below ( ui = ), bounded above ( li = )or bounded on both sides.

    5.3.3 User-dened Variables

    The creation of additional user-dened 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

  • 8/8/2019 Manual Mat Power 2010

    34/105

    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 andoffers in electricity markets. When such cost functions are convex, however, theycan 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 constraintsthat form a convex basin requiring the cost variable y to lie in the epigraph of thefunction c(x).

    Figure 5-3 illustrates a convex n-segment piecewise linear cost function

    c(x) =

    m1(x x1) + c1, x x1m2(x x2) + c2, x1 < x x2

    ......

    mn (x xn ) + cn , xn 1 < x

    (5.32)

    x

    x 0 x 1 x 2

    c

    c 0

    c 1

    c 2

    y

    c n

    x n

    Figure 5-3: Constrained Cost Variable

    34

  • 8/8/2019 Manual Mat Power 2010

    35/105

    dened by a sequence of points ( x j , c j ), j = 0 . . . n , where m j denotes the slope of the j -th segment,

    m j =c j c j 1x j x j 1

    , j = 1 . . . n (5.33)

    and x0 < x 1 < < x n and m1 m2 < m n .The basin corresponding to this cost function is formed by the following n

    constraints on the helper cost variable y.

    y m j (x x j ) + c j , j = 1 . . . n (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 anypiecewise 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 thestep-controlled primal/dual interior point method (SCPDIPM) and the trust regionbased augmented Lagrangian method (TRALM), both of which use a cost smoothingtechnique 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 specifyinga 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 benet function is

    shown in Figure 5-4. The demand pd of this load will be zero for prices above 1, p1for prices between 1 and 2, and p1 + p2 for prices below 2.

    This corresponds to a negative generator with the piecewise linear cost curveshown in Figure 5-5. Note that this approach assumes that the demand blocks canbe partially dispatched or split. Requiring blocks to be accepted or rejected intheir entirety would pose a mixed-integer problem that is beyond the scope of thecurrent Matpower implementation.

    With an AC network model, there is also the question of reactive dispatch forsuch loads. Typically the reactive injection for a generator is allowed to take on anyvalue within its dened limits. Since this is not normal load behavior, the model usedin Matpower assumes that dispatchable loads maintain a constant power factor.When formulating the AC OPF problem, Matpower will automatically generate

    35

  • 8/8/2019 Manual Mat Power 2010

    36/105

    (marginal benet)$/MW

    MW

    1

    2

    p 1

    p 2

    p (load)

    Figure 5-4: Marginal Benet or Bid Function

    MW

    2

    p 2

    1

    p 1

    p 1 p 2

    $

    p (injection)

    c (total cost)

    Figure 5-5: Total Cost Function for Negative Injection

    36

  • 8/8/2019 Manual Mat Power 2010

    37/105

    an additional equality constraint to enforce a constant power factor for any negativegenerator being used to model a dispatchable load.

    It should be noted that, with this denition of dispatchable loads as negative

    generators, if the negative cost corresponds to a benet for consumption, minimizingthe 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 generators real andreactive injections, specied as simple lower and upper bounds on p ( pmin and pmax )and q (qmin and qmax ). 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 standardbox constraints as illustrated in Figure 5-6, where the shaded portion represents the

    qmax1

    qmax2

    qmin2

    qmin1

    q min

    q max

    p max p min p 1 p 2

    q

    p

    Figure 5-6: Generator P -Q Capability Curve

    37

  • 8/8/2019 Manual Mat Power 2010

    38/105

    feasible operating region for the unit.The two sloped portions are constructed from the lines passing through the two

    pairs of points dened by the six parameters p1, qmin1 , qmax1 , p2, qmin2 , and qmax2 . If

    these six parameters are specied for a given generator,Matpower

    automaticallyconstructs the corresponding additional linear inequality constraints on p and q forthat 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 P maxand Q min or Q max components and added to the respective column ( MU PMAX, MU QMINor MU QMAX) in the kth row of gen .

    5.4.4 Branch Angle Difference Limits

    The difference between the bus voltage angle f at the from end of a branch and

    the angle t at the to end can be bounded above and below to act as a proxy fora transient stability limit, for example. If these limits are provided, Matpowercreates the corresponding constraints on the voltage angle variables.

    5.5 Solvers

    Early versions of Matpower relied on Matlab s Optimization Toolbox [ 13] toprovide 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 notscale well to larger networks. Eventually, optional packages with additional solverswere added to improve performance, typically relying on Matlab extension (MEX)les implemented in Fortran or C and pre-compiled for each machine architecture.Some of these MEX les are distributed as optional packages due to differencesin terms of use. For DC optimal power ow, there is a MEX build [ 14] of thehigh performance interior point BPMPD solver [15] for LP/QP problems. For theAC OPF problem, the MINOPF [16] and TSPOPF [ 11] packages provide solverssuitable for much larger systems. The former is based on MINOS [ 17] and the latterincludes the primal-dual interior point and trust region based augmented Lagrangianmethods described in [12]. Matpower version 4 and later also includes the optionto use the open-source Ipopt solver9 for solving both AC and DC OPFs, based onthe Matlab MEX interface to Ipopt 10 . See Appendix G for more details on theseoptional packages.

    9 Available from https://projects.coin-or.org/Ipopt/ .10 See https://projects.coin-or.org/Ipopt/wiki/MatlabInterface .

    38

    https://projects.coin-or.org/Ipopt/https://projects.coin-or.org/Ipopt/https://projects.coin-or.org/Ipopt/wiki/MatlabInterfacehttps://projects.coin-or.org/Ipopt/wiki/MatlabInterfacehttps://projects.coin-or.org/Ipopt/wiki/MatlabInterfacehttps://projects.coin-or.org/Ipopt/
  • 8/8/2019 Manual Mat Power 2010

    39/105

    Beginnning with version 4, Matpower also includes its own primal-dual interiorpoint 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 optionalpackages are installed, MIPS will be used by default for both the AC OPF and as theQP solver used by the DC OPF. The AC OPF solver also employs a unique techniquefor efficiently forming the required Hessians via a few simple matrix operations [18].This solver has application to general non-linear optimization problems outside of Matpower and can be called directly as mips . There is also a convenience wrapperfunction 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 ow is executed by calling runopf with a casestruct or case le name as the rst argument ( casedata ). In addition to printingoutput to the screen, which it does by default, runpf optionally returns the solutionin a results struct.

    >> results = runopf(casedata);

    The results struct is a superset of the input Matpower case struct mpc, withsome additional elds as well as additional columns in some of the existing dataelds. In addition to the solution values included in the results for a simple powerow, shown in Table 4-1 in Section 4.3, the following additional optimal power ow

    solution values are stored as shown in Table 5-1.Additional optional input arguments can be used to set options ( mpopt ) and

    provide le names for saving the pretty printed output ( fname ) or the solved casedata ( solvedcase ).

    >> results = runopf(casedata, mpopt, fname, solvedcase);

    Some of the main options that control the optimal power ow simulation are listed inTable 5-2. There are many other options that can be used to control the terminationcriteria and other behavior of the individual solvers. See Appendix C or the mpoptionhelp for details. As with runpf the output printed to the screen can be controlledby 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

  • 8/8/2019 Manual Mat Power 2010

    40/105

    Table 5-1: Optimal Power Flow Results

    name description

    results.f nal objective function value

    results.x nal value of optimization variables (internal order)results.om OPF model object results.bus(:, LAM P) Lagrange multiplier on real power mismatchresults.bus(:, LAM Q) Lagrange multiplier on reactive power mismatchresults.bus(:, MU VMAX) Kuhn-Tucker multiplier on upper voltage limitresults.bus(:, MU VMIN) Kuhn-Tucker multiplier on lower voltage limitresults.gen(:, MU PMAX) Kuhn-Tucker multiplier on upper P g limitresults.gen(:, MU PMIN) Kuhn-Tucker multiplier on lower P g limitresults.gen(:, MU QMAX) Kuhn-Tucker multiplier on upper Qg limitresults.gen(:, MU QMIN) Kuhn-Tucker multiplier on lower Qg limitresults.branch(:, MU SF) Kuhn-Tucker multiplier on ow limit at from busresults.branch(:, MU ST) Kuhn-Tucker multiplier on ow limit at to busresults.mu shadow prices of constraints

    results.g (optional) constraint valuesresults.dg (optional) constraint 1st derivativesresults.raw raw solver output in form returned by MINOS, and more results.var.val nal value of optimization variables, by named subset results.var.mu shadow prices on variable bounds, by named subset results.nln shadow prices on non-linear constraints, by named subset results.lin shadow prices on linear constraints, by named subset results.cost nal value of user-dened costs, by named subset

    See help for opf model for more details. See help for opf for more details.

    an option that can be used to force the AC OPF to return information about theconstraint values and Jacobian and the objective function gradient and Hessian.

    By default, runopf solves an AC optimal power ow problem using a primal dualinterior point method. To run a DC OPF, the PF DC option must be set to 1. Forconvenience, Matpower provides a function rundcopf which is simply a wrapperthat sets PF DCbefore calling runopf .

    Internally, the runopf function does a number of conversions to the problemdata 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-serviceequipment, 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 formatby int2ext before the results are printed and returned. In addition, both ext2int

    40

  • 8/8/2019 Manual Mat Power 2010

    41/105

    Table 5-2: Optimal Power Flow Options

    idx name default description

    11 OPF ALG 0 AC optimal power ow algorithm:

    0 choose default solver based on availability inthe following order: 540, 560

    300 constr , Matlab Opt Toolbox 1.x and 2.x320 dense successive LP340 sparse successive LP (relaxed)360 sparse successive LP (full)500 MINOPF, MINOS-based solver 520 fmincon , Matlab Opt Toolbox 2.x540 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 (pure Mat-lab )

    565 MIPS-sc, step-controlled variant of MIPS16 OPF VIOLATION 5 10 6 constraint violation tolerance24 OPF FLOW LIM 0 quantity to limit for branch ow constraints

    0 apparent power ow (limit in MVA)1 active power ow (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 specied1 ignore angle difference limits even if specied

    26 OPF ALG DC 0 DC optimal power ow algorithm:0 choose default solver based on availability in

    the following order: 540, 560100 BPMPD 200 MIPS, Matlab Interior Point Solver, pri-

    mal/dual interior point method (pure Mat-lab )

    250 MIPS-sc, step-controlled variant of MIPS300 Matlab Opt Toolbox, quadprog , linprog

    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/ .

    and int2ext can be customized via user-supplied callback routines to convert dataneeded by user-supplied variables, constraints or costs into internal indexing.

    41

    http://www.pserc.cornell.edu/minopf/http://www.pserc.cornell.edu/minopf/http://www.pserc.cornell.edu/tspopf/http://www.pserc.cornell.edu/tspopf/http://www.pserc.cornell.edu/bpmpd/http://www.pserc.cornell.edu/bpmpd/http://www.pserc.cornell.edu/bpmpd/http://www.pserc.cornell.edu/tspopf/http://www.pserc.cornell.edu/minopf/
  • 8/8/2019 Manual Mat Power 2010

    42/105

    Table 5-3: OPF Output Options

    idx name default description

    38 OUT ALL LIM -1 controls constraint info output-1 individual ags control what is printed0 do not print any constraint info 1 print only binding constraint info

    2 print all constraint info 39 OUT V LIM 1 control output of voltage limit info

    0 do not print1 print binding constraints only2 print all constraints

    40 OUT LINE LIM 1 control output of line ow limit info

    41 OUT PG LIM 1 control output of gen active power limit info

    42 OUT QG LIM 1 control output of gen reactive power limit info 52 RETURN RAW DER 0 for AC OPF, return constraint and derivative info in

    results.raw (in elds g, dg , df , d2f ) Overrides individual ags. Takes values of 0, 1 or 2 as for OUT V LIM.

    42

  • 8/8/2019 Manual Mat Power 2010

    43/105

    6 Extending the OPF

    The extended OPF formulation described in Section 5.3 allows the user to modify thestandard OPF formulation to include additional variables, costs and/or constraints.There are two primary mechanisms available for the user to accomplish this. The rstis by directly constructing the full parameters for the addional costs or constraintsand supplying them either as elds in the case struct or directly as arguments tothe opf function. The second, and more powerful, method is via a set of callbackfunctions that customize the OPF at various stages of the execution. Matpowerincludes two examples of using the latter method, one to add a xed zonal reserverequirement and another to implement interface ow limits.

    6.1 Direct Specication

    To add costs directly, the parameters H , C , N , r , k, d and m of (5.27)(5.31)described in Section 5.3.1 are specied as elds or arguments H, Cw, N and fparm ,repectively, where fparm is the nw 4 matrix

    f parm = d r k m . (6.1)

    When specifying additional costs, N and Cw are required, while H and fparm areoptional. The default value for H is a zero matrix, and the default for f parm is suchthat d and m are all ones and r and k are all zeros, resulting in simple linear cost,with no shift or dead-zone. N and H should be specied as sparse matrices.

    For additional constraints, the A, l and u parameters of ( 5.25) are specied as

    elds or arguments of the same names, A, l and u, respectively, where A is sparse.Additional variables are created implicitly based on the difference between thenumber of columns in A and the number nx of standard OPF variables. If A hasmore columns than x has elements, the extra columns are assumed to correspond toa new z variable. The initial value and lower and upper bounds for z can also bespecied in the optional elds or arguments, z0 , zl and zu , respectively.

    For a simple formulation extension 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 V mand Qg when running a DC OPF 11 , as well as code to reorder and eliminate columnsappropriately 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

    11 Only if they contain all zeros.

    43

  • 8/8/2019 Manual Mat Power 2010

    44/105

    to ensure that the columns match the ordering of the elements of the opimizationvectors x and z. All extra constraints and variables must be incorporated into asingle set of parameters that are constructed before calling the OPF. The bookkeep-

    ing needed to access the resulting variables and shadow prices on constraints andvariable bounds must be handled manually by the user outside of the OPF, alongwith any processing of additional input data and processing, printing or saving of the additional result data. Making further modications to a formulation that al-ready includes user-supplied costs, constraints or variables, requires that both setsbe incorporated into a new single consistent set of parameters.

    6.2 Callback Functions

    The second method, based on dening a set of callback functions, offers severaldistinct advantages, especially for more complex scenarios or for adding a feature

    for others to use, such as the zonal reserve requirement or the interface ow limitsmentioned previously. This approach makes it possible to:

    dene and access variable/constraint sets as individual named blocks

    dene constraints, costs only in terms of variables directly involved

    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 ow limits)

    Matpower denes ve stages in the execution of a simulation where customcode can be inserted to alter the behavior or data before proceeding to the nextstage. This custom code is dened as a set of callback functions that are regis-tered via add userfcn for Matpower to call automatically at one of the ve stages.Each stage has a name and, by convention, the name of a user-dened callback func-tion ends with the name of the corresponding stage. For example, a callback forthe formulation stage that modies the OPF problem formulation to add reserverequirements could be registered with the following line of code.

    mpc = add_userfcn(mpc, ' formulation ' , @userfcn_reserves_formulation);

    44

  • 8/8/2019 Manual Mat Power 2010

    45/105

    The sections below will describe each stage and the input and output argumentsfor the corresponding callback function, which vary depending on the stage. Anexample that employs additional variables, constraints and costs will be used for

    illustration.Consider the problem of jointly optimizing the allocation of both energy andreserves, where the reserve requirements are dened as a set of n rz xed zonal MWquantities. Let Z k be the set of generators in zone k and Rk be the MW reserverequirement for zone k. A new set of variables r are introduced representing thereserves provided by each generator. The value r i , for generator i, must be non-negative and is limited above by a user-provided upper bound r maxi (e.g. a reserveoffer quantity) as well as the physical ramp rate i .

    0 r i min(r maxi , i ), i = 1 . . . n g (6.2)

    If the vector c contains the marginal cost of reserves for each generator, the userdened cost term from ( 5.21) is simply

    f u (x, z ) = cT r. (6.3)

    There are two additional sets of constraints needed. The rst ensures that, foreach generator, the total amount of energy plus reserve provided does not exceed thecapacity of the unit.

    pig + r i pi, maxg , i = 1 . . . n g (6.4)

    The second requires that the sum of the reserve allocated within each zone k meetsthe stated requirements.

    iZ k

    r i Rk , k = 1 . . . n rz (6.5)

    Table 6-1 describes some of the variables and names that are used in the examplecallback function listings in the sections below.

    6.2.1 ext2int Callback

    Before doing any simulation of a case, Matpower performs some data conversionon the case struct in order to achieve a consistent internal structure, by calling the

    following. mpc = ext2int(mpc);

    45

  • 8/8/2019 Manual Mat Power 2010

    46/105

    Table 6-1: Names Used by Implementation of OPF with Reserves

    name description

    mpc Matpower case struct

    reserves additional eld in mpc containing input parameters for zonal reserves inthe following sub-elds:

    cost ng 1 vector of reserve costs, c from (6.3)qty ng 1 vector of reserve quantity upper bounds, i th element is r maxizones n rz ng matrix of reserve zone denitions

    zones(k,j) = 1 if gen j belongs to reserve zone k ( j Z k )0 otherwise ( j /Z k )req n rz 1 vector of zonal reserve requirements, k th element is Rk from (6.5)

    om OPF model object, already includes standard OPF setupresults OPF results struct, superset of mpc with additional elds for output datang ng , number of generatorsR name for new reserve variable block, i th element is r iPg 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 withany generators or branches connected to isolated buses. The buses are renumberedconsecutively, beginning at 1, and the in-service generators are sorted by increasingbus number. All of the related indexing information and the original data matricesare stored in an order eld in the case struct to be used later by int2ext to performthe reverse conversions when the simulation is complete.

    The rst stage callback is invoked from within the ext2int function immediatelyafter the case data has been converted. Inputs are a Matpower case struct ( mpc),freshly converted to internal indexing and any (optional) args value supplied whenthe 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 ininternal ordering by the formulation stage. The example shows how ext2int can alsobe used, with a case struct that has already been converted to internal indexing, toconvert other data structures by passing in 2 or 3 extra parameters in addition tothe case struct. In this case, it automatically converts the input data in the qty ,cost and zones elds of mpc.reserves to be consistent with the internal generatorordering, where off-line generators have been eliminated and the on-line generatorsare 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 forext2int for more details on what all it can do.

    46

  • 8/8/2019 Manual Mat Power 2010

    47/105

    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 inputdata required by the extension and throw an error if something is missing or not asexpected.

    6.2.2 formulation Callback

    This stage is called from opf after the OPF Model ( om) object has been initializedwith the standard OPF formulation, but before calling the solver. This is the idealplace for modifying the problem formulation with additional variables, constraintsand costs, using the add vars , add constraints and add costs methods of the OPFModel object. Inputs are the om object and any (optional) args supplied when thecallback was registered via add userfcn . Output is the updated om object.

    The omobject contains both the original Matpower case data as well as all of theindexing data for the variables and constraints of the standard OPF formulation. 12See the on-line help for opf model for more details on the OPF model object and themethods available for manipulating and accessing it.

    In the example code, a new variable block named R with ng elements and thelimits 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 nally, the add costsmethod is used to add to the model a user-dened 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 dened 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 onlycolumns corresponding to real power generation ( Pg) and reserves ( R) and need notbother with voltages, reactive power injections, etc. As illustrated in Figure 6-1,this allows the same code to be used with both the AC OPF, where x includes V mand Qg , and the DC OPF where it does not. This code is also independent of any

    12 It is perfectly legitimate to register more than one callback per stage, such as when enablingmultiple independent OPF extensions. In this case, the callbacks are executed in the order theywere registered with add userfcn . E.g. when the second and subsequent formulation callbacksare invoked, the omobject will reect any modications performed by earlier formulation callbacks.

    47

  • 8/8/2019 Manual Mat Power 2010

    48/105

    additional variables that may have been added by Matpower (e.g. y variables fromMatpower s CCV handling of piece-wise linear costs) or by the user via previousformulation callbacks. Matpower will place the constraint matrix blocks in the

    appropriate place when it constructs the overallA

    matrix at run-time. This is an im-portant feature that enables independently developed Matpower OPF extensionsto work together.

    Va

    A = 0 A10 00 A2

    A = 0 A1 0 A2

    Ar = A1 A2

    Va PgVm yQg R

    Pg y R

    AC OPF

    DC OPF

    Figure 6-1: Adding Constraints Across Subsets of Variables

    48

  • 8/8/2019 Manual Mat Power 2010

    49/105

    function om = userfcn_reserves_formulation(om, args)

    %% initialize some things

    define_constants; mpc = get_mpc(om);r = mpc.reserves;ng = size(mpc.gen, 1); %% number of on-line gens

    %% variable boundsRmin = zeros(ng, 1); %% bound below by 0Rmax = r.qty; %% bound above by stated max reserve qty ...k = find(mpc.gen(:, RAMP_10) > 0 & mpc.gen(:, RAMP_10) < Rmax);Rmax(k) = mpc.gen(k, RAMP_10); %% ... and ramp rateRmax = Rmax / mpc.baseMVA;

    %% constraintsI = speye(ng); %% identity matrixAr = [I I];Pmax = mpc.gen(:, PMAX) / mpc.baseMVA;lreq = r.