manual mat power 2010
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.