Below is a summary of the changes since version 6.0 of MATPOWER. See the
CHANGES.md file for all the gory details. For release notes for
previous versions, see Appendix H of the MATPOWER User's Manual.
- New MATPOWER installer script
install_matpower()automatically updates MATLAB or Octave paths or optionally provides the commands required to so. - Support for additional user-defined general nonlinear constraints and costs in AC OPF.
- Support for exporting MATPOWER case to PSS/E RAW data format.
- Three new variants of the standard Newton AC power flow, for a total
of four, including both nodal power and current balance constraints
and both polar and cartesian representations of voltage. See the new
pf.current_balanceandpf.v_cartesianoptions. Thanks to Baljinnyam Sereeter. - Three new variants of the standard AC OPF formulation, for a total of
four, including both nodal power and current balance constraints and
both polar and cartesian representations of voltage. See the new
opf.current_balanceandopf.v_cartesianoptions. Thanks to Baljinnyam Sereeter. - Three new power flow algorithms for radial distribution systems
selected via the three new options for
pf.alg, namely'PQSUM','ISUM','YSUM'. Also includes new MATPOWER optionspf.radial.max_itandpf.radial.vcorr. See Section 4.3 on "Distribution Power Flow" in the MATPOWER User's Manual for details. Thanks to Mirko Todorovski. - Major upgrade to OPF soft limit functionality, supporting soft limits on all AC and DC OPF inequality constraints, including branch flow constraints, bus voltage bounds, generator active and reactive bounds, branch flow and branch angle difference limits. Thanks to Eran Schweitzer.
- Docker image tagged
matpower/matpower-desktop, providing a pre-packaged Ubuntu desktop environment with Octave, MATPOWER, and the MATPOWER Extras all pre-installed. See thedocker/MATPOWER-Docker.mdpage for more details. Thanks to Richard Lincoln. - New options:
pf.nr.lin_solvercontrols the linear solver used to compute the Newton update step in the Newton-Raphson power flow.pf.radial.max_itandpf.radial.vcorrare options for the new radial power flow algorithms. Thanks to Mirko Todorovski.cpf.enforce_flow_limsandcpf.enforce_v_limscontrol enforcement of branch flow and bus voltage magnitude limits in the continuation power flow andcpf.flow_lims_tolandcpf.v_lims_tolcontrol the respective detection tolerances. Thanks to Ahmad Sadiq Abubakar and Shrirang Abhyankar.pf.current_balanceandpf.v_cartesiancontrol formulation used for Newton AC power flow. Thanks to Baljinnyam Sereeter.opf.current_balanceandopf.v_cartesiancontrol formulation used for AC OPF. Thanks to Baljinnyam Sereeter.opf.softlims.defaultdetermines whether or not to include soft limits on constraints whose parameters are not specified explicitly in thempc.softlimsstruct. For use with enhancedtoggle_softlims()functionality. Thanks to Eran Schweitzer.opf.startreplaces deprecatedopf.init_from_mpcand adds a new possibility to automatically run a power flow to initialize the starting state for the OPF.
- New functions:
calc_branch_anglecalcultes voltage angle differences for branches.dImis_dV()evaluates the partial derivatives of nodal current balance with respect to bus voltages.d2Imis_dV2()evaluates the 2nd derivatives of nodal current balance with respect to bus voltages.d2Imis_dVdSg()evaluates the 2nd derivatives of nodal current balance with respect to bus voltages and generator injections.d2Abr_dV2()evaluates the 2nd derivatives of squared branch flows with respect to bus voltages.gentypes()andgenfuelsprovide list of standard generator unit types and fuel types, respectively.install_matpower()installs MATPOWER by automatically modifying or, alternatively, showing needed modifications to MATLAB or Octave path.loadshed()computes MW curtailments of dispatchable loads.opf_branch_ang_fcn()evaluates AC branch flow limit constraints and gradients.opf_branch_ang_hess()evaluates Hessian of AC branch flow limit constraints.opf_current_balance_fcn()evaluates AC current balance constraints and gradients.opf_current_balance_hess()evaluates Hessian of AC current balance constraints.opf_veq_fcn()evaluates voltage magnitude equality constraints and gradients.opf_veq_hess()evaluates Hessian of voltage magnitude equality constraints.opf_vlim_fcn()evaluates voltage magnitude limit constraints and gradients.opf_vlim_hess()evaluates Hessian of voltage magnitude limit constraints.opf_vref_fcn()evaluates reference voltage angle equality constraints and gradients.opf_vref_hess()evaluates Hessian of reference voltage angle equality constraints.opt_model.add_lin_constraint()to add linear constraints to an optimization model.opt_model.add_nln_constraint()to add nonlinear constraints to an optimization model.opt_model.init_indexed_name()to initialize the indices for an indexed name set of constraints, costs or variables.save2psse()to export a MATPOWER case to PSS/E RAW data format.savechgtab()to save change tables, such as those used byapply_changes, to a file.
-
Seven new purely synthetic cases from the ACTIVSg team (ASU, Cornell, Texas A&M, U of Illinois, and VCU - Synthetic grids), resulting from work supported by the ARPA-E GRID DATA program. Thanks to Adam Birchfield and the ACTIVSg team.
case_ACTIVSg200-- 200-bus Illinois synthetic modelcase_ACTIVSg500-- 500-bus South Carolina synthetic modelcase_ACTIVSg2000-- 2000-bus Texas synthetic modelcase_ACTIVSg10k-- 10,000-bus US WECC synthetic modelcase_ACTIVSg25k-- 25,000-bus US Northeast/Mid-Atlantic synthetic modelcase_ACTIVSg70k-- 70,000-bus Eastern US synthetic modelcase_SyntheticUSA-- 82,000-bus continental USA synthetic model (aggregation ofcase_ACTIVSg70k,case_ACTIVSg10k, andcase_ACTIVSg2000, connected by 9 DC lines)
Some of these cases also include contingency tables and/or hourly load scenarios for 1 year.
contab_ACTIVSg200contab_ACTIVSg500contab_ACTIVSg2000contab_ACTIVSg10kscenarios_ACTIVSg200scenarios_ACTIVSg2000
-
New RTS-GMLC case from https://github.com/GridMod/RTS-GMLC.
case4_RTS_GMLC
-
Six new radial distribution system cases. Thanks to Mirko Todorovski.
case4_distcase18case22case69case85case141
- Two new Tech Notes, available from MATPOWER home page.
- B. Sereeter and R. D. Zimmerman, "Addendum to AC Power Flows and their Derivatives using Complex Matrix Notation: Nodal Current Balance", MATPOWER Technical Note 3, April 2018.
- B. Sereeter and R. D. Zimmerman, "AC Power Flows and their Derivatives using Complex Matrix Notation and Cartesian Coordinate Voltages", MATPOWER Technical Note 4, April 2018.
- LaTeX source code for MATPOWER User's Manual included in
docs/src, for MIPS User's Manual inmips/docs/srcand for MOST User's Manual inmost/docs/src.
- MATPOWER has a new website at https://matpower.org. Please discontinue use of the old http://www.pserc.cornell.edu/matpower/ address.
- Update versions of included packages:
- MIPS 1.3.1.
- MOST 1.0.2.
- MP-Test 7.0.
- Continuous integration testing via GitHub and Travis-CI integration.
- Support added in core optimization model
opt_modelfor:- general nonlinear constraints
- general nonlinear costs
- quadratic costs
- Refactor OPF code to take advantage of new
opt_modelcapabilities for nonlinear constraints and quadratic and nonlinear costs. - Derivative functions now support cartesian coordinates for voltage in addition to polar coordinates.
- In the Newton power flow, for larger systems use explicit LU
decomposition with AMD reordering and the 3 output argument form of
lu(to select the Gilbert-Peierls algorithm), resulting in up to a 2x speedup in MATLAB, 1.1x in Octave. Thanks to Jose Luis Marín. - Improve performance of
makeYbus(). Thanks to Binbin Chen. - Support plotting of multiple nose curves in CPF by allowing option
cpf.plot.busto take on vector values. - Add line for curtailed load to
case_info()output. - Change default implementation of active power line flow constraints
(
opf.flow_lim = 'P') to use flow directly, rather than square of flow, which is now a separate option, namelyopf.flow_lim = '2'. Thanks to Nico Meyer-Huebner. - Add
genfuelsandgentypesto establish standard set of values for optionalmpc.genfuelandmpc.gentypefields for generator fuel type and generator unit type, respectively. - Add support for
gentypeandgenfuelfields of MATPOWER case struct inextract_islands,ext2int,int2ext,load2dispandsavecase. - Add support for
bus_namefield of MATPOWER case struct toextract_islands,ext2intandint2ext. - Add support for IPOPT solver under Octave, including in the Travis-CI testing. Thanks to Richard Lincoln.
- Add support for YALMIP, SeDuMi and SDPT3 to be recognized under Octave. Thanks to Richard Lincoln.
- Add
'clear_cache'options tohave_fcn()(see #65) to facilitate re-checking for optional functionality after changes to the MATLAB/Octave path. - Deprecated functions:
d2AIbr_dV2()-- usedA2br_dV2()instead.d2ASbr_dV2()-- usedA2br_dV2()instead.opt_model.add_constraints()-- use the corresponding one of the following methods instead:add_lin_constraint(),add_nln_constraint(), orinit_indexed_name().opt_model.add_costs()-- use the corresponding one of the following methods instead:add_quad_cost(),add_nln_cost(),add_legacy_cost(), orinit_indexed_name().opt_model.linear_constraints()-- useopt_model.params_lin_constraint()instead.opt_model.build_cost_params()-- no longer needed, incorporated intoopt_model.params_legacy_cost().opt_model.get_cost_params()-- useopt_model.params_legacy_cost()instead.
- Fix bug in conversion of older versions of MATPOWER options.
- Fix bug #4 where some Q limits were not being respected by CPF when buses were converted to PQ by initial power flow run. Thanks to Shruti Rao.
- Fix fatal bug #8 when calling
runcpfwith base and target cases with identical load and generation. Thanks to Felix. - Fix fatal bug in
get_losseswhen computing derivatives of reactive branch injections and fix some related tests. - Fix #11 fatal error encountered when running
test_matpowerwithSDP_PFand YALMIP installed, but no SDP solver. Now checks for availability of SeDuMi, SDP3 or MOSEK before attempting to runSDP_PFtests that require solving an SDP. Thanks to Felix. - Fix bug #12 where the CPF could terminate early when requesting trace of the full curve with P or Q limits enforced, if a limit becomes binding at the base case. Thanks to Felix.
- Fix bug #13 where setting all buses to type
NONE(isolated) resulted in a fatal error forext2int,runpf,runcpfandrunopf. Thanks to SNPerkin. - Fix bug #21 where a continuation power flow that failed the first corrector step would produce a fatal error. Thanks to Elis Nycander.
- Fix bug #23 where the continuation power flow could switch directions unexpectedly when the operating point switched from stable to unstable manifold or vice-versa after hitting a limit. Thanks to Elis Nycander and Shrirang Abhyankar.
- Fix bug #26 where, in a continuation power flow, a reactive limit at a bus could be detected in error if multiple generators at the bus had reactive ranges of very different sizes. Thanks to Elis Nycander and Shrirang Abhyankar.
- Fix
runpfhandling of case where individual power flow fails during Q limit enforcement. - Fix #53 where certain OPF cases (e.g.
case33bw) resulted in a fatal error under versions of MATLAB prior to R2016b (v9.1). Thanks to Jane Cheung. - Fix #56 where
save2pssewas missing entries for two transformer columns, namely,VMA1andVMI1. Thanks to Amin Gholami. - Fix #57 where
save2pssealways used 1 for theCKTnumber, even for parallel branches or transformers. Thanks to Amin Gholami. - Fix bug in
have_fcn()where it would incorrectly mark Gurobi as available even if it had an expired license or failed for some other reason. - Fix #60 by adding missing generator at slack bus in RTE cases. Affects
the following cases:
case1888rtecase1951rtecase2848rtecase2868rtecase6468rtecase6470rtecase6495rtecase6515rteThanks to Jean Maeght.
-
Move included MATPOWER case files to new
datasubdirectory. -
Turning soft limits on without specifying any parameters explicitly in
mpc.softlimsnow implements soft limits for all constraints, by default, not just branch flow limits. And the format of the input parameters inmpc.softlimshas changed. Seehelp toggle_softlimsor Tables 7-9, 7-10 and 7-11 in the MATPOWER User's Manual for the details. -
Swap the order of the output arguments of
dSbus_dV()) for polar coordinate voltages (angle before magnitude) for consistency. -
Correct signs of phase shifter angles in Polish system cases, since they were based on the old sign convention used by MATPOWER prior to v3.2 (see change on 6/21/07). Affects the following cases:
case2383wpcase2736spcase2737sopcase2746wopcase2746wpcase3375wp
Thanks to Mikhail Khokhlov and Dr. Artjoms Obusevs for reporting.
-
Remove
nln.mu.l.<name>andnln.mu.u.<name>fields from OPFresultsstruct. Usenle.lambda.<name>andnli.mu.<name>fields instead for nonlinear constraint multipliers. -
Modify order of default output arguments of
opt_model.get_idx(). -
Add
mpoptto input args for OPF'ext2int','formulation', and'int2ext'callbacks. -
Eliminate unnecessary reordering of on-line generators (sorted by increasing bus index) from
ext2int(). The order is now left unmodified byext2int(). This change should only affect user code that explicitly depends on the order of generators with internal numbering (hopefully quite rare).