The ^{89}

- New
Matpower installer scriptinstall _matpower() automatically updatesMatlab or Octave paths or optionally provides the commands required to so. - Support for additional user-deﬁned 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 ﬂow, 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 _balance andpf.v _cartesian options.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 _balance andopf.v _cartesian options.Thanks to Baljinnyam Sereeter. - Three new power ﬂow algorithms for radial distribution systems selected
via the three new options for
pf.alg , namely' PQSUM ' ,' ISUM ' ,' YSUM ' . Also includes newMatpower optionspf.radial.max _it andpf.radial.vcorr . See Section 4.3 on “Distribution Power Flow” 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 ﬂow constraints, bus
voltage bounds, generator active and reactive bounds, branch ﬂow and branch
angle diﬀerence limits.
Thanks to Eran Schweitzer. - Docker image tagged
matpower/matpower-desktop , providing a pre-packaged Ubuntu desktop environment with Octave,Matpower , and theMatpower Extras all pre-installed. See thedocker/MATPOWER-Docker.md page for more details.Thanks to Richard Lincoln. - New options:
pf.nr.lin _solver controls the linear solver used to compute the Newton update step in the Newton-Raphson power ﬂow.pf.radial.max _it andpf.radial.vcorr are options for the new radial power ﬂow algorithms.Thanks to Mirko Todorovski. cpf.enforce _flow _lims andcpf.enforce _v _lims control enforcement of branch ﬂow and bus voltage magnitude limits in the continuation power ﬂow andcpf.flow _lims _tol andcpf.v _lims _tol control the respective detection tolerances.Thanks to Ahmad Sadiq Abubakar and Shrirang Abhyankar. pf.current _balance andpf.v _cartesian control formulation used for Newton AC power ﬂow.Thanks to Baljinnyam Sereeter. opf.current _balance andopf.v _cartesian control formulation used for AC OPF.Thanks to Baljinnyam Sereeter. opf.softlims.default determines whether or not to include soft limits on constraints whose parameters are not speciﬁed explicitly in thempc.softlims struct. For use with enhancedtoggle _softlims() functionality.Thanks to Eran Schweitzer. opf.start replaces deprecatedopf.init _from _mpc and adds a new possibility to automatically run a power ﬂow to initialize the starting state for the OPF.

- New functions:
calc _branch _angle calcultes voltage angle diﬀerences for branches.dImis _dV() evaluates the partial derivatives of nodal current balance with respect to bus voltages.d2Imis _dV2() evaluates the 2^{nd}derivatives of nodal current balance with respect to bus voltages.d2Imis _dVdSg() evaluates the 2^{nd}derivatives of nodal current balance with respect to bus voltages and generator injections.d2Abr _dV2() evaluates the 2^{nd}derivatives of squared branch ﬂows with respect to bus voltages.gentypes() andgenfuels provide list of standard generator unit types and fuel types, respectively.install _matpower() installsMatpower by automatically modifying or, alternatively, showing needed modiﬁcations toMatlab or Octave path.loadshed() computes MW curtailments of dispatchable loads.opf _branch _ang _fcn() evaluates AC branch ﬂow limit constraints and gradients.opf _branch _ang _hess() evaluates Hessian of AC branch ﬂow 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 aMatpower case to PSS/E RAW data format.savechgtab() to save change tables, such as those used byapply _changes , to a ﬁle.

- Seven new purely synthetic cases from the ACTIVSg team (
A SU,C ornell,T exas A&M, U ofI llinois, andV CU -S yntheticg rids), resulting from work supported by the ARPA-E GRID DATA program.Thanks to Adam Birchﬁeld 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 _ACTIVSg200 contab _ACTIVSg500 contab _ACTIVSg2000 contab _ACTIVSg10k scenarios _ACTIVSg200 scenarios _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 _dist case18 case22 case69 case85 case141

- Two new Tech Notes, available from
Matpower home page.Matpower Technical Note 3 “Addendum to AC Power Flows and their Derivatives using Complex Matrix Notation: Nodal Current Balance” [39]Matpower Technical Note 4 “AC Power Flows and their Derivatives using Complex Matrix Notation and Cartesian Coordinate Voltages” [40]

- LATEX source code for
Matpower User’s Manual included indocs/src , for MIPS User’s Manual inmips/docs/src and for MOST User’s Manual inmost/docs/src .

Matpower has a new website athttps://matpower.org . Please discontinue use of the oldhttp://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 _model for:- general nonlinear constraints
- general nonlinear costs
- quadratic costs

- Refactor OPF code to take advantage of new
opt _model capabilities 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 ﬂow, 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 inMatlab , 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.bus to take on vector values. - Add line for curtailed load to
case _info() output. - Change default implementation of active power line ﬂow constraints (
opf.flow _lim = ' P ' ) to use ﬂow directly, rather than square of ﬂow, which is now a separate option, namelyopf.flow _lim = ' 2 ' .Thanks to Nico Meyer-Huebner . - Add
genfuels andgentypes to establish standard set of values for optionalmpc.genfuel andmpc.gentype ﬁelds for generator fuel type and generator unit type, respectively. - Add support for
gentype andgenfuel ﬁelds ofMatpower case struct inextract _islands ,ext2int ,int2ext ,load2disp andsavecase . - Add support for
bus _name ﬁeld ofMatpower case struct toextract _islands ,ext2int andint2ext . - 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 issue #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 ﬂow run.
Thanks to Shruti Rao. - Fix fatal bug #8 when calling
runcpf with base and target cases with identical load and generation.Thanks to Felix. - Fix fatal bug in
get _losses when computing derivatives of reactive branch injections and ﬁx some related tests. - Fix #11 fatal error encountered when running
test _matpower withSDP _PF and YALMIP installed, but no SDP solver. Now checks for availability of SeDuMi, SDP3 or MOSEK before attempting to runSDP _PF tests 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 ,runcpf andrunopf .Thanks to SNPerkin. - Fix bug #21 where a continuation power ﬂow that failed the ﬁrst corrector
step would produce a fatal error.
Thanks to Elis Nycander. - Fix bug #23 where the continuation power ﬂow 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 ﬂow, a reactive limit at a bus
could be detected in error if multiple generators at the bus had reactive ranges
of very diﬀerent sizes.
Thanks to Elis Nycander and Shrirang Abhyankar. - Fix
runpf handling of case where individual power ﬂow fails during Q limit enforcement. - Fix bug #53 where certain OPF cases (e.g.
case33bw ) resulted in a fatal error under versions ofMatlab prior to R2016b (v9.1).Thanks to Jane Cheung. - Fix bug #56 where
save2psse was missing entries for two transformer columns, namely,VMA1 andVMI1 .Thanks to Amin Gholami. - Fix bug #57 where
save2psse always used 1 for theCKT number, 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 issue #60 by adding missing generator at slack bus in RTE cases. Aﬀects the
following cases:
case1888rte case1951rte case2848rte case2868rte case6468rte case6470rte case6495rte case6515rte

Thanks to Jean Maeght.

- Move included
Matpower case ﬁles to newdata subdirectory. - Turning soft limits on without specifying any parameters explicitly in
mpc.softlims now implements soft limits for all constraints, by default, not just branch ﬂow limits. And the format of the input parameters inmpc.softlims has changed. Seehelp toggle _softlims or Tables 7-9, 7-10 and 7-11 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). Aﬀects the following cases:case2383wp case2736sp case2737sop case2746wop case2746wp case3375wp

Thanks to Mikhail Khokhlov and Dr. Artjoms Obusevs for reporting. - Remove
nln.mu.l.<name> andnln.mu.u.<name> ﬁelds from OPFresults struct. Usenle.lambda.<name> andnli.mu.<name> ﬁelds instead for nonlinear constraint multipliers. - Modify order of default output arguments of
opt _model/get _idx() . - Add
mpopt to 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 unmodiﬁed byext2int() . This change should only aﬀect user code that explicitly depends on the order of generators with internal numbering (hopefully quite rare).