Early versions of Matpower relied on Matlab’s Optimization Toolbox  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) ﬁles implemented in Fortran
or C and pre-compiled for each machine architecture. Some of these MEX ﬁles are
ﬂow, there is a MEX build  of the high performance interior point BPMPD
solver  for LP/QP problems. For the AC OPF problem, the MINOPF  and
TSPOPF  packages provide solvers suitable for much larger systems. The
former is based on MINOS  and the latter includes the primal-dual interior
point and trust region based augmented Lagrangian methods described in .
Matpower version 4 and later also includes the option to use the open-source Ipopt
for solving both AC and DC OPFs, based on the Matlab MEX interface to
Ipopt . It also includes
the option to use CPLEX
for DC OPFs. Matpower 4.1 added the option to use Artelys
Knitro  for AC OPFs and
the Gurobi Optimizer 
for DC OPFs and Matpower 5 added GLPK  and 5.1 added CLP . 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 . 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 eﬃciently
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