|
From: DU V. DE V. F. G. P. <fra...@ca...> - 2007-05-23 17:35:29
|
=20 Here is a good C++ implementation candidate,=20 =20 http://www.alglib.net/optimization/lbfgs.php =20 Though, I'm not absolutely sure that the terms of use are compatible = with those of QL.=20 Fran=E7ois =20 -----Original Message----- From: qua...@li... = [mailto:qua...@li...] On Behalf Of = Bianchetti Marco Sent: Wednesday, May 23, 2007 6:13 PM To: qua...@li... Subject: [Quantlib-dev] optimizers =20 Hello, =20 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). =20 ciao Marco =20 --- from: = http://www.gnu.org/software/gsl/manual/html_node/Multimin-Algorithms.html= Minimizer: gsl_multimin_fdfminimizer_vector_bfgs2 Minimizer: gsl_multimin_fdfminimizer_vector_bfgs 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.=20 The bfgs2 version 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 original bfgs routine 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).=20 |