Below is a summary of the changes since version 5.1 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.
- 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 MOST, MIPS, MP-Test, all available from the MATPOWER Development page (a GitHub organization).
- New developer e-mail list (MATPOWER-DEV-L) to facilitate communication between those collaborating on MATPOWER development.
- Added 9 new case files, 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 Cedric Josz and colleagues from the French Transmission System Operator.
- Added
case145.m
, IEEE 145 bus, 50 generator dynamic test case from the [UW Power Systems Test Case Archive] (http://www.ee.washington.edu/research/pstca/dyn50/pg_tcadd50.htm). - Added
case33bw.m
, a 33-bus radial distribution system from Baran and Wu.
- MATPOWER Optimal Scheduling Tool (MOST) 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 modifications to an existing MATPOWER
case. See
apply_changes()
andidx_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
andcpf.enforce_q_lims
to enforce generator active and reactive power limts in the continuation power flow. - Added OPF option
opf.use_vg
to provide a convenient way to have the OPF respect the generator voltage setpoints specified in the gen matrix. - Experimental foundation for handling of ZIP load models in power flow
(Newton, fast-decoupled only), continuation power flow, and optimal
power flow (MIPS, fmincon, Knitro, IPOPT solvers only). Currently,
ZIP loads can only be specified on a system-wide basis using the
experimental options
exp.sys_wide_zip_loads.pw
andexp.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()
inextras/misc
, contributed by Paul Cuffe. - Find the maximum loadability limit of a system via an optimal power
flow and dispatchable loads, using
maxloadlim()
inextras/maxloadlim
, contributed by Camille Hamon. - Create a quadratically-constrained quadratic programming (QCQP)
representation of the AC optimal power flow problem using using
qcqp_opf()
inextras/misc
, contributed by Cedric Josz and colleagues.
- Plot electrically meaningful drawings of a MATPOWER case using
- New functions:
apply_changes()
andidx_ct()
provide a general mechanism for applying modifications to an existing MATPOWER case.feval_w_path()
evaluates a function located at a specified path, outside of the MATLAB path.mpopt2qpopt()
provides a common interface for creating options struct formi/qps_matpower()
from a MATPOWER options struct.
- New function options:
- Option to call
makeB()
,makeBdc()
,makePTDF()
,scale_load()
, andtotal_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 valuesbus
andarea
as valid values forload_zone
argument.
- Option to call
- Changed default solver order for LP, QP, MILP, MIQP problems to move Gurobi before CPLEX and BPMPD after OT and GLPK.
- Added some caching to
mpoption()
and made minor changes tonested_struct_copy()
to greatly decrease the overhead added bympoption()
when running many small problems. - Added option
cpf.adapt_step_damping
to control oscillations in adaptive step size control for continuation power flow. - Added CPF user options for setting tolerances for target lambda
detection and nose point detection,
cpf.target_lam_tol
andcpf.nose_tol
, respectively. - Added support for MATLAB Optimization Toolbox 7.5 (R2016b).
- Added support for MOSEK v8.x.
- Added tests for power flow with
pf.enforce_q_lims
option. - Updated network reduction code to handle cases with radially connected external buses.
- Updated versions of
qcqp_opf()
andqcqp_opf()
inextras/misc
, from Cedric Josz. - 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()
affecting cases whereQMIN
is greater than or equal toQC1MIN
andQC2MIN
(orQMAX
is less than or equal toQC1MAX
andQC2MAX
) for all generators. Thanks Jose Miguel. - Copying a field containing a struct to a non-struct field 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 Marin and Yujia Zhu. - Fixed a fatal bug in
psse_convert_xfmr()
affecting 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 possibly v2.12) - 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 off and leaving off all warnings. - Fixed shadow prices on variable bounds for AC OPF for fmincon, IPOPT, and Knitro.
- In
savecase()
single quotes are now escaped properly in bus names. - Generator capability curve parameters that define 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 insideuopf()
, the only place it was used. - Removed
cpf.user_callback_args
option and modifiedcpf.user_callback
. - Changed name of
cpf.error_tol
option tocpf.adapt_step_tol
. - Changed the
Sbus
argument innewtonpf()
from a vector to a function handle to a function that returns a vector.