[Ipopt] Off-diagonal elements in hessian are being doubled

Stefan Vigerske stefan at math.hu-berlin.de
Thu Nov 15 12:03:19 EST 2012


Hi,

Ipopt expects to get only the lower off-diagonal or only the upper 
off-diagonal elements.
The easy fix is to just specify diagonal and lower diagonal elements.

Best,
Stefan

On 11/15/2012 05:47 PM, Sean C McDuffee wrote:
> My hessian is filling out the following matrix:
>
>   300    0    0    0 -300    0    0    0    0    0    0
>     0  100    0    0    0 -100    0    0    0    0    0
>     0    0  100    0    0    0 -100    0    0    0    0
>     0    0    0    0    0    0    0    0    0    0    0
> -300    0    0    0  600    0    0    0 -300    0    0
>     0 -100    0    0    0  200    0    0    0 -100    0
>     0    0 -100    0    0    0  200    0    0    0 -100
>     0    0    0    0    0    0    0    0    0    0    0
>     0    0    0    0 -300    0    0    0  300    0    0
>     0    0    0    0    0 -100    0    0    0  100    0
>     0    0    0    0    0    0 -100    0    0    0  100
>
> but the derivative checker is outputting:
>
> *             obj_hess[    0,    4] = -6.0000000000000000e+02 v  ~
> -2.9999999924257281e+02  [ 1.000e+00]
> *             obj_hess[    1,    5] = -2.0000000000000003e+02 v  ~
> -1.0000000000000000e+02  [ 1.000e+00]
> *             obj_hess[    2,    6] = -2.0000000000000003e+02 v  ~
> -1.0000000000000000e+02  [ 1.000e+00]
> *             obj_hess[    4,    0] = -6.0000000000000000e+02 v  ~
> -2.9999999924257281e+02  [ 1.000e+00]
> *             obj_hess[    4,    8] = -6.0000000000000000e+02 v  ~
> -2.9999999924257281e+02  [ 1.000e+00]
> *             obj_hess[    5,    1] = -2.0000000000000003e+02 v  ~
> -1.0000000000000000e+02  [ 1.000e+00]
> *             obj_hess[    5,    9] = -2.0000000000000003e+02 v  ~
> -1.0000000000000000e+02  [ 1.000e+00]
> *             obj_hess[    6,    2] = -2.0000000000000003e+02 v  ~
> -1.0000000000000000e+02  [ 1.000e+00]
> *             obj_hess[    6,   10] = -2.0000000000000003e+02 v  ~
> -1.0000000000000000e+02  [ 1.000e+00]
> *             obj_hess[    8,    4] = -6.0000000000000000e+02 v  ~
> -2.9999999810570444e+02  [ 1.000e+00]
> *             obj_hess[    9,    5] = -2.0000000000000003e+02 v  ~
> -1.0000000000000000e+02  [ 1.000e+00]
> *             obj_hess[   10,    6] = -2.0000000000000003e+02 v  ~
> -1.0000000000000000e+02  [ 1.000e+00]
>
> I've checked my setup and the values array and it conforms to the above,
> correct matrix.  Can anybody help?
>
> Thanks,
> Sean
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>



More information about the Ipopt mailing list