Homepage of IPOPT 2.3.x
A software package for large-scale nonlinear optimization
This is the homepage for the pre-3.0 (Fortran) version of Ipopt.
The homepage for the new (C++) Ipopt 3.x version is here.
What is IPOPT?
IPOPT is an open source software package for large-scale nonlinear
optimization (NLP). It can be used to solve optimization problems of the form
xL <= x <= xU
where x are the optimization variables (possibly with lower and
upper bounds xL and xU
), f(x) is the objective function, and c(x) are constraints.
The functions f(x) and c(x) can be nonlinear. (Note
that nonlinear inequality constraints can be formulated in the above statement
using slack variables). IPOPT aims to find a local solution of such
The IPOPT distribution can be used to generate a library that can be linked
to one's own FORTRAN or C code, as well as a solver executable for the AMPL modeling language. It also includes
an interface to CUTEr. IPOPT can be used on Linux/UNIX platforms and Windows.
IPOPT is also available as NLP solver at the NEOS Server at Argonne National Laboratories. There you can submit and solve your AMPL models online.
And to say it once technically: IPOPT implements an interior point
line search filter method.
How can I get it?
IPOPT is written in Fortran 77 (and a little bit of C) and is released as
open source code under the Common Public License (CPL).
It is available from the COIN-OR
repository. You can obtain it either via CVS (see the COIN-FAQ)
or in form of nightly generated tarballs. Individual files
can also be obtained from the CVS
web interface. A Matlab interface is currently being developed.
As open source software, the source
code for IPOPT is provided without charge. You are free to use it,
also for commercial purposes. You are also free to modify the source
code (with the restriction that you need to make your changes public if you
decide to distribute your version in any way, e.g. as an executable); for
details see the LICENSE
file. And we are certainly very keen on feedback
from users, including contributions!
In order to compile IPOPT, certain third party code is required (such as
some linear algebra routines, or the AMPL Solver Library). Those are
available under different conditions/licenses.
We provide this program in the hope that it may be useful to others, and
we would very much like to hear about your experience with it. If you
found it helpful and are using it within our software, we would like to include
you in our user list below.
Since a lot of time and effort has gone into IPOPT's development, please cite the following publication if you are using IPOPT for your own
A. Wächter and
L. T. Biegler, On the Implementation of a Primal-Dual Interior Point Filter
Line Search Algorithm for Large-Scale Nonlinear Programming,
Research Report, IBM T. J. Watson Research Center, Yorktown,
USA, (March 2004 - accepted for publication in Mathematical Programming) [ps, ps.gz, pdf]
How can I learn more about it?
- Some more general information is available in the README
file. Installation instructions are provided in the INSTALL
file (or its short version QUICKINSTALL).
A detailed documentation of the interface and algorithmic options is
given in the README.IPOPT
file. Also, some remarks on using IPOPT on Windows can be found in the
file. Finally, a table with the most important options is given here.
- If you are interested in the mathematical details of the algorithm,
you may want to have a look at the above paper [ps, ps.gz, pdf].
Additional aspects of the method are described in this PhD thesis:[ps, pdf].
- There also exists a mailing
list for the IPOPT project. Here we post announcements, and users
can submit their comments, bug reports, questions etc. (Note:
You need to subscribe to the mailing list before you can submit a
message - this way we avoid that subscribers are overloaded by spam
- Carl Laird has provided his nice slides from an IPOPT tutorial given at the INFORMS meeting in Denver [slides only, with notes]
Who is involved in IPOPT?
The main author and project leader is Andreas Wächter.
The other original authors are Lorenz T. Biegler,
Yi-Dong Lang, Arvind Raghunathan. A new C++ re-implementation is being developed by Andreas Wächter and Carl Laird.
Further contributors are:
We are also very greatful for helpful feedback and comments from: Juan
Arrieta, Hande Benson, Gerd Bürger, Andrew Conn, Antonio Flores, Sebastien
Gros, Tobias Jockenhövel, Dieter Kraft, Carl Laird, Petros Mamales,
Hans Mittelmann, Ned Nedialkov, Jorge Nocedal, Jorge Paloschi, Richard Waltz.
- Dominique Orban (update of CUTEr interface)
- Krik Abbott (C-interface)
Who is using IPOPT?
Yes, this is what we would like to know, too! :) So, if you are using
it, please let us know!
Currently, IPOPT is/has been used in the following projects/products:
- other COIN-OR projects: NLPAPI
- several research projects in Larry Biegler's group at CMU, including one with Ipopt as optimization engine in the process simulator ROMeoTM (slides)
- in the IBM-internal circuit tuning tool EinsTuner
- in ABB's Pulp and Paper Online Production Optimizer
- Tobias Jockenhövel's OptControlCentre
- by Ned
Nedialkov in the context of solving Differential-Algebraic Equations
- at the Munich University of Applied Sciences (for the course on "Modeling, Simulation and Optimization" by Dieter Kraft)
- by Juan Arrieta, in the computation of optimal trajectories for spacecraft and related astronautics problems
- who/what did we forget? Let us know!
If you have any questions or comments please send a message to the mailing
(preferred), or to andreasw at watson.ibm.com. Please include detailed
information about your configuration (operating system, compilers,
version number of Ipopt, etc) if you are writing about a compilation or
execution problem. (Note: You need to subscribe to the mailing list before you can post a message.)
Copyright (C) 2002, 2004, 2005 Carnegie Mellon University, IBM, and others.
All Rights Reserved.
This code is published under the Common Public License.