IPOPT (Interior Point OPTimizer) is a software library for large scale nonlinear optimization of continuous systems.
Authors: Andreas Wächter, a former Ph.D. student in department of chemical engineering at Carnegie Mellon University, under the supervision of Lorenz T. Biegler
License: EPL (formerly CPL)
Supported Platforms: Linux (native), Windows, Mac OS X
Source Languages: Fortran and C
- Using IPOPT from OpenOpt requires installation of ipopt and pyipopt (latter is made by Eric You Xu), and currently pyipopt declares "Platform: Linux, Mac, Untested for windows"
- Some stop criteria don't work (maxTime, maxCPUTime etc)
- IPOPT requires one of 3 linear system solvers; see /Ipopt-3.*.*/ThirdParty/Mumps for more details and installation script.
- OpenOpt use tol=1e-6 by default instead of 1e-8 value that is used by default in ipopt; set p.ftol = <your value> to modify tol, p.contol to modify constr_viol_tol (OpenOpt pass 1e-6 by default), p.maxIter to modify max_iter; other parameters from ipopt.opt file specification can be set via r=p.solve('ipopt', options = 'param1=value1, param2=value2; param3 value3 [etc...]') (comma- or semicolon-separated, space or "=" for name-value separation; however, mb this approach will be changed in future); alternatively, you can modify those parameters in oosolver()
- IPOPT requires matrix of dependencies between variables and nonlinear constraints build on them (in this matrix element 1 in n-th row and m-th column means m-th constraint depends on n-th variable, and value 0 means it doesn't depend). FuncDesigner, in addition to Automatic differentiation, generates this matrix (dense or sparse) automatically, while OpenOpt problems coded in pure Python language just pass matrix with all ones
Some users have troubles with building and linking IPOPT with pyipopt. Here's my (//Dmitrey) version of pyipopt for ipopt 3.8.3 (doesn't work with more recent versions), that works for me in Linux KUBUNTU (you'll have to change some paths in makefile). Before building it ensure your IPOPT 3.8.3 is installed and related tests from its source work correctly. After pyipopt build check ensure /pyipopt/example.py works and then put the file pyipopt.so into either a directory from PYTHONPATH or /openopt/solvers/CoinOr. If your /pyipopt/example.py doesn't work, please ask for help on it in pyipopt forum, not openopt forum.