![]() |
Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages |
ITK version of the lbfgs algorithm ... More...
#include <itkQuasiNewtonLBFGSOptimizer.h>
ITK version of the lbfgs algorithm ...
This class is an ITK version of the netlib lbfgs_ function. It gives exactly the same results, if used in combination with the itk::MoreThuenteLineSearchOptimizer.
The optimizer solves the unconstrained minimization problem
using the limited memory BFGS method. The routine is especially effective on problems involving a large number of variables. In a typical iteration of this method an approximation to the inverse of the Hessian is obtained by applying
BFGS updates to a diagonal matrix
, using information from the previous
steps. The user specifies the number
(Memory), which determines the amount of storage required by the routine.
The algorithm is described in "On the limited memory BFGS method for large scale optimization", by D. Liu and J. Nocedal, Mathematical Programming B 45 (1989) 503-528.
The steplength is determined at each iteration by means of a line search routine. The itk::MoreThuenteLineSearchOptimizer works well.
Definition at line 54 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef SmartPointer<const Self> itk::QuasiNewtonLBFGSOptimizer::ConstPointer |
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
Definition at line 61 of file itkQuasiNewtonLBFGSOptimizer.h.
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
Definition at line 68 of file itkQuasiNewtonLBFGSOptimizer.h.
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
Definition at line 67 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef Array<double> itk::QuasiNewtonLBFGSOptimizer::DiagonalMatrixType |
Definition at line 76 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 79 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 77 of file itkQuasiNewtonLBFGSOptimizer.h.
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Definition at line 70 of file itkQuasiNewtonLBFGSOptimizer.h.
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
Definition at line 64 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef SmartPointer<Self> itk::QuasiNewtonLBFGSOptimizer::Pointer |
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
Definition at line 60 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef Array<double> itk::QuasiNewtonLBFGSOptimizer::RhoType |
Definition at line 73 of file itkQuasiNewtonLBFGSOptimizer.h.
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Definition at line 69 of file itkQuasiNewtonLBFGSOptimizer.h.
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
Definition at line 71 of file itkQuasiNewtonLBFGSOptimizer.h.
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
Definition at line 58 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef std::vector<ParametersType> itk::QuasiNewtonLBFGSOptimizer::SType |
Definition at line 74 of file itkQuasiNewtonLBFGSOptimizer.h.
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Definition at line 59 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef std::vector<DerivativeType> itk::QuasiNewtonLBFGSOptimizer::YType |
Definition at line 75 of file itkQuasiNewtonLBFGSOptimizer.h.
MetricError | |
LineSearchError | |
MaximumNumberOfIterations | |
InvalidDiagonalMatrix | |
GradientMagnitudeTolerance | |
ZeroStep | |
Unknown |
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
Definition at line 81 of file itkQuasiNewtonLBFGSOptimizer.h.
itk::QuasiNewtonLBFGSOptimizer::QuasiNewtonLBFGSOptimizer | ( | ) | [protected] |
virtual itk::QuasiNewtonLBFGSOptimizer::~QuasiNewtonLBFGSOptimizer | ( | ) | [inline, protected, virtual] |
Definition at line 128 of file itkQuasiNewtonLBFGSOptimizer.h.
itk::QuasiNewtonLBFGSOptimizer::QuasiNewtonLBFGSOptimizer | ( | const Self & | ) | [private] |
virtual void itk::QuasiNewtonLBFGSOptimizer::ComputeDiagonalMatrix | ( | DiagonalMatrixType & | diag_H0 | ) | [protected, virtual] |
Compute H0
Override this method if not satisfied with the default choice.
virtual void itk::QuasiNewtonLBFGSOptimizer::ComputeSearchDirection | ( | const DerivativeType & | gradient, |
ParametersType & | searchDir | ||
) | [protected, virtual] |
Compute -Hg
COMPUTE -H*G USING THE FORMULA GIVEN IN: Nocedal, J. 1980, "Updating quasi-Newton matrices with limited storage", Mathematics of Computation, Vol.24, No.151, pp. 773-782.
virtual const char* itk::QuasiNewtonLBFGSOptimizer::GetClassName | ( | ) | const [virtual] |
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
virtual const DerivativeType& itk::QuasiNewtonLBFGSOptimizer::GetCurrentGradient | ( | ) | [virtual] |
virtual unsigned long itk::QuasiNewtonLBFGSOptimizer::GetCurrentIteration | ( | ) | const [virtual] |
Get information about optimization process:
virtual double itk::QuasiNewtonLBFGSOptimizer::GetCurrentStepLength | ( | ) | const [virtual] |
virtual MeasureType itk::QuasiNewtonLBFGSOptimizer::GetCurrentValue | ( | ) | const [virtual] |
virtual double itk::QuasiNewtonLBFGSOptimizer::GetGradientMagnitudeTolerance | ( | ) | const [virtual] |
Setting: the mininum gradient magnitude.
The optimizer stops when: ||CurrentGradient|| < GradientMagnitudeTolerance * max(1, ||CurrentPosition||)
virtual bool itk::QuasiNewtonLBFGSOptimizer::GetInLineSearch | ( | ) | const [virtual] |
virtual LineSearchOptimizerType* itk::QuasiNewtonLBFGSOptimizer::GetLineSearchOptimizer | ( | ) | [virtual] |
virtual unsigned long itk::QuasiNewtonLBFGSOptimizer::GetMaximumNumberOfIterations | ( | ) | const [virtual] |
Setting: the maximum number of iterations
virtual unsigned int itk::QuasiNewtonLBFGSOptimizer::GetMemory | ( | ) | const [virtual] |
virtual const StopConditionType& itk::QuasiNewtonLBFGSOptimizer::GetStopCondition | ( | ) | [virtual] |
virtual void itk::QuasiNewtonLBFGSOptimizer::LineSearch | ( | const ParametersType | searchDir, |
double & | step, | ||
ParametersType & | x, | ||
MeasureType & | f, | ||
DerivativeType & | g | ||
) | [protected, virtual] |
Perform a line search along the search direction. On calling, x, f, and g should contain the current position, the cost function value at this position, and the derivative. On return the step, x (new position), f (value at x), and g (derivative at x) are updated.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
static Pointer itk::QuasiNewtonLBFGSOptimizer::New | ( | ) | [static] |
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
void itk::QuasiNewtonLBFGSOptimizer::operator= | ( | const Self & | ) | [private] |
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
void itk::QuasiNewtonLBFGSOptimizer::PrintSelf | ( | std::ostream & | os, |
Indent | indent | ||
) | const [inline, protected] |
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Definition at line 131 of file itkQuasiNewtonLBFGSOptimizer.h.
virtual void itk::QuasiNewtonLBFGSOptimizer::ResumeOptimization | ( | void | ) | [virtual] |
virtual void itk::QuasiNewtonLBFGSOptimizer::SetGradientMagnitudeTolerance | ( | double | _arg | ) | [virtual] |
virtual void itk::QuasiNewtonLBFGSOptimizer::SetInLineSearch | ( | bool | _arg | ) | [protected, virtual] |
virtual void itk::QuasiNewtonLBFGSOptimizer::SetLineSearchOptimizer | ( | LineSearchOptimizerType * | _arg | ) | [virtual] |
Setting: the line search optimizer
virtual void itk::QuasiNewtonLBFGSOptimizer::SetMaximumNumberOfIterations | ( | unsigned long | _arg | ) | [virtual] |
virtual void itk::QuasiNewtonLBFGSOptimizer::SetMemory | ( | unsigned int | _arg | ) | [virtual] |
Setting: the memory. The number of iterations that are used to estimate the Hessian. 5 by default. 0 results in (normalised) gradient descent search directions
virtual void itk::QuasiNewtonLBFGSOptimizer::StartOptimization | ( | void | ) | [virtual] |
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
virtual void itk::QuasiNewtonLBFGSOptimizer::StopOptimization | ( | void | ) | [virtual] |
virtual void itk::QuasiNewtonLBFGSOptimizer::StoreCurrentPoint | ( | const ParametersType & | step, |
const DerivativeType & | grad_dif | ||
) | [protected, virtual] |
Store s = x_k - x_k-1 and y = g_k - g_k-1 in m_S and m_Y, and store 1/(ys) in m_Rho.
virtual bool itk::QuasiNewtonLBFGSOptimizer::TestConvergence | ( | bool | firstLineSearchDone | ) | [protected, virtual] |
Check if convergence has occured; The firstLineSearchDone bool allows the implementation of TestConvergence to decide to skip a few convergence checks when no line search has performed yet (so, before the actual optimisation begins)
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
unsigned int itk::QuasiNewtonLBFGSOptimizer::m_Bound [protected] |
Definition at line 149 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 131 of file itkQuasiNewtonLBFGSOptimizer.h.
unsigned long itk::QuasiNewtonLBFGSOptimizer::m_CurrentIteration [protected] |
Definition at line 135 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 138 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 134 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 197 of file itkQuasiNewtonLBFGSOptimizer.h.
bool itk::QuasiNewtonLBFGSOptimizer::m_InLineSearch [protected] |
Is true when the LineSearchOptimizer has been started.
Definition at line 141 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 198 of file itkQuasiNewtonLBFGSOptimizer.h.
unsigned long itk::QuasiNewtonLBFGSOptimizer::m_MaximumNumberOfIterations [private] |
Definition at line 196 of file itkQuasiNewtonLBFGSOptimizer.h.
unsigned int itk::QuasiNewtonLBFGSOptimizer::m_Memory [private] |
Definition at line 199 of file itkQuasiNewtonLBFGSOptimizer.h.
unsigned int itk::QuasiNewtonLBFGSOptimizer::m_Point [protected] |
Definition at line 147 of file itkQuasiNewtonLBFGSOptimizer.h.
unsigned int itk::QuasiNewtonLBFGSOptimizer::m_PreviousPoint [protected] |
Definition at line 148 of file itkQuasiNewtonLBFGSOptimizer.h.
RhoType itk::QuasiNewtonLBFGSOptimizer::m_Rho [protected] |
Definition at line 143 of file itkQuasiNewtonLBFGSOptimizer.h.
SType itk::QuasiNewtonLBFGSOptimizer::m_S [protected] |
Definition at line 144 of file itkQuasiNewtonLBFGSOptimizer.h.
bool itk::QuasiNewtonLBFGSOptimizer::m_Stop [protected] |
Definition at line 137 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 136 of file itkQuasiNewtonLBFGSOptimizer.h.
YType itk::QuasiNewtonLBFGSOptimizer::m_Y [protected] |
Definition at line 145 of file itkQuasiNewtonLBFGSOptimizer.h.
Generated on 24-10-2011 for elastix by ![]() |
![]() |