H.11 Version 6.0 – released Dec 16, 2016
The Matpower 6.0 User’s Manual is available
New Open Development Model
- Matpower development has moved to GitHub! The code repository is now
publicly available to clone and submit pull requests.
- Public issue tracker for reporting bugs, submitting patches, etc.
- Separate repositories for Matpower, MOST, MIPS, MP-Test, all available
- New developer e-mail list (MATPOWER-DEV-L) to facilitate communication
between those collaborating on Matpower-related development. Sign up at:
New Case Files
- Added 9 new case ﬁles, 8 cases ranging from 1888 to 6515 buses representing the
French system, and a 13,659-bus case representing parts of the of the European
high voltage transmission network, stemming from the Pan European Grid
Advanced Simulation and State Estimation (PEGASE) project. Thanks again
to Cédric Josz and colleagues from the French Transmission System Operator.
Please cite reference  when publishing results based on these cases.
- Added case145.m, IEEE 145 bus, 50 generator dynamic test case from the U of
WA Power Systems Test Case Archive .
- Added case33bw.m, a 33-bus radial distribution system from Baran and Wu.
- Matpower Optimal Scheduling Tool (MOST) 1.0b1 is a major new
feature, implementing a full range of optimal power scheduling problems, from
a simple as a deterministic, single period economic dispatch problem with no
transmission constraints to as complex as a stochastic, security-constrained,
combined unit-commitment and multiperiod OPF problem with locational
contingency and load-following reserves, ramping costs and constraints,
deferrable demands, lossy storage resources and uncertain renewable
generation. See docs/MOST-manual.pdf for details.
- General mechanism for applying modiﬁcations to an existing Matpower case.
See apply_changes() and idx_ct().
- Redesigned CPF callback mechanism to handle CPF events such as generator
limits, nose point detection, etc. Included event log in CPF results.
- Added options 'cpf.enforce_p_lims' and 'cpf.enforce_q_lims' to enforce
generator active and reactive power limts in the continuation power ﬂow.
- Added OPF option 'opf.use_vg' to provide a convenient way to have the OPF
respect the generator voltage setpoints speciﬁed in the gen matrix.
- Experimental foundation for handling of ZIP load models in power ﬂow
(Newton, fast-decoupled only), continuation power ﬂow, and optimal power
ﬂow (MIPS, fmincon, Knitro, Ipopt solvers only). Currently, ZIP loads can
only be speciﬁed on a system-wide basis using the experimental options
'exp.sys_wide_zip_loads.pw' and 'exp.sys_wide_zip_loads.qw'.
- Support for quadprog() under GNU Octave.
- New contributed extras:
- Plot electrically meaningful drawings of a Matpower case using
plot_mpc() in extras/misc, contributed by Paul Cuﬀe.
- Find the maximum loadability limit of a system via an optimal power
ﬂow and dispatchable loads, using maxloadlim() in extras/maxloadlim,
contributed by Camille Hamon.
- Create a quadratically-constrained quadratic programming (QCQP)
representation of the AC power ﬂow problem using using qcqp_opf() in
extras/misc, contributed by Cédric Josz and colleagues.
- New functions:
- apply_changes() and idx_ct() provide a general mechanism for applying
modiﬁcations to an existing Matpower case.
- feval_w_path() evaluates a function located at a speciﬁed path, outside
of the Matlab path.
- mpopt2qpopt() provides a common interface for creating options struct for
mi/qps_matpower() from a Matpower options struct.
- New function options:
- Option to call makeB(), makeBdc(), makePTDF(), scale_load(), and
total_load() with full case struct (mpc) instead of individual data
matrices (bus, branch, etc.).
- total_load(), which now computes voltage-dependent load values,
accepts the values 'bus' and 'area' as valid values for 'load_zone'
- Changed default solver order for LP, QP, MILP, MIQP problems to move
Gurobi before CPLEX and BPMPD after Optimization Toolbox and GLPK.
- Added some caching to mpoption() and made minor changes to
nested_struct_copy() to greatly decrease the overhead added by mpoption()
when running many small problems.
- Added option 'cpf.adapt_step_damping' to control oscillations in adaptive
step size control for continuation power ﬂow.
- Added CPF user options for setting tolerances for target lambda detection and
nose point detection, 'cpf.target_lam_tol' and 'cpf.nose_tol', respectively.
- Added support for Matlab Optimization Toolbox 7.5 (R2016b).
- Added support for MOSEK v8.x.
- Added tests for power ﬂow with 'pf.enforce_q_lims' option.
- Updated network reduction code to handle cases with radially connected
- Updated versions of qcqp_opf() and qcqp_opf() in extras/misc, from Cédric
- Added “Release History” section to Appendix of manual.
- Many new tests.
- Fixed bug in toggle_dclines() that resulted in fatal error when used with
OPF with reactive power costs. Thanks to Irina Boiarchuk.
- Fixed fatal bug in update_mupq() aﬀecting cases where QMIN is greater than or
equal to QC1MIN and QC2MIN (or QMAX is less than or equal to QC1MAX and QC2MAX)
for all generators. Thanks Jose Miguel.
- Copying a ﬁeld containing a
struct to a non-struct ﬁeld with nested_struct_copy() now overwrites rather
than causing a fatal error.
- Fixed a bug in psse_convert_xfmr() where conversion of data for transformers
with CZ=3 was done incorrectly. Thanks to Jose Luis Marín and Yujia Zhu.
- Fixed a fatal bug in psse_convert_xfmr() aﬀecting transformers with CW
and/or CZ equal to 1. Thanks to Matthias Resch.
- Fixed a crash in have_fcn() caused by changes in OPTI Toolbox v2.15 (or
- Commented out isolated bus 10287 in case3375wp.m.
- Added code to DC OPF to return success = 0 for cases where the matrix is
singular (e.g. islanded system without slack).
- Fixed problem in have_fcn() where SeDuMi was turning oﬀ and leaving oﬀ all
- Fixed shadow prices on variable bounds for AC OPF for fmincon, Ipopt, and
- In savecase() single quotes are now escaped properly in bus names.
- Generator capability curve parameters that deﬁne a zero-reactive power line
no longer cause a fatal error.
- Bad bus numbers no longer cause a fatal error (after reporting the bad bus
numbers) in case_info().
- Removed fairmax() from the public interface by moving it inside uopf(), the
only place it was used.
- Removed 'cpf.user_callback_args' option and modiﬁed
- Changed name of 'cpf.error_tol' option to 'cpf.adapt_step_tol'.
- Changed the Sbus argument in newtonpf() from a vector to a function handle
to a function that returns a vector.