6.5 Solvers
Early versions of Matpower relied on Matlab’s Optimization Toolbox [29] to provide
the NLP and QP solvers needed to solve the AC and DC OPF problems, respectively.
While they worked reasonably well for very small systems, they did not scale well to larger
networks. Eventually, optional packages with additional solvers were added to improve
performance, typically relying on Matlab extension (MEX) files implemented in Fortran
or C and pre-compiled for each machine architecture. Some of these MEX files are
distributed as optional packages due to differences in terms of use. For DC optimal power
flow, there is a MEX build [30] of the high performance interior point BPMPD
solver [31] for LP/QP problems. For the AC OPF problem, the MINOPF [32] and
TSPOPF [28] packages provide solvers suitable for much larger systems. The
former is based on MINOS [33] and the latter includes the primal-dual interior
point and trust region based augmented Lagrangian methods described in [8].
Matpower version 4 and later also includes the option to use the open-source Ipopt
solver
for solving both AC and DC OPFs, based on the Matlab MEX interface to
Ipopt . It also includes
the option to use CPLEX
or MOSEK
for DC OPFs. Matpower 4.1 added the option to use Artelys
Knitro [34] for AC OPFs and
the Gurobi Optimizer [35]
for DC OPFs and Matpower 5 added GLPK [36] and 5.1 added CLP [37]. See
Appendix G for more details on these optional packages.
Beginnning with version 4, Matpower also includes its own primal-dual interior
point method implemented in pure-Matlab code, derived from the MEX implementation
of the algorithms described in [8]. This solver is called MIPS (Matpower Interior Point
Solver) and is described in more detail in Appendix A. If no optional packages are
installed, MIPS will be used by default for both the AC OPF and as the QP solver used
by the DC OPF. The AC OPF solver also employs a unique technique for efficiently
forming the required Hessians via a few simple matrix operations [38, 39, 40].
This solver has application to general nonlinear optimization problems outside
of Matpower and can be called directly as mips. There is also a convenience
wrapper function called qps_mips making it trivial to set up and solve LP and QP
problems, with an interface similar to quadprog from the Matlab Optimization
Toolbox.