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

Sean C McDuffee scmcduff at blueskystudios.com
Thu Nov 15 11:47:31 EST 2012


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


More information about the Ipopt mailing list