Here is a good C++ implementation candidate,
http://www.alglib.net/optimization/lbfgs.php
Though, I’m not absolutely sure that the terms of use are compatible with those of QL.
François
-----Original
Message-----
From:
[hidden email]
[mailto:[hidden email]] On Behalf Of Bianchetti Marco
Sent: Wednesday,
May 23, 2007 6:13
PM
To:
[hidden email]
Subject: [Quantlib-dev] optimizers
Hello,
at the moment are available into QuantLib the following optimizers:
· Simplex (recently revisited: the Numerical Recipes implementation badly failed in finding the minimum of a 1D parabole...)
· Levenberg-Marquardt
· Conjugate Gradient
· Steepest Descent (still to be debugged, work in progress)
and we are currently considering the option to port into QuantLib the Broyden-Fletcher-Goldfarb-Shanno (BFGS2) algorithm, which in GSL is declared to be the best (see the text below). So:
· Any comment on the choice of BFGS2? do anyone has experience with it ?
· is anyone aware of an available open source C++ implementation to be ported into Quantlib with small effort ?
Personally, I would prefer NOT to translate the GSL implementation from C to C++, because of the danger to introduce some tricky bug and because it requires a much more sophisticated test suite (and much work).
ciao
Marco
---
These methods use the vector Broyden-Fletcher-Goldfarb-Shanno (BFGS) algorithm. This is a quasi-Newton method which builds up an approximation to the second derivatives of the function f using the difference between successive gradient vectors. By combining the first and second derivatives the algorithm is able to take Newton-type steps towards the function minimum, assuming quadratic behavior in that region.
The
bfgs2version of this minimizer is the most efficient version available, and is a faithful implementation of the line minimization scheme described in Fletcher's Practical Methods of Optimization, Algorithms 2.6.2 and 2.6.4. It supercedes the originalbfgsroutine and requires substantially fewer function and gradient evaluations. The user-supplied tolerance tol corresponds to the parameter \sigma used by Fletcher. A value of 0.1 is recommended for typical use (larger values correspond to less accurate line searches).
| Free forum by Nabble | Edit this page |