G.6 Ipopt – Interior Point Optimizer

Ipopt [51] (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 Ipopt.

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 [5253], are available from the PARDISO project72 . 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 Toolbox73  [49].

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 details.

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.