Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages |
#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 58 of file itkQuasiNewtonLBFGSOptimizer.h.
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
static Pointer | New () |
Protected Member Functions | |
virtual void | ComputeDiagonalMatrix (DiagonalMatrixType &diag_H0) |
virtual void | ComputeSearchDirection (const DerivativeType &gradient, ParametersType &searchDir) |
virtual void | LineSearch (const ParametersType searchDir, double &step, ParametersType &x, MeasureType &f, DerivativeType &g) |
void | PrintSelf (std::ostream &os, Indent indent) const override |
QuasiNewtonLBFGSOptimizer () | |
virtual void | SetInLineSearch (bool _arg) |
virtual void | StoreCurrentPoint (const ParametersType &step, const DerivativeType &grad_dif) |
virtual bool | TestConvergence (bool firstLineSearchDone) |
~QuasiNewtonLBFGSOptimizer () override | |
Protected Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
virtual void | GetScaledDerivative (const ParametersType ¶meters, DerivativeType &derivative) const |
virtual MeasureType | GetScaledValue (const ParametersType ¶meters) const |
virtual void | GetScaledValueAndDerivative (const ParametersType ¶meters, MeasureType &value, DerivativeType &derivative) const |
void | PrintSelf (std::ostream &os, Indent indent) const override |
ScaledSingleValuedNonLinearOptimizer () | |
void | SetCurrentPosition (const ParametersType ¶m) override |
virtual void | SetScaledCurrentPosition (const ParametersType ¶meters) |
~ScaledSingleValuedNonLinearOptimizer () override | |
Protected Attributes | |
unsigned int | m_Bound |
DerivativeType | m_CurrentGradient |
unsigned long | m_CurrentIteration |
double | m_CurrentStepLength |
MeasureType | m_CurrentValue |
bool | m_InLineSearch |
unsigned int | m_Point |
unsigned int | m_PreviousPoint |
RhoType | m_Rho |
SType | m_S |
bool | m_Stop |
StopConditionType | m_StopCondition |
YType | m_Y |
Protected Attributes inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
ScaledCostFunctionPointer | m_ScaledCostFunction |
ParametersType | m_ScaledCurrentPosition |
Private Member Functions | |
void | operator= (const Self &) |
QuasiNewtonLBFGSOptimizer (const Self &) | |
Private Attributes | |
double | m_GradientMagnitudeTolerance |
LineSearchOptimizerPointer | m_LineSearchOptimizer |
unsigned long | m_MaximumNumberOfIterations |
unsigned int | m_Memory |
typedef SmartPointer< const Self > itk::QuasiNewtonLBFGSOptimizer::ConstPointer |
Definition at line 65 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef Superclass::CostFunctionType itk::QuasiNewtonLBFGSOptimizer::CostFunctionType |
Definition at line 72 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 71 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef Array< double > itk::QuasiNewtonLBFGSOptimizer::DiagonalMatrixType |
Definition at line 80 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 83 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 81 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 74 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef Superclass::ParametersType itk::QuasiNewtonLBFGSOptimizer::ParametersType |
Definition at line 70 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef SmartPointer< Self > itk::QuasiNewtonLBFGSOptimizer::Pointer |
Definition at line 64 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef Array< double > itk::QuasiNewtonLBFGSOptimizer::RhoType |
Definition at line 77 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef Superclass::ScaledCostFunctionType itk::QuasiNewtonLBFGSOptimizer::ScaledCostFunctionType |
Definition at line 73 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef Superclass::ScalesType itk::QuasiNewtonLBFGSOptimizer::ScalesType |
Definition at line 75 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 62 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef std::vector< ParametersType > itk::QuasiNewtonLBFGSOptimizer::SType |
Definition at line 78 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 63 of file itkQuasiNewtonLBFGSOptimizer.h.
typedef std::vector< DerivativeType > itk::QuasiNewtonLBFGSOptimizer::YType |
Definition at line 79 of file itkQuasiNewtonLBFGSOptimizer.h.
Enumerator | |
---|---|
MetricError | |
LineSearchError | |
MaximumNumberOfIterations | |
InvalidDiagonalMatrix | |
GradientMagnitudeTolerance | |
ZeroStep | |
Unknown |
Definition at line 85 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
|
inlineoverrideprotected |
Definition at line 135 of file itkQuasiNewtonLBFGSOptimizer.h.
|
private |
|
protectedvirtual |
Compute H0
Override this method if not satisfied with the default choice.
|
protectedvirtual |
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 |
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::QuasiNewtonLBFGS< TElastix >.
|
virtual |
|
virtual |
Get information about optimization process:
|
virtual |
|
virtual |
|
virtual |
Setting: the mininum gradient magnitude.
The optimizer stops when: ||CurrentGradient|| < GradientMagnitudeTolerance * max(1, ||CurrentPosition||)
|
virtual |
|
virtual |
Setting: the maximum number of iterations
|
virtual |
|
virtual |
itk::QuasiNewtonLBFGSOptimizer::itkGetModifiableObjectMacro | ( | LineSearchOptimizer | , |
LineSearchOptimizerType | |||
) |
|
protectedvirtual |
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 |
|
private |
|
inlineoverrideprotected |
Definition at line 138 of file itkQuasiNewtonLBFGSOptimizer.h.
|
virtual |
|
virtual |
|
protectedvirtual |
|
virtual |
Setting: the line search optimizer
|
virtual |
|
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
|
override |
|
virtual |
|
protectedvirtual |
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.
|
protectedvirtual |
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 >.
|
protected |
Definition at line 156 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 140 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 142 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 145 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 141 of file itkQuasiNewtonLBFGSOptimizer.h.
|
private |
Definition at line 205 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Is true when the LineSearchOptimizer has been started.
Definition at line 148 of file itkQuasiNewtonLBFGSOptimizer.h.
|
private |
Definition at line 206 of file itkQuasiNewtonLBFGSOptimizer.h.
|
private |
Definition at line 204 of file itkQuasiNewtonLBFGSOptimizer.h.
|
private |
Definition at line 207 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 154 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 155 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 150 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 151 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 144 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 143 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 152 of file itkQuasiNewtonLBFGSOptimizer.h.
Generated on 1667476801 for elastix by 1.9.4 |