Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages |
#include <itkMoreThuenteLineSearchOptimizer.h>
ITK version of the MoreThuente line search algorithm.
This class is an ITK version of the netlib function mcsrch_. It gives exactly the same results.
The purpose of this optimizer is to find a step which satisfies a sufficient decrease condition and a curvature condition.
At each stage the subroutine updates an interval of uncertainty with endpoints stx and sty. The interval of uncertainty is initially chosen so that it contains a minimizer of the modified function
If a step is obtained for which the modified function has a nonpositive function value and nonnegative derivative, then the interval of uncertainty is chosen so that it contains a minimizer of .
The algorithm is designed to find a step which satisfies the sufficient decrease condition
and the curvature condition
(together also called the Strong Wolfe Conditions)
if the ValueTolerance is less than the GradientTolerance and if, for example, the function is bounded below, then there is always a step which satisfies both conditions. If no step can be found which satisfies both conditions, then the algorithm usually stops when rounding errors prevent further progress. In this case stp only satisfies the sufficient decrease condition.
Definition at line 71 of file itkMoreThuenteLineSearchOptimizer.h.
Public Types | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Superclass::CostFunctionType | CostFunctionType |
typedef Superclass::DerivativeType | DerivativeType |
typedef Superclass::MeasureType | MeasureType |
typedef Superclass::ParametersType | ParametersType |
typedef SmartPointer< Self > | Pointer |
typedef MoreThuenteLineSearchOptimizer | Self |
enum | StopConditionType { StrongWolfeConditionsSatisfied , MetricError , MaximumNumberOfIterations , StepTooSmall , StepTooLarge , IntervalTooSmall , RoundingError , AscentSearchDirection , Unknown } |
typedef LineSearchOptimizer | Superclass |
Public Types inherited from itk::LineSearchOptimizer | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Superclass::CostFunctionType | CostFunctionType |
typedef Superclass::DerivativeType | DerivativeType |
typedef Superclass::MeasureType | MeasureType |
typedef Superclass::ParametersType | ParametersType |
typedef SmartPointer< Self > | Pointer |
typedef LineSearchOptimizer | Self |
typedef SingleValuedNonLinearOptimizer | Superclass |
Static Public Member Functions | |
static Pointer | New () |
Protected Member Functions | |
void | BoundStep (double &step) const |
virtual int | CheckSettings (void) |
virtual void | ComputeCurrentValueAndDerivative (void) |
virtual void | ComputeNewStepAndInterval (void) |
virtual void | ForceSufficientDecreaseInIntervalWidth (void) |
virtual void | GetInitialValueAndDerivative (void) |
virtual void | InitializeLineSearch (void) |
MoreThuenteLineSearchOptimizer () | |
virtual void | PrepareForUnusualTermination (void) |
void | PrintSelf (std::ostream &os, Indent indent) const override |
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 |
virtual void | TestConvergence (bool &stop) |
virtual void | UpdateIntervalMinimumAndMaximum (void) |
~MoreThuenteLineSearchOptimizer () override | |
Protected Member Functions inherited from itk::LineSearchOptimizer | |
double | DirectionalDerivative (const DerivativeType &derivative) const |
LineSearchOptimizer () | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
virtual void | SetCurrentStepLength (double step) |
~LineSearchOptimizer () override | |
Private Member Functions | |
MoreThuenteLineSearchOptimizer (const Self &) | |
void | operator= (const Self &) |
Private Attributes | |
double | m_GradientTolerance |
double | m_IntervalTolerance |
unsigned long | m_MaximumNumberOfIterations |
double | m_ValueTolerance |
typedef SmartPointer< const Self > itk::MoreThuenteLineSearchOptimizer::ConstPointer |
Definition at line 78 of file itkMoreThuenteLineSearchOptimizer.h.
typedef Superclass::CostFunctionType itk::MoreThuenteLineSearchOptimizer::CostFunctionType |
Definition at line 86 of file itkMoreThuenteLineSearchOptimizer.h.
Definition at line 85 of file itkMoreThuenteLineSearchOptimizer.h.
Definition at line 83 of file itkMoreThuenteLineSearchOptimizer.h.
typedef Superclass::ParametersType itk::MoreThuenteLineSearchOptimizer::ParametersType |
Definition at line 84 of file itkMoreThuenteLineSearchOptimizer.h.
typedef SmartPointer< Self > itk::MoreThuenteLineSearchOptimizer::Pointer |
Definition at line 77 of file itkMoreThuenteLineSearchOptimizer.h.
Definition at line 75 of file itkMoreThuenteLineSearchOptimizer.h.
Definition at line 76 of file itkMoreThuenteLineSearchOptimizer.h.
Enumerator | |
---|---|
StrongWolfeConditionsSatisfied | |
MetricError | |
MaximumNumberOfIterations | |
StepTooSmall | |
StepTooLarge | |
IntervalTooSmall | |
RoundingError | |
AscentSearchDirection | |
Unknown |
Definition at line 88 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
|
inlineoverrideprotected |
Definition at line 172 of file itkMoreThuenteLineSearchOptimizer.h.
|
private |
|
protected |
Force a step to be within the bounds MinimumStepLength and MaximumStepLength
|
protectedvirtual |
Check the input settings for errors.
|
protectedvirtual |
Ask the cost function to compute m_f and m_g at the current position.
|
protectedvirtual |
Update the interval of uncertainty and compute the new step
|
protectedvirtual |
Force a sufficient decrease in the size of the interval of uncertainty
|
virtual |
Reimplemented from itk::LineSearchOptimizer.
|
overridevirtual |
Implements itk::LineSearchOptimizer.
|
virtual |
|
virtual |
Progress information: about the state of convergence
|
overridevirtual |
Implements itk::LineSearchOptimizer.
|
overridevirtual |
Progress information: value, derivative, and directional derivative at the current position.
Implements itk::LineSearchOptimizer.
|
virtual |
|
virtual |
|
protectedvirtual |
Load the initial value and derivative into m_f and m_g.
|
virtual |
|
virtual |
Setting: the maximum number of iterations. 20 by default.
|
virtual |
|
virtual |
|
virtual |
|
protectedvirtual |
Initialize the interval of uncertainty etc.
|
static |
|
private |
|
protectedvirtual |
Set m_step to the best step until now, if unusual termination is expected
|
overrideprotected |
|
protectedvirtual |
Advance a step along the line search direction and update the interval of uncertainty.
|
virtual |
Setting: the gradient tolerance. By default set to 0.9.
The line search tries to find a StepLength that satisfies the curvature condition: ABS(dF/ds(X + StepLength * s) <= GradientTolerance * ABS(dF/ds(X)
The lower this value, the more accurate the line search. It must be larger than the ValueTolerance.
|
overridevirtual |
If initial derivative and/or value are given we can save some computation time!
Reimplemented from itk::LineSearchOptimizer.
|
overridevirtual |
Reimplemented from itk::LineSearchOptimizer.
|
virtual |
Setting: the interval tolerance. By default set to the the machine precision.
If value and gradient tolerance can not be satisfied both, the algorithm stops when rounding errors prevent further progress: when the interval of uncertainty is smaller than the interval tolerance.
|
virtual |
|
virtual |
Setting: the value tolerance. By default set to 1e-4.
The line search tries to find a StepLength that satisfies the sufficient decrease condition: F(X + StepLength * s) <= F(X) + ValueTolerance * StepLength * dF/ds(X) where s is the search direction
It must be larger than 0.0, and smaller than the GradientTolerance.
|
override |
|
virtual |
|
protectedvirtual |
Check for convergence
|
protectedvirtual |
Set the minimum and maximum steps to correspond to the the present interval of uncertainty.
|
protected |
Definition at line 247 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 176 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 182 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 238 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 239 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 242 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 240 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 241 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 232 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 235 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 233 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 234 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 237 of file itkMoreThuenteLineSearchOptimizer.h.
|
private |
Definition at line 258 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 177 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 178 of file itkMoreThuenteLineSearchOptimizer.h.
|
private |
Definition at line 259 of file itkMoreThuenteLineSearchOptimizer.h.
|
private |
Definition at line 256 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 249 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 248 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 226 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 230 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 229 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 227 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 228 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 180 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 179 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 181 of file itkMoreThuenteLineSearchOptimizer.h.
|
private |
Definition at line 257 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 244 of file itkMoreThuenteLineSearchOptimizer.h.
|
protected |
Definition at line 245 of file itkMoreThuenteLineSearchOptimizer.h.
Generated on 1667476801 for elastix by 1.9.4 |