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 solver40 for solving both AC and DC OPFs, based on the Matlab MEX interface to Ipopt41 . It also includes the option to use CPLEX42 or MOSEK43 for DC OPFs. Matpower 4.1 added the option to use Artelys Knitro [34]44 for AC OPFs and the Gurobi Optimizer [35]45 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 [383940]. 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.