18#ifndef elxQuasiNewtonLBFGS_h
19#define elxQuasiNewtonLBFGS_h
87template <
class TElastix>
115 using Superclass1::CostFunctionType;
116 using Superclass1::CostFunctionPointer;
118 using Superclass1::ParametersType;
119 using Superclass1::DerivativeType;
155 itkGetConstMacro(StartLineSearch,
bool);
202#ifndef ITK_MANUAL_INSTANTIATION
203# include "elxQuasiNewtonLBFGS.hxx"
This class is the elastix base class for all Optimizers.
typename ElastixType::RegistrationBaseType RegistrationType
itk::Optimizer ITKBaseType
typename ITKBaseType::ParametersType ParametersType
An optimizer based on the itk::QuasiNewtonLBFGSOptimizer.
bool TestConvergence(bool firstLineSearchDone) override
itk::SmartPointer< const Self > ConstPointer
virtual std::string GetLineSearchStopCondition() const
bool m_GenerateLineSearchIterations
void StartOptimization() override
EventPassThroughPointer m_EventPasser
void BeforeRegistration() override
~QuasiNewtonLBFGS() override=default
void AfterEachIteration() override
void AfterRegistration() override
void LineSearch(const ParametersType searchDir, double &step, ParametersType &x, MeasureType &f, DerivativeType &g) override
LineOptimizerPointer m_LineOptimizer
itk::SmartPointer< Self > Pointer
ITK_DISALLOW_COPY_AND_MOVE(QuasiNewtonLBFGS)
typename EventPassThroughType::Pointer EventPassThroughPointer
bool m_WolfeIsStopCondition
bool m_StopIfWolfeNotSatisfied
void InvokeIterationEvent(const itk::EventObject &event)
void AfterEachResolution() override
virtual std::string DeterminePhase() const
typename Superclass2::ITKBaseType ITKBaseType
void BeforeEachResolution() override
elxClassNameMacro("QuasiNewtonLBFGS")
itk::ReceptorMemberCommand< Self > EventPassThroughType
double m_SearchDirectionMagnitude
ITK version of the MoreThuente line search algorithm.
ITK version of the lbfgs algorithm ...
NonLinearOptimizer::ScalesType ScalesType