19#ifndef itkMoreThuenteLineSearchOptimizer_h
20#define itkMoreThuenteLineSearchOptimizer_h
84 using Superclass::MeasureType;
85 using Superclass::ParametersType;
86 using Superclass::DerivativeType;
87 using Superclass::CostFunctionType;
133 itkGetConstMacro(CurrentIteration,
unsigned long);
135 itkGetConstMacro(SufficientDecreaseConditionSatisfied,
bool);
136 itkGetConstMacro(CurvatureConditionSatisfied,
bool);
151 itkSetClampMacro(ValueTolerance,
double, 0.0, NumericTraits<double>::max());
152 itkGetConstMacro(ValueTolerance,
double);
163 itkSetClampMacro(GradientTolerance,
double, 0.0, NumericTraits<double>::max());
164 itkGetConstMacro(GradientTolerance,
double);
174 itkSetClampMacro(IntervalTolerance,
double, 0.0, NumericTraits<double>::max());
175 itkGetConstMacro(IntervalTolerance,
double);
182 PrintSelf(std::ostream & os, Indent indent)
const override;
249 const double stpmax)
const;
A base class for LineSearch optimizers.
ITK version of the MoreThuente line search algorithm.
double m_GradientTolerance
void GetCurrentValueAndDerivative(MeasureType &value, DerivativeType &derivative) const override
void SetInitialDerivative(const DerivativeType &derivative) override
~MoreThuenteLineSearchOptimizer() override=default
virtual void ComputeCurrentValueAndDerivative()
MeasureType GetCurrentValue() const override
unsigned long m_MaximumNumberOfIterations
bool m_InitialValueProvided
bool m_SufficientDecreaseConditionSatisfied
unsigned long m_CurrentIteration
virtual void TestConvergence(bool &stop)
virtual void PrepareForUnusualTermination()
ITK_DISALLOW_COPY_AND_MOVE(MoreThuenteLineSearchOptimizer)
virtual int CheckSettings()
SmartPointer< const Self > ConstPointer
bool m_InitialDerivativeProvided
void BoundStep(double &step) const
void PrintSelf(std::ostream &os, Indent indent) const override
StopConditionType m_StopCondition
@ MaximumNumberOfIterations
@ StrongWolfeConditionsSatisfied
virtual int SafeGuardedStep(double &stx, double &fx, double &dx, double &sty, double &fy, double &dy, double &stp, const double fp, const double dp, bool &brackt, const double stpmin, const double stpmax) const
void InitializeLineSearch()
bool m_SafeGuardedStepFailed
virtual void ForceSufficientDecreaseInIntervalWidth()
virtual void StopOptimization()
virtual void ComputeNewStepAndInterval()
virtual void UpdateIntervalMinimumAndMaximum()
void GetCurrentDerivative(DerivativeType &derivative) const override
double m_IntervalTolerance
bool m_CurvatureConditionSatisfied
virtual double GetCurrentDirectionalDerivative() const
void StartOptimization() override
virtual void GetInitialValueAndDerivative()
MoreThuenteLineSearchOptimizer()
void SetInitialValue(MeasureType value) override