imaging::NlCg Class Reference
[Minimization Module]

Minimizes differentiable energies using nonlinear conjugated gradients. More...

#include <NlCg.hpp>

Inheritance diagram for imaging::NlCg:

imaging::MinimizerInterface

List of all members.

Public Types

enum  methods { FLETCHER_REEVES, POLAK_RIBIERE, POSITIVE_POLAK_RIBIERE }

Public Member Functions

 NlCg (DifferentiableEnergyInterface &energy, float_t convergence_constant, size_t method=FLETCHER_REEVES)
bool minimize (size_t n_max_steps, size_t &n_steps)


Detailed Description

Minimizes differentiable energies using nonlinear conjugated gradients.

Minimizes a given energy by means of the nonlinear conjugated gradients algorithm. This class is based on CG+, a Software for Large-scale Unconstrained Optimization by Guanghui Liu, Jorge Nocedal and Richard Waltz.


Member Enumeration Documentation

Enumerator:
FLETCHER_REEVES  Fletcher-Reeves
POLAK_RIBIERE  Polak-Ribiere
POSITIVE_POLAK_RIBIERE  positive Polak-Ribiere


Constructor & Destructor Documentation

imaging::NlCg::NlCg ( DifferentiableEnergyInterface energy,
float_t  convergence_constant,
size_t  method = FLETCHER_REEVES 
)

Construct a NlCg object to minimize energy. The algorithm stops if the L2-norm of the solution falls below convergence_constant. To actually start the minimization the user must call minimize().

References FLETCHER_REEVES, POLAK_RIBIERE, and POSITIVE_POLAK_RIBIERE.


Member Function Documentation

bool imaging::NlCg::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::EnergyInterface::current_energy(), imaging::DifferentiableEnergyInterface::current_gradient(), imaging::MessageInterface::DEBUG_ONLY, imaging::EnergyInterface::dimension(), imaging::MessageInterface::out, and imaging::DifferentiableEnergyInterface::set_argument_with_gradient().


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