Interfacing your NLP to IPOPT

IPOPT has been designed to be flexible for a wide variety of applications, and there are a number of ways to interface with IPOPT that allow specific data structures and linear solver techniques. Nevertheless, the authors have included a standard representation that should meet the needs of most users.

This tutorial will discuss six interfaces to IPOPT, namely the AMPL
modeling language [3] interface, and the C++, C,
Fortran, Java, and R code interfaces. AMPL is a 3rd party modeling language
tool that allows users to write their optimization problem in a syntax
that resembles the way the problem would be written mathematically.
Once the problem has been formulated in AMPL, the problem can be
easily solved using the (already compiled) IPOPT AMPL solver
executable, `ipopt`. Interfacing your problem by directly linking
code requires more effort to write, but can be far more efficient for
large problems.

We will illustrate how to use each of the four interfaces using an
example problem, number 71 from the Hock-Schittkowsky test suite [5],

with the starting point

and the optimal solution

You can find further, less documented examples for using IPOPT from
your own source code in the `Ipopt/examples` subdirectory.