[ADOL-C] Incorrect calculus of hessian

Andrea Walther andrea.walther at uni-paderborn.de
Tue Jul 5 08:34:33 EDT 2011


Hi,

two points lead to the wrong derivatives found by the
derivative checker:

1) the recovery algorithm used for the sparse Hessian

    you used in line 114/115
	
	options[0] = 0;
	options[1] = 1;  // meaning indirect recovery

    the indirect recovery has the advantage that the number of
    derivative compuations is smaller compared to the direct recovery.
    However, there seems to be a bug in the recovery algorithm.
    Since this is due to the ColPack I would like to report them on this
    problem. Would it be OK for you if I send them your code as
    example?

    Using

	options[1] = 0;  // meaning direct recovery

    works OK

2) Unfortunately, ADOL-C is not consistent with handling symmetry.
   The sparsity pattern returned by sparse_hessian provides information
   for the upper half instead of the lower half as provided by the
   hessian driver

   Hence changing line 138  to

          if(rindHess[i] < n && cindHess[i] >= rindHess[i]){

   using >= instead of <= and line 545 to

          if(rindHess[i] < n && cindHess[i] >= rindHess[i]){

   again using >= instead of <=

should do the job.

At least on my computer the derivative checker does not report
any error when incorporating these changes. I hope this is the
same on yours.

Best regards,

Andrea Walther

-- 
Prof. Dr. Andrea Walther
Lehrstuhl fuer Mathematik und ihre Anwendungen
Institut fuer Mathematik
Universitaet Paderborn
Warburger Str. 100
33098 Paderborn

Email: andrea.walther at uni-paderborn.de
Phone: ++49 5251 602721
Fax:   ++49 5251 603728

**********



More information about the ADOL-C mailing list