[Ipopt] Questions about derivative checker in my application

lqc234 lqc234 at 126.com
Thu Aug 20 23:27:53 EDT 2009



Hi all subscribers, hi Andreas,
I used Ipopt for my own application. And I used the derivative checker for my  evaluation of derivatives. There is no error reported for the objective function for the first-order derivative checker. However ,there are some errors about the Hessian matrix of the objective function. I wondered whether the second-order information of the hessian for the objective function should be theoretic right  under the condition that its  first-order is right. Followings  are the error reports of derivative checker of Ipopt:

The first-order information of the objective function is ok,as follows:
******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Common Public License (CPL).
         For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************
This is Ipopt version 3.6.1, running with linear solver ma27.
(For clearity,I omit some other information like 
jac_g [    0,    0] = 2.4192580346748699e+001 v  ~ 2.4192580738713332e+001  [1.620e-008] and so on
 )
Starting derivative checker for first derivatives.
  grad_f[          0] = 1.1608347103501686e+001    ~ 1.1608346994762542e+001  [9.367e-009]
  grad_f[          1] = 1.3365414915309747e+001    ~ 1.3365414844164443e+001  [5.323e-009]
  grad_f[          2] = 1.5796283347597537e+000    ~ 1.5796285168789836e+000  [1.153e-007]
  grad_f[          3] = 2.5003454442918516e+000    ~ 2.5003461525306485e+000  [2.833e-007]
  grad_f[          4] = 9.7099243229060797e+000    ~ 9.7099249413737549e+000  [6.369e-008]
  grad_f[          5] = -1.0773179814837853e+001    ~ -1.0773178971135167e+001  [7.832e-008]
  grad_f[          6] = 4.2161665105716217e+000    ~ 4.2161666158335720e+000  [2.497e-008]
  grad_f[          7] = 3.7573752776060099e+000    ~ 3.7573754636433470e+000  [4.951e-008]

Howerver ,some erros reported in second-order derivative checker:
Starting derivative checker for second derivatives.
 
              obj_hess[    0,    0] = 2.1667999999999999e+001 v  ~ 2.1668000016461519e+001  [7.597e-010]
              obj_hess[    0,    1] = 1.4846332882348406e+001 v  ~ 1.4846332874185464e+001  [5.498e-010]
              obj_hess[    0,    2] = -6.3199549447439418e-001 v  ~ -6.3199543376413203e-001  [6.071e-008]
              obj_hess[    0,    3] = -3.0727543785496283e+000 v  ~ -3.0727544064745871e+000  [9.088e-009]
              obj_hess[    0,    4] = 3.4428446955109338e-001 v  ~ 3.4428424555699166e-001  [2.240e-007]
              obj_hess[    0,    5] = -3.3725573097898369e+000 v  ~ -3.3725569892339990e+000  [9.505e-008]
              obj_hess[    0,    6] = -4.6717664533426682e+000 v  ~ -4.6717665291851063e+000  [1.623e-008]
              obj_hess[    0,    7] = 1.7283918699941374e+000 v  ~ 1.7283918296584488e+000  [2.334e-008]
*             obj_hess[    1,    0] = 1.4846332882348406e+001 v  ~ 9.1281670944770920e+008  [1.000e+000]
*             obj_hess[    1,    1] = 7.1104243742634594e+000 v  ~ 1.0509828614292449e+009  [1.000e+000]
*             obj_hess[    1,    2] = 2.9470153244501667e+000 v  ~ 1.2421330133431286e+008  [1.000e+000]
*             obj_hess[    1,    3] = -5.3405494070519410e-001 v  ~ 1.9661343399021125e+008  [1.000e+000]
*             obj_hess[    1,    4] = 2.9853884066737142e+000 v  ~ 7.6353513713819706e+008  [1.000e+000]
*             obj_hess[    1,    5] = 3.1521177446064130e-001 v  ~ -8.4714371002286768e+008  [1.000e+000]
*             obj_hess[    1,    6] = -1.6040120801053943e+000 v  ~ 3.3153617915217382e+008  [1.000e+000]
*             obj_hess[    1,    7] = -4.0798313132651529e+000 v  ~ 2.9545935826156133e+008  [1.000e+000]
.             ..............................
.             ..............................
.             ..............................
*             obj_hess[    7,    6] = 3.8733499986256832e+000 v  ~ 3.7267636760748780e+008  [1.000e+000]
*             obj_hess[    7,    7] = 2.9676708730317345e+000 v  ~ 3.3212278660882109e+008  [1.000e+000]


And I noticed that the derivative results computed by the finite difference of Ipopt is huge, e.g 2.2544251702905512e+009  , 2.2101112672395563e+008  .Why the obj_hess[0][] of the finite differences is resonable and  almost identical with the values based on my own  code , while others are totally unresonable and  have too huge errors compared to my results?


 
Thanks for any help!!!!!!!!!!!!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.coin-or.org/pipermail/ipopt/attachments/20090821/5af1dd4a/attachment.html 


More information about the Ipopt mailing list