[Coin-ipopt] Quasi-Newton options and the C interface for Ipopt

Andreas Waechter andreasw at watson.ibm.com
Thu Oct 7 13:23:28 EDT 2004

Hi Roman,

(I'm copying my reply to the Ipopt mailing list in case someone else ran
into the same problem.)

> Martin Burger and I use your IPOPT-Code for some topology optimization problem
> with stress constraints. The code works very fine and reliable and it was
> easy to install and use.

I'm very happy to hear this!

> Except for the following: Basically we want to use BFGS-updating but I could
> not manage to use the EV_H_DUMMY funtion as described in the README.IPOPT
> file. Is it a problem that it is not listed in the inferface file
> 'Ipopt_Interface.h' ?
> Somehow the linker never was able to find it.
> I tried e.g. to do the following call:
>       problem = Ipopt_Create( n, m, nlb, ilb, bnds_l, nub, iub, bnds_u,
>                                              Eval_F, Eval_C, Eval_G, Eval_A,
>                                              EV_H_DUMMY );
> Even if I provide an interface on my own for EV_H_DUMMY it doesn't work.
> So could you please give me a hint how EV_H_DUMMY and BFGS is used?

If you want to use the C interface for Ipopt in the quasi-Newton mode, you
don't need to set the function for evaluating the Hessian of the
Lagrangian.  You can simply set the Eval_H argument in Ipopt_Create to
NULL (i.e. you would have "NULL" instead of "EV_H_DUMMY" above).  I just
tried this with the C example (example.c), and it worked.

This wasn't documented in the code.  I just added a comment in
Ipopt_Interface.c stating this explicitly.

Many thanks for pointing this out!

> Another thing is that we would like to incoperate our own stopping criteria
> provided by an own function. Do you think something like this is possible?

With the current Fortran version of the code this is not quite
straight-forward.  Admittedly, the code is a bit messy...  If you want,
you could try to have a look at the subroutine OPTERROR in the file
error.F, which implements the current calculation of the optimality error.
We are working in a complete reimplementation of Ipopt in C++, which
should be much easier to understand and more modular, and with that it
would be much easier to replace the stopping criteria (we hope to have a
beta version out soon).  Anyway, we can continue the discussion offline
(not over the mailing list) if you want.



More information about the Coin-ipopt mailing list