19#ifndef itkGenericConjugateGradientOptimizer_h
20#define itkGenericConjugateGradientOptimizer_h
53 using Superclass::ParametersType;
54 using Superclass::DerivativeType;
55 using Superclass::CostFunctionType;
57 using Superclass::MeasureType;
66 const DerivativeType &,
67 const ParametersType &);
92 itkGetConstMacro(CurrentIteration,
unsigned long);
93 itkGetConstMacro(CurrentValue, MeasureType);
94 itkGetConstReferenceMacro(CurrentGradient, DerivativeType);
95 itkGetConstMacro(InLineSearch,
bool);
97 itkGetConstMacro(CurrentStepLength,
double);
132 itkGetConstMacro(MaxNrOfItWithoutImprovement,
unsigned long);
145 PrintSelf(std::ostream & os, Indent indent) const override;
160 itkSetMacro(InLineSearch,
bool);
195 const DerivativeType & gradient,
196 ParametersType & searchDir);
203 LineSearch(
const ParametersType searchDir,
double & step, ParametersType & x, MeasureType & f, DerivativeType & g);
215 const DerivativeType & gradient,
216 const ParametersType & previousSearchDir);
223 const DerivativeType & gradient,
224 const ParametersType & previousSearchDir);
229 const DerivativeType & gradient,
230 const ParametersType & previousSearchDir);
235 const DerivativeType & gradient,
236 const ParametersType & previousSearchDir);
241 const DerivativeType & gradient,
242 const ParametersType & previousSearchDir);
247 const DerivativeType & gradient,
248 const ParametersType & previousSearchDir);
253 const DerivativeType & gradient,
254 const ParametersType & previousSearchDir);
A set of conjugate gradient algorithms.
virtual void SetMaxNrOfItWithoutImprovement(unsigned long arg)
double m_GradientMagnitudeTolerance
double ComputeBetaPR(const DerivativeType &previousGradient, const DerivativeType &gradient, const ParametersType &previousSearchDir)
void PrintSelf(std::ostream &os, Indent indent) const override
virtual bool TestConvergence(bool firstLineSearchDone)
StopConditionType m_StopCondition
BetaDefinitionType m_BetaDefinition
double m_CurrentStepLength
ITK_DISALLOW_COPY_AND_MOVE(GenericConjugateGradientOptimizer)
bool m_UseDefaultMaxNrOfItWithoutImprovement
std::string BetaDefinitionType
DerivativeType m_CurrentGradient
std::map< BetaDefinitionType, ComputeBetaFunctionType > BetaDefinitionMapType
BetaDefinitionMapType m_BetaDefinitionMap
double ComputeBetaHS(const DerivativeType &previousGradient, const DerivativeType &gradient, const ParametersType &previousSearchDir)
@ MaximumNumberOfIterations
@ GradientMagnitudeTolerance
void StartOptimization() override
virtual void StopOptimization()
unsigned long m_CurrentIteration
GenericConjugateGradientOptimizer()
void SetBetaDefinition(const BetaDefinitionType &arg)
double(Self::*)(const DerivativeType &, const DerivativeType &, const ParametersType &) ComputeBetaFunctionType
LineSearchOptimizerPointer m_LineSearchOptimizer
virtual void ComputeSearchDirection(const DerivativeType &previousGradient, const DerivativeType &gradient, ParametersType &searchDir)
double ComputeBetaSD(const DerivativeType &previousGradient, const DerivativeType &gradient, const ParametersType &previousSearchDir)
bool m_PreviousGradientAndSearchDirValid
virtual void LineSearch(const ParametersType searchDir, double &step, ParametersType &x, MeasureType &f, DerivativeType &g)
double ComputeBetaFR(const DerivativeType &previousGradient, const DerivativeType &gradient, const ParametersType &previousSearchDir)
SmartPointer< const Self > ConstPointer
MeasureType m_CurrentValue
unsigned long m_MaxNrOfItWithoutImprovement
virtual void ResumeOptimization()
virtual double ComputeBeta(const DerivativeType &previousGradient, const DerivativeType &gradient, const ParametersType &previousSearchDir)
unsigned long m_MaximumNumberOfIterations
void AddBetaDefinition(const BetaDefinitionType &name, ComputeBetaFunctionType function)
double ComputeBetaDY(const DerivativeType &previousGradient, const DerivativeType &gradient, const ParametersType &previousSearchDir)
double ComputeBetaDYHS(const DerivativeType &previousGradient, const DerivativeType &gradient, const ParametersType &previousSearchDir)
itkGetModifiableObjectMacro(LineSearchOptimizer, LineSearchOptimizerType)
A base class for LineSearch optimizers.
SmartPointer< Self > Pointer
A cost function that applies a scaling to another cost function.
ScaledSingleValuedNonLinearOptimizer()
NonLinearOptimizer::ScalesType ScalesType