dlr::optimization::Optimizer< Functor > Class Template Reference

Optimizer is an abstract base class defining the interface for general optimization classes. More...

#include <optimizer.h>

Inheritance diagram for dlr::optimization::Optimizer< Functor >:

Inheritance graph
[legend]
Collaboration diagram for dlr::optimization::Optimizer< Functor >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef Functor::argument_type argument_type
 This is the Type of the objective function argument.
typedef Functor::result_type result_type
 This is the Type of the objective function return value.

Public Member Functions

 Optimizer ()
 This is the default constructor.
 Optimizer (const Functor &functor)
 This constructor specifies the specific Functor instance to use.
 Optimizer (const Optimizer &source)
 Copy constructor.
virtual ~Optimizer ()
 Destructor.
Functor objectiveFunction ()
 This method returns a copy of the Functor instance used for optimization.
Optimizeroperator= (const Optimizer &source)
 This is the assignment operator.
result_type optimalValue ()
 This method finds the optimum of the current Functor, if necessary, and returns the Functor value at that point.
argument_type optimum ()
 This method finds the optimum of the current Functor, if necessary, and returns the Functor argument which produces that optimum.
void setObjectiveFunction (const Functor &functor)
 This method specifies the Functor instance to use for the optimization.

Protected Member Functions

virtual std::pair< typename
Functor::argument_type, typename
Functor::result_type > 
run ()=0
 Perform the optimization.
virtual void setOptimum (const typename Functor::argument_type &optimum, const typename Functor::result_type &optimalValue, bool needsFurtherOptimization)
 This protected member function provides a way for subclasses to communicate intermediate optimization results outside of the normal "return value of this->run()" method.

Protected Attributes

Functor m_functor
 m_functor->operator()() should compute the objective function.
bool m_needsOptimization
 Set to false if m_optimum contains a valid optimum, true otherwise.
argument_type m_optimum
 Caches the result of the most recent optimization.
result_type m_optimalValue
 Caches the result of the most recent optimization.

Detailed Description

template<class Functor>
class dlr::optimization::Optimizer< Functor >

Optimizer is an abstract base class defining the interface for general optimization classes.

The template parameter (Functor) defines the type to use as the objective function of the optimization. The specific requirements for Functor are to be determined by the classes derived from Optimizer, however Functor will generally be a scalar-valued function with an array or vector type argument.

Definition at line 39 of file optimizer.h.


Member Typedef Documentation

template<class Functor>
typedef Functor::argument_type dlr::optimization::Optimizer< Functor >::argument_type

This is the Type of the objective function argument.

Reimplemented in dlr::optimization::OptimizerBFGS< Functor >, dlr::optimization::OptimizerLineSearch< Functor >, dlr::optimization::OptimizerLM< Functor >, and dlr::optimization::OptimizerNelderMead< Functor >.

Definition at line 43 of file optimizer.h.

template<class Functor>
typedef Functor::result_type dlr::optimization::Optimizer< Functor >::result_type

This is the Type of the objective function return value.

Reimplemented in dlr::optimization::OptimizerBFGS< Functor >, dlr::optimization::OptimizerLineSearch< Functor >, dlr::optimization::OptimizerLM< Functor >, and dlr::optimization::OptimizerNelderMead< Functor >.

Definition at line 47 of file optimizer.h.


Constructor & Destructor Documentation

template<class Functor>
dlr::optimization::Optimizer< Functor >::Optimizer (  )  [inline]

This is the default constructor.

Note that the default constructor in any derived classes must initialize configuration parameters to reasonable values.

Definition at line 225 of file optimizer.h.

template<class Functor>
dlr::optimization::Optimizer< Functor >::Optimizer ( const Functor &  functor  )  [inline, explicit]

This constructor specifies the specific Functor instance to use.

Using this constructor exclusively avoids the danger of calling optimalValue() or optimum() before a Functor instance has been specified.

Parameters:
functor A copy of this argument will be stored internally for use in optimization.

Definition at line 236 of file optimizer.h.

template<class Functor>
dlr::optimization::Optimizer< Functor >::Optimizer ( const Optimizer< Functor > &  source  )  [inline]

Copy constructor.

This constructor simply copies the source argument.

Parameters:
source The Optimizer instance to be copied.

Definition at line 247 of file optimizer.h.

References dlr::optimization::copyArgumentType(), and dlr::optimization::Optimizer< Functor >::m_optimum.

template<class Functor>
dlr::optimization::Optimizer< Functor >::~Optimizer (  )  [inline, virtual]

Destructor.

Definition at line 258 of file optimizer.h.


Member Function Documentation

template<class Functor>
Functor dlr::optimization::Optimizer< Functor >::objectiveFunction (  )  [inline]

This method returns a copy of the Functor instance used for optimization.

Returns:
A Functor instance.

Definition at line 91 of file optimizer.h.

References dlr::optimization::Optimizer< Functor >::m_functor.

template<class Functor>
Optimizer< Functor > & dlr::optimization::Optimizer< Functor >::operator= ( const Optimizer< Functor > &  source  )  [inline]

This is the assignment operator.

It simply copies its input argument.

Parameters:
source The Optimizer instance to be copied.
Returns:
Reference to *this.

Definition at line 267 of file optimizer.h.

References dlr::optimization::copyArgumentType(), dlr::optimization::Optimizer< Functor >::m_functor, dlr::optimization::Optimizer< Functor >::m_needsOptimization, and dlr::optimization::Optimizer< Functor >::m_optimum.

template<class Functor>
Optimizer< Functor >::result_type dlr::optimization::Optimizer< Functor >::optimalValue (  )  [inline]

This method finds the optimum of the current Functor, if necessary, and returns the Functor value at that point.

Note that you must have specified an objective function (Functor) before calling this method.

Returns:
The Functor value at it's optimum.

Definition at line 282 of file optimizer.h.

References dlr::optimization::Optimizer< Functor >::m_needsOptimization, dlr::optimization::Optimizer< Functor >::m_optimalValue, dlr::optimization::Optimizer< Functor >::run(), and dlr::optimization::Optimizer< Functor >::setOptimum().

template<class Functor>
Optimizer< Functor >::argument_type dlr::optimization::Optimizer< Functor >::optimum (  )  [inline]

This method finds the optimum of the current Functor, if necessary, and returns the Functor argument which produces that optimum.

Note that you must have specified an objective function (Functor) before calling this method.

Returns:
The Functor arguments which produce the optimal value.

Definition at line 297 of file optimizer.h.

References dlr::optimization::Optimizer< Functor >::m_needsOptimization, dlr::optimization::Optimizer< Functor >::m_optimum, dlr::optimization::Optimizer< Functor >::run(), and dlr::optimization::Optimizer< Functor >::setOptimum().

template<class Functor>
void dlr::optimization::Optimizer< Functor >::setObjectiveFunction ( const Functor &  functor  )  [inline]

This method specifies the Functor instance to use for the optimization.

If this function is overridden by the base class, it should normally either call Optimizer::setObjectiveFunction(), or explicitly set the member variable m_needsOptimization to true.

Parameters:
functor A copy of this argument will be stored internally for use in optimization.

Definition at line 311 of file optimizer.h.

References dlr::optimization::Optimizer< Functor >::m_functor, and dlr::optimization::Optimizer< Functor >::m_needsOptimization.

template<class Functor>
virtual std::pair<typename Functor::argument_type, typename Functor::result_type> dlr::optimization::Optimizer< Functor >::run (  )  [protected, pure virtual]

Perform the optimization.

This pure virtual function must be overridden by the base class.

Returns:
A std::pair of the vector parameter which brings the specified Functor to an optimum, and the corresponding optimal Functor value.

Implemented in dlr::optimization::OptimizerBFGS< Functor >, dlr::optimization::OptimizerLineSearch< Functor >, dlr::optimization::OptimizerLM< Functor >, and dlr::optimization::OptimizerNelderMead< Functor >.

Referenced by dlr::optimization::Optimizer< Functor >::optimalValue(), and dlr::optimization::Optimizer< Functor >::optimum().

template<class Functor>
virtual void dlr::optimization::Optimizer< Functor >::setOptimum ( const typename Functor::argument_type &  optimum,
const typename Functor::result_type &  optimalValue,
bool  needsFurtherOptimization 
) [inline, protected, virtual]

This protected member function provides a way for subclasses to communicate intermediate optimization results outside of the normal "return value of this->run()" method.

Parameters:
optimum This argument will be saved as the current optimum.
optimalValue This argument will be saved as the function value a the current optimum.
needsFurtherOptimization This argument indicates whether or not further refinement is necessary.

Definition at line 172 of file optimizer.h.

References dlr::optimization::Optimizer< Functor >::m_needsOptimization, dlr::optimization::Optimizer< Functor >::m_optimalValue, and dlr::optimization::Optimizer< Functor >::m_optimum.

Referenced by dlr::optimization::Optimizer< Functor >::optimalValue(), and dlr::optimization::Optimizer< Functor >::optimum().


Member Data Documentation

template<class Functor>
Functor dlr::optimization::Optimizer< Functor >::m_functor [protected]

m_functor->operator()() should compute the objective function.

Definition at line 182 of file optimizer.h.

Referenced by dlr::optimization::OptimizerBFGS< Functor >::doBfgs(), dlr::optimization::OptimizerNelderMead< Functor >::evaluateMove(), dlr::optimization::Optimizer< Functor >::objectiveFunction(), dlr::optimization::Optimizer< Functor >::operator=(), dlr::optimization::OptimizerNelderMead< Functor >::run(), dlr::optimization::OptimizerLM< Functor >::run(), dlr::optimization::OptimizerLineSearch< Functor >::run(), dlr::optimization::OptimizerBFGS< Functor >::run(), dlr::optimization::Optimizer< Functor >::setObjectiveFunction(), and dlr::optimization::OptimizerLineSearch< Functor >::setStartPoint().

template<class Functor>
bool dlr::optimization::Optimizer< Functor >::m_needsOptimization [protected]

Set to false if m_optimum contains a valid optimum, true otherwise.

Definition at line 185 of file optimizer.h.

Referenced by dlr::optimization::Optimizer< Functor >::operator=(), dlr::optimization::Optimizer< Functor >::optimalValue(), dlr::optimization::Optimizer< Functor >::optimum(), dlr::optimization::OptimizerLineSearch< Functor >::setInitialStep(), dlr::optimization::Optimizer< Functor >::setObjectiveFunction(), dlr::optimization::Optimizer< Functor >::setOptimum(), dlr::optimization::OptimizerLineSearch< Functor >::setParameters(), and dlr::optimization::OptimizerLineSearch< Functor >::setStartPoint().

template<class Functor>
argument_type dlr::optimization::Optimizer< Functor >::m_optimum [protected]

Caches the result of the most recent optimization.

Definition at line 188 of file optimizer.h.

Referenced by dlr::optimization::Optimizer< Functor >::operator=(), dlr::optimization::Optimizer< Functor >::Optimizer(), dlr::optimization::Optimizer< Functor >::optimum(), and dlr::optimization::Optimizer< Functor >::setOptimum().

template<class Functor>
result_type dlr::optimization::Optimizer< Functor >::m_optimalValue [protected]

Caches the result of the most recent optimization.

Definition at line 191 of file optimizer.h.

Referenced by dlr::optimization::Optimizer< Functor >::optimalValue(), and dlr::optimization::Optimizer< Functor >::setOptimum().


The documentation for this class was generated from the following file:
Generated on Mon Jul 9 20:34:22 2007 for dlrLibs Utility Libraries by  doxygen 1.5.2