[Ipopt] Off-diagonal elements in hessian are being doubled
Johannes Huber
johannes.huber at unibas.ch
Thu Nov 15 12:11:38 EST 2012
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