![]() |
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
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 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=default | |
![]() | |
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=default | |
Protected Attributes | |
unsigned int | m_Bound { 0 } |
DerivativeType | m_CurrentGradient |
unsigned long | m_CurrentIteration { 0 } |
double | m_CurrentStepLength { 0.0 } |
MeasureType | m_CurrentValue { 0.0 } |
bool | m_InLineSearch { false } |
unsigned int | m_Point { 0 } |
unsigned int | m_PreviousPoint { 0 } |
RhoType | m_Rho |
SType | m_S |
bool | m_Stop { false } |
StopConditionType | m_StopCondition { Unknown } |
YType | m_Y |
![]() | |
ScaledCostFunctionPointer | m_ScaledCostFunction |
ParametersType | m_ScaledCurrentPosition |
Private Attributes | |
double | m_GradientMagnitudeTolerance { 1e-5 } |
LineSearchOptimizerPointer | m_LineSearchOptimizer { nullptr } |
unsigned long | m_MaximumNumberOfIterations { 100 } |
unsigned int | m_Memory { 5 } |
using itk::QuasiNewtonLBFGSOptimizer::ConstPointer = SmartPointer<const Self> |
Definition at line 66 of file itkQuasiNewtonLBFGSOptimizer.h.
using itk::QuasiNewtonLBFGSOptimizer::DiagonalMatrixType = Array<double> |
Definition at line 81 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 84 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 82 of file itkQuasiNewtonLBFGSOptimizer.h.
using itk::QuasiNewtonLBFGSOptimizer::Pointer = SmartPointer<Self> |
Definition at line 65 of file itkQuasiNewtonLBFGSOptimizer.h.
using itk::QuasiNewtonLBFGSOptimizer::RhoType = Array<double> |
Definition at line 78 of file itkQuasiNewtonLBFGSOptimizer.h.
using itk::ScaledSingleValuedNonLinearOptimizer::ScaledCostFunctionType = ScaledSingleValuedCostFunction |
Definition at line 86 of file itkScaledSingleValuedNonLinearOptimizer.h.
using itk::ScaledSingleValuedNonLinearOptimizer::ScalesType = NonLinearOptimizer::ScalesType |
Definition at line 85 of file itkScaledSingleValuedNonLinearOptimizer.h.
Definition at line 63 of file itkQuasiNewtonLBFGSOptimizer.h.
using itk::QuasiNewtonLBFGSOptimizer::SType = std::vector<ParametersType> |
Definition at line 79 of file itkQuasiNewtonLBFGSOptimizer.h.
Definition at line 64 of file itkQuasiNewtonLBFGSOptimizer.h.
using itk::QuasiNewtonLBFGSOptimizer::YType = std::vector<DerivativeType> |
Definition at line 80 of file itkQuasiNewtonLBFGSOptimizer.h.
Enumerator | |
---|---|
MetricError | |
LineSearchError | |
MaximumNumberOfIterations | |
InvalidDiagonalMatrix | |
GradientMagnitudeTolerance | |
ZeroStep | |
Unknown |
Definition at line 86 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
|
overrideprotecteddefault |
|
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::ITK_DISALLOW_COPY_AND_MOVE | ( | QuasiNewtonLBFGSOptimizer | ) |
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.
|
static |
|
inlineoverrideprotected |
Definition at line 142 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 occurred; 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 161 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 145 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 147 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 150 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 146 of file itkQuasiNewtonLBFGSOptimizer.h.
|
private |
Definition at line 202 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Is true when the LineSearchOptimizer has been started.
Definition at line 153 of file itkQuasiNewtonLBFGSOptimizer.h.
|
private |
Definition at line 203 of file itkQuasiNewtonLBFGSOptimizer.h.
|
private |
Definition at line 201 of file itkQuasiNewtonLBFGSOptimizer.h.
|
private |
Definition at line 204 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 159 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 160 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 155 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 156 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 149 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 148 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
Definition at line 157 of file itkQuasiNewtonLBFGSOptimizer.h.
Generated on 2023-01-13
for elastix by ![]() |
![]() |