Homepage of IPOPT 2.3.x

A software package for large-scale nonlinear optimization

NOTE: 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 a problem.

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 and GAMS 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 the source code in form of a tarball.

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 research:

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,
Mathematical Programming 106(1), pp. 25-57, 2006

How can I learn more about it?

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, and 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.

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:


If you have any questions or comments please send a message to the mailing list. (Note: You need to subscribe to the mailing list before you can post a message.) However, note that the Fortran version is no longer maintained and compilation or execution problems are not fixed.


Copyright (C) 2002, 2004, 2005 Carnegie Mellon University, IBM, and others.
All Rights Reserved.
This code is published under the Common Public License.