19#ifndef itkQuasiNewtonLBFGSOptimizer_h
20#define itkQuasiNewtonLBFGSOptimizer_h
71 using Superclass::ParametersType;
72 using Superclass::DerivativeType;
73 using Superclass::CostFunctionType;
75 using Superclass::MeasureType;
79 using SType = std::vector<ParametersType>;
80 using YType = std::vector<DerivativeType>;
107 itkGetConstMacro(CurrentIteration,
unsigned long);
108 itkGetConstMacro(CurrentValue, MeasureType);
109 itkGetConstReferenceMacro(CurrentGradient, DerivativeType);
110 itkGetConstMacro(InLineSearch,
bool);
112 itkGetConstMacro(CurrentStepLength,
double);
133 itkSetMacro(Memory,
unsigned int);
134 itkGetConstMacro(Memory,
unsigned int);
163 itkSetMacro(InLineSearch,
bool);
186 LineSearch(
const ParametersType searchDir,
double & step, ParametersType & x, MeasureType & f, DerivativeType & g);
A base class for LineSearch optimizers.
SmartPointer< Self > Pointer
ITK version of the lbfgs algorithm ...
unsigned int m_PreviousPoint
itkGetModifiableObjectMacro(LineSearchOptimizer, LineSearchOptimizerType)
std::vector< DerivativeType > YType
LineSearchOptimizerPointer m_LineSearchOptimizer
ITK_DISALLOW_COPY_AND_MOVE(QuasiNewtonLBFGSOptimizer)
virtual void ComputeSearchDirection(const DerivativeType &gradient, ParametersType &searchDir)
QuasiNewtonLBFGSOptimizer()
DerivativeType m_CurrentGradient
virtual void ResumeOptimization()
unsigned long m_MaximumNumberOfIterations
virtual void StopOptimization()
virtual void ComputeDiagonalMatrix(DiagonalMatrixType &diag_H0)
void PrintSelf(std::ostream &, Indent) const override
~QuasiNewtonLBFGSOptimizer() override=default
virtual void StoreCurrentPoint(const ParametersType &step, const DerivativeType &grad_dif)
virtual bool TestConvergence(bool firstLineSearchDone)
unsigned long m_CurrentIteration
void StartOptimization() override
@ GradientMagnitudeTolerance
@ MaximumNumberOfIterations
StopConditionType m_StopCondition
MeasureType m_CurrentValue
Array< double > DiagonalMatrixType
double m_CurrentStepLength
double m_GradientMagnitudeTolerance
std::vector< ParametersType > SType
virtual void LineSearch(const ParametersType searchDir, double &step, ParametersType &x, MeasureType &f, DerivativeType &g)
SmartPointer< const Self > ConstPointer
A cost function that applies a scaling to another cost function.
ScaledSingleValuedNonLinearOptimizer()
NonLinearOptimizer::ScalesType ScalesType