Classes |
struct | Parameters |
Public Types |
typedef FunctorType::VectorType | FVectorType |
typedef Eigen::DenseIndex | Index |
typedef FunctorType::Scalar | Scalar |
Public Member Functions |
| BFGS (FunctorType &_functor) |
BFGSSpace::Status | minimize (FVectorType &x) |
BFGSSpace::Status | minimizeInit (FVectorType &x) |
BFGSSpace::Status | minimizeOneStep (FVectorType &x) |
void | resetParameters (void) |
BFGSSpace::Status | testGradient (Scalar epsilon) |
Public Attributes |
Scalar | f |
FVectorType | gradient |
Parameters | parameters |
Private Member Functions |
Scalar | applyDF (Scalar alpha) |
Scalar | applyF (Scalar alpha) |
void | applyFDF (Scalar alpha, Scalar &f, Scalar &df) |
void | changeDirection () |
void | checkExtremum (const Eigen::Matrix< Scalar, 4, 1 > &coefficients, Scalar x, Scalar &xmin, Scalar &fmin) |
Scalar | interpolate (Scalar a, Scalar fa, Scalar fpa, Scalar b, Scalar fb, Scalar fpb, Scalar xmin, Scalar xmax, int order) |
BFGSSpace::Status | lineSearch (Scalar rho, Scalar sigma, Scalar tau1, Scalar tau2, Scalar tau3, int order, Scalar alpha1, Scalar &alpha_new) |
void | moveTo (Scalar alpha) |
BFGS & | operator= (const BFGS &) |
Scalar | slope () |
void | updatePosition (Scalar alpha, FVectorType &x, Scalar &f, FVectorType &g) |
Private Attributes |
Scalar | delta_f |
Scalar | df_alpha |
Scalar | df_cache_key |
FVectorType | dg0 |
FVectorType | dx |
FVectorType | dx0 |
Scalar | f_alpha |
Scalar | f_cache_key |
Scalar | fp0 |
FunctorType & | functor |
FVectorType | g0 |
Scalar | g0norm |
FVectorType | g_alpha |
Scalar | g_cache_key |
Index | iter |
FVectorType | p |
Scalar | pnorm |
FVectorType | x0 |
FVectorType | x_alpha |
Scalar | x_cache_key |
template<typename FunctorType>
class BFGS< FunctorType >
BFGS stands for Broyden–Fletcher–Goldfarb–Shanno (BFGS) method for solving unconstrained nonlinear optimization problems. For further details please visit: http://en.wikipedia.org/wiki/BFGS_method The method provided here is almost similar to the one provided by GSL. It reproduces Fletcher's original algorithm in Practical Methods of Optimization algorithms : 2.6.2 and 2.6.4 and uses the same politics in GSL with cubic interpolation whenever it is possible else falls to quadratic interpolation for alpha parameter.
Definition at line 114 of file bfgs.h.