ConjugateGradient Class Reference

Multi-dimensional Conjugate Gradient class. More...

#include <ql/math/optimization/conjugategradient.hpp>

Inherits LineSearchBasedMethod.

Public Member Functions

 ConjugateGradient (const boost::shared_ptr< LineSearch > &lineSearch=boost::shared_ptr< LineSearch >())
 
- Public Member Functions inherited from LineSearchBasedMethod
 LineSearchBasedMethod (const boost::shared_ptr< LineSearch > &lSearch=boost::shared_ptr< LineSearch >())
 
virtual EndCriteria::Type minimize (Problem &P, const EndCriteria &endCriteria)
 
- Public Member Functions inherited from OptimizationMethod
virtual EndCriteria::Type minimize (Problem &P, const EndCriteria &endCriteria)=0
 minimize the optimization problem P
 

Additional Inherited Members

- Protected Member Functions inherited from LineSearchBasedMethod
virtual Disposable< ArraygetUpdatedDirection (const Problem &P, Real gold2, const Array &gradient)=0
 computes the new search direction
 
- Protected Attributes inherited from LineSearchBasedMethod
boost::shared_ptr< LineSearchlineSearch_
 line search
 

Detailed Description

Multi-dimensional Conjugate Gradient class.

Fletcher-Reeves-Polak-Ribiere algorithm adapted from Numerical Recipes in C, 2nd edition.

User has to provide line-search method and optimization end criteria. Search direction $ d_i = - f'(x_i) + c_i*d_{i-1} $ where $ c_i = ||f'(x_i)||^2/||f'(x_{i-1})||^2 $ and $ d_1 = - f'(x_1) $