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

Sean C McDuffee scmcduff at blueskystudios.com
Thu Nov 15 12:44:23 EST 2012


der der der - thanks

On 11/15/2012 12:11 PM, Johannes Huber wrote:
> Since the Hessian is always symmetric, you only need to specify the lower or upper triangular matrix for Ipopt. Otherwise it is added up resulting in doubles matrix entries.
> I guess, you specified the full matrix instead of only one triangular of it.
> Best,
>      Hannes
> ________________________________________
> From: ipopt-bounces at list.coin-or.org [ipopt-bounces at list.coin-or.org] on behalf of Sean C McDuffee [scmcduff at blueskystudios.com]
> Sent: Thursday, November 15, 2012 5:47 PM
> To: ipopt at list.coin-or.org
> Subject: [Ipopt] Off-diagonal elements in hessian are being doubled
>
> 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