# [Coin-ipopt] 2 questions about hessian info calculations

Andreas Waechter andreasw at watson.ibm.com
Sat Feb 26 10:32:46 EST 2005

```Hi Saeed,

> dear andreas
> this is list of questions:
>
>  1- if we don't have hessian info, what is best option to be used by
> IPOPT? (only one method or severall options?)

You are probably using the "full-space" algorithm?  In that case, there
is basically only the limited memory BFGS option (iquasi=+6 or -6)

If you have only few degrees of freedom (i.e. number of variables minus
number of equality constraints is small), then the reduced space option
might also be possible for your approach, in which case you have all the
other options as well (I then would recommend to first try iquasi=-2).

These quasi-Newton options are not as robust and efficient as using second
derivatives.  I.e., if you can, it would probably much better if you used
second derivatives.

>  2- if i calculate hessian with a finite-difference method ( such as
> df(x)=f(x+h)/h ) , is there any difference between it and what will be
> done by IPOPT when we run it only by jacobian?

Yes, there is a big difference.  The quasi-Newton options in IPOPT update
an approximation of the Hessian (e.g. with BFGS or SR1, using only one
gradient/Jacobian evalution per iteration), whereas a finite difference
approximation requires many more of those evaluations (but would give you
a much better approximation of the Hessian).  If you are seriously
thinking about using finite difference for obtaining the Hessian matrix,
make sure that you try to still keep the Hessian as sparse as you can.

My recommendation would be:  Try iquasi=6,-6, and if that works you are
lucky.  Otherwise, if your functions are given as formulas and are not
extremely complicated, I would try to see if I could go through the pain
of doing the math and compute them (or use some automatic differention
tool)...

Andreas

PS: I'm assuming that you are not using AMPL but have your own Fortran/C
functions to compute the model functions and derivatives.  AMPL would
compute all derivatives (including second) for you.

```