go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes
itk::LineSearchOptimizer Class Referenceabstract

#include <itkLineSearchOptimizer.h>

Detailed Description

A base class for LineSearch optimizers.

Scales are expected to be handled by the main optimizer.

Definition at line 37 of file itkLineSearchOptimizer.h.

Inheritance diagram for itk::LineSearchOptimizer:
Inheritance graph

Public Types

using ConstPointer = SmartPointer< const Self >
using Pointer = SmartPointer< Self >
using Self = LineSearchOptimizer
using Superclass = SingleValuedNonLinearOptimizer

Public Member Functions

virtual const char * GetClassName () const
virtual void GetCurrentDerivative (DerivativeType &derivative) const =0
virtual double GetCurrentStepLength () const
virtual MeasureType GetCurrentValue () const =0
virtual void GetCurrentValueAndDerivative (MeasureType &value, DerivativeType &derivative) const =0
virtual double GetInitialStepLengthEstimate () const
virtual const ParametersType & GetLineSearchDirection ()
virtual double GetMaximumStepLength () const
virtual double GetMinimumStepLength () const
virtual void SetInitialDerivative (const DerivativeType &)
virtual void SetInitialStepLengthEstimate (double _arg)
virtual void SetInitialValue (MeasureType)
virtual void SetLineSearchDirection (const ParametersType &arg)
virtual void SetMaximumStepLength (double _arg)
virtual void SetMinimumStepLength (double _arg)

Protected Member Functions

double DirectionalDerivative (const DerivativeType &derivative) const
 LineSearchOptimizer ()
void PrintSelf (std::ostream &os, Indent indent) const override
virtual void SetCurrentStepLength (double step)
 ~LineSearchOptimizer () override=default

Protected Attributes

double m_CurrentStepLength

Private Attributes

double m_InitialStepLengthEstimate
ParametersType m_LineSearchDirection
double m_MaximumStepLength
double m_MinimumStepLength

Member Typedef Documentation

◆ ConstPointer

using itk::LineSearchOptimizer::ConstPointer = SmartPointer<const Self>

Definition at line 45 of file itkLineSearchOptimizer.h.

◆ Pointer

using itk::LineSearchOptimizer::Pointer = SmartPointer<Self>

Definition at line 44 of file itkLineSearchOptimizer.h.

◆ Self

Definition at line 42 of file itkLineSearchOptimizer.h.

◆ Superclass

Definition at line 43 of file itkLineSearchOptimizer.h.

Constructor & Destructor Documentation

◆ LineSearchOptimizer()

itk::LineSearchOptimizer::LineSearchOptimizer ( )

◆ ~LineSearchOptimizer()

itk::LineSearchOptimizer::~LineSearchOptimizer ( )

Member Function Documentation

◆ DirectionalDerivative()

double itk::LineSearchOptimizer::DirectionalDerivative ( const DerivativeType &  derivative) const

Computes the inner product of the argument and the line search direction.

◆ GetClassName()

virtual const char * itk::LineSearchOptimizer::GetClassName ( ) const

◆ GetCurrentDerivative()

virtual void itk::LineSearchOptimizer::GetCurrentDerivative ( DerivativeType &  derivative) const
pure virtual

◆ GetCurrentStepLength()

virtual double itk::LineSearchOptimizer::GetCurrentStepLength ( ) const

StepLength is a a scalar, defined as: m_InitialPosition + StepLength * m_LineSearchDirection = m_CurrentPosition

◆ GetCurrentValue()

virtual MeasureType itk::LineSearchOptimizer::GetCurrentValue ( ) const
pure virtual

◆ GetCurrentValueAndDerivative()

virtual void itk::LineSearchOptimizer::GetCurrentValueAndDerivative ( MeasureType &  value,
DerivativeType &  derivative 
) const
pure virtual

These methods must be implemented by inheriting classes. It depends on the specific line search algorithm if it already computed the value/derivative at the current position (in this case it can just copy the cached data). If it did not compute the value/derivative, it should call the cost function and evaluate the value/derivative at the current position.

These methods allow the main optimization algorithm to reuse data that the LineSearch algorithm already computed.

Implemented in itk::MoreThuenteLineSearchOptimizer.

◆ GetInitialStepLengthEstimate()

virtual double itk::LineSearchOptimizer::GetInitialStepLengthEstimate ( ) const

◆ GetLineSearchDirection()

virtual const ParametersType & itk::LineSearchOptimizer::GetLineSearchDirection ( )

◆ GetMaximumStepLength()

virtual double itk::LineSearchOptimizer::GetMaximumStepLength ( ) const

◆ GetMinimumStepLength()

virtual double itk::LineSearchOptimizer::GetMinimumStepLength ( ) const


itk::LineSearchOptimizer::ITK_DISALLOW_COPY_AND_MOVE ( LineSearchOptimizer  )

◆ PrintSelf()

void itk::LineSearchOptimizer::PrintSelf ( std::ostream &  os,
Indent  indent 
) const

◆ SetCurrentStepLength()

virtual void itk::LineSearchOptimizer::SetCurrentStepLength ( double  step)

Set the current step length AND the current position, where the current position is computed as: m_CurrentPosition = m_InitialPosition + StepLength * m_LineSearchDirection

◆ SetInitialDerivative()

virtual void itk::LineSearchOptimizer::SetInitialDerivative ( const DerivativeType &  )

Inheriting classes may override these methods if they need value/derivative information of the cost function at the initial position.

NB: It is not guaranteed that these methods are called. If a main optimizer by chance has this information, it should call these methods, to avoid possible unnecessary computations.

Reimplemented in itk::MoreThuenteLineSearchOptimizer.

Definition at line 76 of file itkLineSearchOptimizer.h.

◆ SetInitialStepLengthEstimate()

virtual void itk::LineSearchOptimizer::SetInitialStepLengthEstimate ( double  _arg)

◆ SetInitialValue()

virtual void itk::LineSearchOptimizer::SetInitialValue ( MeasureType  )

Reimplemented in itk::MoreThuenteLineSearchOptimizer.

Definition at line 79 of file itkLineSearchOptimizer.h.

◆ SetLineSearchDirection()

virtual void itk::LineSearchOptimizer::SetLineSearchDirection ( const ParametersType &  arg)

Set/Get the LineSearchDirection

Definition at line 57 of file itkLineSearchOptimizer.h.

◆ SetMaximumStepLength()

virtual void itk::LineSearchOptimizer::SetMaximumStepLength ( double  _arg)

◆ SetMinimumStepLength()

virtual void itk::LineSearchOptimizer::SetMinimumStepLength ( double  _arg)

Settings: the maximum/minimum step length and the initial estimate. NOTE: Not all line search methods are guaranteed to do something with this information. However, if a certain optimizer (using a line search optimizer) has any idea about the steplength it can call these methods, 'in the hope' that the line search optimizer does something sensible with it.

Field Documentation

◆ m_CurrentStepLength

double itk::LineSearchOptimizer::m_CurrentStepLength

Definition at line 130 of file itkLineSearchOptimizer.h.

◆ m_InitialStepLengthEstimate

double itk::LineSearchOptimizer::m_InitialStepLengthEstimate

Definition at line 149 of file itkLineSearchOptimizer.h.

◆ m_LineSearchDirection

ParametersType itk::LineSearchOptimizer::m_LineSearchDirection

Definition at line 145 of file itkLineSearchOptimizer.h.

◆ m_MaximumStepLength

double itk::LineSearchOptimizer::m_MaximumStepLength

Definition at line 148 of file itkLineSearchOptimizer.h.

◆ m_MinimumStepLength

double itk::LineSearchOptimizer::m_MinimumStepLength

Definition at line 147 of file itkLineSearchOptimizer.h.

Generated on 2023-01-13 for elastix by doxygen 1.9.6 elastix logo