Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::AmoebaOptimizer Class Reference
[NumericsOptimizers]

Wrap of the vnl_amoeba algorithm. More...

#include <itkAmoebaOptimizer.h>

Inheritance diagram for itk::AmoebaOptimizer:

Inheritance graph
[legend]
Collaboration diagram for itk::AmoebaOptimizer:

Collaboration graph
[legend]
List of all members.

Public Types

typedef AmoebaOptimizer Self
typedef SingleValuedNonLinearVnlOptimizer Superclass
typedef SmartPointer< SelfPointer
typedef SmartPointer< const
Self
ConstPointer
typedef Superclass::ParametersType ParametersType
typedef vnl_vector< double > InternalParametersType
typedef vnl_amoeba InternalOptimizerType

Public Member Functions

virtual const char * GetNameOfClass () const
vnl_amoeba * GetOptimizer (void)
void StartOptimization (void)
virtual void SetCostFunction (SingleValuedCostFunction *costFunction)
MeasureType GetValue () const
virtual void SetMaximumNumberOfIterations (unsigned int n)
virtual unsigned int GetMaximumNumberOfIterations ()
virtual void SetAutomaticInitialSimplex (bool _arg)
virtual void AutomaticInitialSimplexOn ()
virtual void AutomaticInitialSimplexOff ()
virtual bool GetAutomaticInitialSimplex ()
virtual void SetInitialSimplexDelta (ParametersType _arg)
virtual ParametersType GetInitialSimplexDelta ()
virtual void SetParametersConvergenceTolerance (double tol)
virtual double GetParametersConvergenceTolerance ()
virtual void SetFunctionConvergenceTolerance (double tol)
virtual double GetFunctionConvergenceTolerance ()

Static Public Member Functions

Pointer New ()

Protected Types

typedef Superclass::CostFunctionAdaptorType CostFunctionAdaptorType

Protected Member Functions

 AmoebaOptimizer ()
virtual ~AmoebaOptimizer ()
void PrintSelf (std::ostream &os, Indent indent) const

Detailed Description

Wrap of the vnl_amoeba algorithm.

AmoebaOptimizer is a wrapper around the vnl_amoeba algorithm which is an implementation of the Nelder-Meade downhill simplex problem. For most problems, it is a few times slower than a Levenberg-Marquardt algorithm but does not require derivatives of its cost function. It works by creating a simplex (n+1 points in ND space). The cost function is evaluated at each corner of the simplex. The simplex is then modified (by reflecting a corner about the opposite edge, by shrinking the entire simplex, by contracting one edge of the simplex, or by expanding the simplex) in searching for the minimum of the cost function.

The methods AutomaticInitialSimplex() and SetInitialSimplexDelta() control whether the optimizer defines the initial simplex automatically (by constructing a very small simplex around the initial position) or uses a user supplied simplex size.

AmoebaOptimizer can only minimize a function.

Definition at line 49 of file itkAmoebaOptimizer.h.


Member Typedef Documentation

typedef SmartPointer<const Self> itk::AmoebaOptimizer::ConstPointer
 

Reimplemented from itk::SingleValuedNonLinearVnlOptimizer.

Definition at line 57 of file itkAmoebaOptimizer.h.

typedef Superclass::CostFunctionAdaptorType itk::AmoebaOptimizer::CostFunctionAdaptorType [protected]
 

Reimplemented from itk::SingleValuedNonLinearVnlOptimizer.

Definition at line 132 of file itkAmoebaOptimizer.h.

typedef vnl_amoeba itk::AmoebaOptimizer::InternalOptimizerType
 

Internal optimizer type.

Definition at line 73 of file itkAmoebaOptimizer.h.

typedef vnl_vector<double> itk::AmoebaOptimizer::InternalParametersType
 

InternalParameters typedef.

Definition at line 70 of file itkAmoebaOptimizer.h.

typedef Superclass::ParametersType itk::AmoebaOptimizer::ParametersType
 

Parameters type. It defines a position in the optimization search space.

Reimplemented from itk::SingleValuedNonLinearOptimizer.

Definition at line 67 of file itkAmoebaOptimizer.h.

typedef SmartPointer<Self> itk::AmoebaOptimizer::Pointer
 

Reimplemented from itk::SingleValuedNonLinearVnlOptimizer.

Definition at line 56 of file itkAmoebaOptimizer.h.

typedef AmoebaOptimizer itk::AmoebaOptimizer::Self
 

Standard "Self" typedef.

Reimplemented from itk::SingleValuedNonLinearVnlOptimizer.

Definition at line 54 of file itkAmoebaOptimizer.h.

typedef SingleValuedNonLinearVnlOptimizer itk::AmoebaOptimizer::Superclass
 

Reimplemented from itk::SingleValuedNonLinearVnlOptimizer.

Definition at line 55 of file itkAmoebaOptimizer.h.


Constructor & Destructor Documentation

itk::AmoebaOptimizer::AmoebaOptimizer  )  [protected]
 

virtual itk::AmoebaOptimizer::~AmoebaOptimizer  )  [protected, virtual]
 


Member Function Documentation

virtual void itk::AmoebaOptimizer::AutomaticInitialSimplexOff  )  [virtual]
 

Set/Get the mode which determines how the amoeba algorithm defines the initial simplex. Default is AutomaticInitialSimplexOn. If AutomaticInitialSimplex is on, the initial simplex is created with a default size. If AutomaticInitialSimplex is off, then InitialSimplexDelta will be used to define the initial simplex, setting the ith corner of the simplex as [x0[0], x0[1], ..., x0[i]+InitialSimplexDelta[i], ..., x0[d-1]].

virtual void itk::AmoebaOptimizer::AutomaticInitialSimplexOn  )  [virtual]
 

Set/Get the mode which determines how the amoeba algorithm defines the initial simplex. Default is AutomaticInitialSimplexOn. If AutomaticInitialSimplex is on, the initial simplex is created with a default size. If AutomaticInitialSimplex is off, then InitialSimplexDelta will be used to define the initial simplex, setting the ith corner of the simplex as [x0[0], x0[1], ..., x0[i]+InitialSimplexDelta[i], ..., x0[d-1]].

virtual bool itk::AmoebaOptimizer::GetAutomaticInitialSimplex  )  [virtual]
 

Set/Get the mode which determines how the amoeba algorithm defines the initial simplex. Default is AutomaticInitialSimplexOn. If AutomaticInitialSimplex is on, the initial simplex is created with a default size. If AutomaticInitialSimplex is off, then InitialSimplexDelta will be used to define the initial simplex, setting the ith corner of the simplex as [x0[0], x0[1], ..., x0[i]+InitialSimplexDelta[i], ..., x0[d-1]].

virtual double itk::AmoebaOptimizer::GetFunctionConvergenceTolerance  )  [virtual]
 

The optimization algorithm will terminate when the simplex diameter and the difference in cost function at the corners of the simplex falls below user specified thresholds. The simplex diameter threshold is set via method SetParametersConvergenceTolerance() with the default value being 1e-8. The cost function convergence threshold is set via method SetFunctionConvergenceTolerance() with the default value being 1e-4.

virtual ParametersType itk::AmoebaOptimizer::GetInitialSimplexDelta  )  [virtual]
 

Set/Get the deltas that are used to define the initial simplex when AutomaticInitialSimplex is off.

virtual unsigned int itk::AmoebaOptimizer::GetMaximumNumberOfIterations  )  [virtual]
 

Set/Get the maximum number of iterations. The optimization algorithm will terminate after the maximum number of iterations has been reached. The default value is 500.

virtual const char* itk::AmoebaOptimizer::GetNameOfClass  )  const [virtual]
 

Run-time type information (and related methods).

Reimplemented from itk::SingleValuedNonLinearVnlOptimizer.

vnl_amoeba* itk::AmoebaOptimizer::GetOptimizer void   ) 
 

Method for getting access to the internal optimizer.

virtual double itk::AmoebaOptimizer::GetParametersConvergenceTolerance  )  [virtual]
 

The optimization algorithm will terminate when the simplex diameter and the difference in cost function at the corners of the simplex falls below user specified thresholds. The simplex diameter threshold is set via method SetParametersConvergenceTolerance() with the default value being 1e-8. The cost function convergence threshold is set via method SetFunctionConvergenceTolerance() with the default value being 1e-4.

MeasureType itk::AmoebaOptimizer::GetValue  )  const
 

Return Current Value

Pointer itk::AmoebaOptimizer::New  )  [static]
 

Method for creation through the object factory.

Reimplemented from itk::SingleValuedNonLinearOptimizer.

void itk::AmoebaOptimizer::PrintSelf std::ostream &  os,
Indent  indent
const [protected, virtual]
 

Print out internal state

Reimplemented from itk::SingleValuedNonLinearVnlOptimizer.

virtual void itk::AmoebaOptimizer::SetAutomaticInitialSimplex bool  _arg  )  [virtual]
 

Set/Get the mode which determines how the amoeba algorithm defines the initial simplex. Default is AutomaticInitialSimplexOn. If AutomaticInitialSimplex is on, the initial simplex is created with a default size. If AutomaticInitialSimplex is off, then InitialSimplexDelta will be used to define the initial simplex, setting the ith corner of the simplex as [x0[0], x0[1], ..., x0[i]+InitialSimplexDelta[i], ..., x0[d-1]].

virtual void itk::AmoebaOptimizer::SetCostFunction SingleValuedCostFunction costFunction  )  [virtual]
 

Plug in a Cost Function into the optimizer

Implements itk::SingleValuedNonLinearVnlOptimizer.

virtual void itk::AmoebaOptimizer::SetFunctionConvergenceTolerance double  tol  )  [virtual]
 

The optimization algorithm will terminate when the simplex diameter and the difference in cost function at the corners of the simplex falls below user specified thresholds. The simplex diameter threshold is set via method SetParametersConvergenceTolerance() with the default value being 1e-8. The cost function convergence threshold is set via method SetFunctionConvergenceTolerance() with the default value being 1e-4.

virtual void itk::AmoebaOptimizer::SetInitialSimplexDelta ParametersType  _arg  )  [virtual]
 

Set/Get the deltas that are used to define the initial simplex when AutomaticInitialSimplex is off.

virtual void itk::AmoebaOptimizer::SetMaximumNumberOfIterations unsigned int  n  )  [virtual]
 

Set/Get the maximum number of iterations. The optimization algorithm will terminate after the maximum number of iterations has been reached. The default value is 500.

virtual void itk::AmoebaOptimizer::SetParametersConvergenceTolerance double  tol  )  [virtual]
 

The optimization algorithm will terminate when the simplex diameter and the difference in cost function at the corners of the simplex falls below user specified thresholds. The simplex diameter threshold is set via method SetParametersConvergenceTolerance() with the default value being 1e-8. The cost function convergence threshold is set via method SetFunctionConvergenceTolerance() with the default value being 1e-4.

void itk::AmoebaOptimizer::StartOptimization void   )  [virtual]
 

Start optimization with an initial value.

Reimplemented from itk::Optimizer.


The documentation for this class was generated from the following file:
Generated at Thu May 25 00:20:54 2006 for ITK by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2000