G.6 Ipopt – Interior Point Optimizer
Ipopt  (Interior Point OPTimizer, pronounced I-P-Opt) is a software package for
large-scale nonlinear optimization. It is is written in C++ and is released as open
source code under the Common Public License (CPL). It is available from the
COIN-OR initiative at https://github.com/coin-or/Ipopt. The code has been
written by Carl Laird and Andreas Wächter, who is the COIN project leader for
Matpower requires the Matlab MEX interface to Ipopt, which is included in the
Ipopt source distribution, but must be built separately. Additional information on the MEX
interface is available at https://projects.coin-or.org/Ipopt/wiki/MatlabInterface.
Please consult the Ipopt documentation, web-site and mailing lists for help in building
and installing the Ipopt Matlab interface. This interface uses callbacks to Matlab
functions to evaluate the objective function and its gradient, the constraint values and
Jacobian, and the Hessian of the Lagrangian.
Precompiled MEX binaries for a high-performance version of Ipopt,
using the PARDISO linear solver [52, 53], are available from the PARDISO
At the time of this writing, these are the highest performing solvers available
to Matpower for very large scale AC OPF problems. For Microsoft
Windows users, a pre-compiled MEX version of Ipopt (and numerous other
solvers, such as CLP and GLPK) are easily installable as part of the OPTI
When installed, Ipopt can be used by Matpower to solve both AC and DC OPF
problems by setting the opf.ac.solver or opf.dc.solver options, respectively, equal to
'IPOPT'. See Table C-13 for a summary of the Ipopt-related Matpower options.
The many algorithm options can be set by creating an “Ipopt user options”
function and specifying it via ipopt.opt_fname to override the defaults set by
ipopt_options. See help ipopt_options and the options reference section of the
Ipopt documentation at http://www.coin-or.org/Ipopt/documentation/ for
It can also be used to solve general LP and QP problems via Matpower’s common
QP solver interface qps_matpower with the algorithm option set to 'IPOPT' (or 400 for
backward compatibility), or by calling qps_ipopt directly.