imaging::Lbfgs Class Reference
[Minimization Module]

Minimizes differentiable energies using the Limited Memory BFGS method (a Quasi-Newton method). More...

#include <Lbfgs.hpp>

Inheritance diagram for imaging::Lbfgs:


List of all members.

Public Member Functions

 Lbfgs (DifferentiableEnergyInterface &energy, float_t epsilon=1.0e-5, float_t line_search_f_tolerance=1.0e-4, float_t line_search_g_tolerance=0.9, size_t n_correction_steps=6, size_t n_max_line_search_steps=20)
bool minimize (size_t n_max_steps, size_t &n_steps)

Detailed Description

Minimizes differentiable energies using the Limited Memory BFGS method (a Quasi-Newton method).

Minimizes a given energy by means of a Newton type method with estimated Hessian. This class and its documentation is based on liblbfgs, a C library of Limited memory BFGS (L-BFGS) by Jorge Nocedal and Naoaki Okazaki.

Constructor & Destructor Documentation

imaging::Lbfgs::Lbfgs ( DifferentiableEnergyInterface energy,
float_t  epsilon = 1.0e-5,
float_t  line_search_f_tolerance = 1.0e-4,
float_t  line_search_g_tolerance = 0.9,
size_t  n_correction_steps = 6,
size_t  n_max_line_search_steps = 20 

Construct a Lbfgs object to minimize energy. To actually start the minimization the user must call minimize().

epsilon This parameter determines the accuracy with which the solution is to be found. A minimization terminates when ||g|| < epsilon * max(1, ||x||), where ||.|| denotes the Euclidean (L2) norm. The default value is 1e-5.
line_search_f_tolerance A parameter to control the accuracy of the line search routine. The default value is 1e-4. This parameter should be greater than zero and smaller than 0.5.
line_search_g_tolerance The default value is 0.9. If the function gradient evaluations are inexpensive with respect to the cost of the iteration (which is sometimes the case when solving very large problems) it may be advantageous to set this parameter to a small value. A typical small value is 0.1. This parameter should be greater than the line_search_f_tolerance parameter (1e-4) and smaller than 1.0.
n_correction_steps The number of corrections to approximate the inverse hessian matrix. The L-BFGS routine stores the computation results of previous n_correction_steps iterations to approximate the inverse hessian matrix of the current iteration. This parameter controls the size of the limited memories (corrections). The default value is 6. Values less than 3 are not recommended. Large values will result in excessive computing time.
n_max_line_search_steps The maximum number of trials for the line search. This parameter controls the number of function and gradients evaluations per iteration for the line search routine. The default value is 20.

Member Function Documentation

bool imaging::Lbfgs::minimize ( size_t  n_max_steps,
size_t n_actual_steps 
) [virtual]

Start the minimization process. At most n_max_steps will be performed. If the convergence criterion (as set in the constructor) is met before the number of maximal steps is reached the function returns true. Otherwise it returns false. The actual number of performed stops is stored in n_steps. Upon return, the energy (as set in the constructor) will have the solution as its current argument.

Implements imaging::MinimizerInterface.

References imaging::EnergyInterface::current_argument(), imaging::MessageInterface::DEBUG_ONLY, imaging::EnergyInterface::dimension(), and imaging::MessageInterface::out.

The documentation for this class was generated from the following files:

Generated on Tue Feb 10 10:01:31 2009 for imaging2 by  doxygen 1.5.5