My favorite MATPOWER function is loadcase(name)
(where name
is a string), so I made it work in Julia.
This package contains all transmission network data included in MATPOWER 5.1, plus data for the RTS-96 and RTS-79 networks. You can return a Dict
containing network data using loadcase(name)
, just as you would with MATPOWER. No MATLAB kernel or MATPOWER installation is required.
To install:
Pkg.add("MatpowerCases")
To load data for, say, the IEEE 118-bus power flow test case:
using MatpowerCases
mpc = loadcase("case118")
You should see a one-line description of the network (unless you passed describe=false
to loadcase()
). Now mpc
is a Dict containing network data in MATPOWER caseformat:
CASE118 Power flow data for IEEE 118 bus test case.
Dict{ASCIIString,Any} with 8 entries:
"baseMVA" => 100.0
"gen" => [1.0 0.0 0.0 15.0 -5.0 0.955 100.0 1.0 100.0 0.0 0.0 0.0 0.0 0…
"branch" => [1.0 2.0 0.0303 0.0999 0.0254 0.0 0.0 0.0 0.0 0.0 1.0 -360.0 3…
"docstring" => " CASE118 Power flow data for IEEE 118 bus test case. …
"bus_name" => Any["Riversde V2"…
"bus" => [1.0 2.0 51.0 27.0 0.0 0.0 1.0 0.955 10.67 138.0 1.0 1.06 0.94…
"version" => "2"
"gencost" => [2.0 0.0 0.0 3.0 0.01 40.0 0.0…
You may load data for any network MATPOWER 5.1 supports, plus the RTS-96 (case96
) and RTS-79 (case79
) networks. You may also provide a path to any .mat
file containing MATPOWER-format data to loadcase()
.
The one-line description you see when you load a network is the first line of a docstring. Print the whole thing to see detailed network information:
print(mpc["docstring"])
This is the same docstring you would see if you ran help(caseName)
in a MATLAB environment with MATPOWER installed.
This package will also convert an mpc Dict
to an instance of a type called Case
. Case
contains all mpc data, but is easier to navigate. Rather than referring to the caseformat documentation to figure out where, say, active power injection data might be, you can type:
c = extract_case("case9")
Then type c.<TAB>
to see a list of fields. Active power injections would logically be under bus
, so type c.bus.<TAB>
. PD
is one of the fields that appears. Typing c.bus.PD
returns the vector of active power injections for all buses.
MATPOWER is an awesome tool for power and energy researchers. It is actively developed by Ray Zimmerman, Carlos Murillo-Sánchez and others. If you use this package in your research, please cite them:
R. D. Zimmerman, C. E. Murillo-Sánchez, and R. J. Thomas, "MATPOWER: Steady-State Operations, Planning and Analysis Tools for Power Systems Research and Education," Power Systems, IEEE Transactions on, vol. 26, no. 1, pp. 12-19, Feb. 2011.
Also, if you use any of the four recently-added European grid test networks (caseName
ending in "pegase"), please cite this paper as follows:
Fliscounakis, S.; Panciatici, P.; Capitanescu, F.; Wehenkel, L., "Contingency Ranking With Respect to Overloads in Very Large Power Systems Taking Into Account Uncertainty, Preventive, and Corrective Actions," Power Systems, IEEE Transactions on , vol.28, no.4, pp.4909,4917, Nov. 2013 doi: 10.1109/TPWRS.2013.2251015
Note: The popular RTS-79 and RTS-96 networks are not included in MATPOWER, but are available in MatpowerCases thanks to Zhu Wang and Robert Green, who made their .m files freely available.