primatologist-gpl 6.0.18
aims::Newton< O, L > Class Template Reference

Newton's Method for optimization. More...

#include <primatologist/optimization/newton_decl.h>

Collaboration diagram for aims::Newton< O, L >:

Public Types

typedef O Objective
 
typedef L< O > LineSearch
 
typedef math::Matrix Matrix
 
typedef math::Vector Vector
 

Public Member Functions

 Newton (const Objective &f=Objective(), const Vector &x=Vector())
 
 Newton (const Newton< O, L > &other)
 
 ~Newton ()
 
Newton< O, L > & operator= (const Newton< O, L > &other)
 
void setGamma (float gamma=0.1)
 
void setStopCriterion (const std::string &crit="absdiff")
 Can take values:
 
void setStopValue (float epsilon=1E-5)
 
void setLineSearch (const LineSearch &l=LineSearch())
 
void setMaximize (bool maximize=false)
 
void setMaxIterations (int n=- 1)
 
void setVerbose (int v=carto::verbose)
 
void setObjectiveFunction (const Objective &f)
 
void setPosition (const Vector &x=Vector())
 
float gamma () const
 
const std::string & stopCriterion () const
 
float stopValue () const
 
LineSearch & lineSearch ()
 
bool maximize () const
 
int maxIterations () const
 
int verbose () const
 
const Vector & position () const
 
const Objective & objectiveFunction () const
 
Vector execute ()
 

Protected Attributes

float _gamma
 Fixed Gamma or initial gamma for line search.
 
Vector _x
 position
 
Objective _f
 objectiveFunction
 
LineSearch _ls
 lineSearch
 
int _verbose
 verbosity level
 
bool _maximize
 maximize or minimize
 
int _max_it
 maximum number of iterations
 
std::string _crit
 stop criterion
 
float _epsilon
 stop value
 

Detailed Description

template<typename O, template< typename > class L = NoLineSearch>
class aims::Newton< O, L >

Newton's Method for optimization.

Template Parameters
OObjective function type. It should implement functions value(Vector), derivative(Vector) and hessian(Vector)
L[optional] Line search type. A line search method can be used to select the next position each time a search is found. This can be useful to avoid too small or too large steps.

Definition at line 31 of file newton_decl.h.

Member Typedef Documentation

◆ LineSearch

template<typename O, template< typename > class L = NoLineSearch>
typedef L<O> aims::Newton< O, L >::LineSearch

Definition at line 38 of file newton_decl.h.

◆ Matrix

template<typename O, template< typename > class L = NoLineSearch>
typedef math::Matrix aims::Newton< O, L >::Matrix

Definition at line 39 of file newton_decl.h.

◆ Objective

template<typename O, template< typename > class L = NoLineSearch>
typedef O aims::Newton< O, L >::Objective

Definition at line 37 of file newton_decl.h.

◆ Vector

template<typename O, template< typename > class L = NoLineSearch>
typedef math::Vector aims::Newton< O, L >::Vector

Definition at line 40 of file newton_decl.h.

Constructor & Destructor Documentation

◆ Newton() [1/2]

template<typename O, template< typename > class L>
aims::Newton< O, L >::Newton ( const Objective & f = Objective(),
const Vector & x = Vector() )
Warning
the Objective function needs to be copiable and thus needs a copy constructor and an assignment operator

Definition at line 23 of file newton_d.h.

References _f, _x, setGamma(), setLineSearch(), setMaximize(), setMaxIterations(), setStopCriterion(), setStopValue(), and setVerbose().

Referenced by Newton(), and operator=().

◆ Newton() [2/2]

template<typename O, template< typename > class L>
aims::Newton< O, L >::Newton ( const Newton< O, L > & other)

Definition at line 36 of file newton_d.h.

References _f, _gamma, _ls, _max_it, _maximize, _verbose, _x, and Newton().

◆ ~Newton()

template<typename O, template< typename > class L>
aims::Newton< O, L >::~Newton ( )

Definition at line 47 of file newton_d.h.

Member Function Documentation

◆ execute()

template<typename O, template< typename > class L>
Newton< O, L >::Vector aims::Newton< O, L >::execute ( )

◆ gamma()

template<typename O, template< typename > class L>
float aims::Newton< O, L >::gamma ( ) const

Definition at line 136 of file newton_d.h.

References _gamma.

Referenced by execute(), and setGamma().

◆ lineSearch()

template<typename O, template< typename > class L>
Newton< O, L >::LineSearch & aims::Newton< O, L >::lineSearch ( )

Definition at line 155 of file newton_d.h.

References _ls.

Referenced by execute(), setLineSearch(), setMaximize(), setObjectiveFunction(), and setVerbose().

◆ maximize()

template<typename O, template< typename > class L>
bool aims::Newton< O, L >::maximize ( ) const

Definition at line 161 of file newton_d.h.

References _maximize.

Referenced by execute(), setLineSearch(), and setMaximize().

◆ maxIterations()

template<typename O, template< typename > class L>
int aims::Newton< O, L >::maxIterations ( ) const

Definition at line 167 of file newton_d.h.

References _max_it.

Referenced by execute().

◆ objectiveFunction()

template<typename O, template< typename > class L>
const Newton< O, L >::Objective & aims::Newton< O, L >::objectiveFunction ( ) const

Definition at line 187 of file newton_d.h.

References _f.

Referenced by execute(), and setLineSearch().

◆ operator=()

template<typename O, template< typename > class L>
Newton< O, L > & aims::Newton< O, L >::operator= ( const Newton< O, L > & other)

Definition at line 52 of file newton_d.h.

References _f, _gamma, _ls, _max_it, _maximize, _verbose, _x, and Newton().

◆ position()

template<typename O, template< typename > class L>
const Newton< O, L >::Vector & aims::Newton< O, L >::position ( ) const

Definition at line 180 of file newton_d.h.

References _x.

Referenced by execute().

◆ setGamma()

template<typename O, template< typename > class L>
void aims::Newton< O, L >::setGamma ( float gamma = 0.1)

Definition at line 72 of file newton_d.h.

References _gamma, and gamma().

Referenced by Newton().

◆ setLineSearch()

template<typename O, template< typename > class L>
void aims::Newton< O, L >::setLineSearch ( const LineSearch & l = LineSearch())
Warning
the LineSearch object needs to be copiable and thus needs a copy constructor and an assignment operator

Definition at line 90 of file newton_d.h.

References _ls, lineSearch(), maximize(), objectiveFunction(), and verbose().

Referenced by Newton().

◆ setMaximize()

template<typename O, template< typename > class L>
void aims::Newton< O, L >::setMaximize ( bool maximize = false)

Definition at line 99 of file newton_d.h.

References _maximize, lineSearch(), and maximize().

Referenced by Newton().

◆ setMaxIterations()

template<typename O, template< typename > class L>
void aims::Newton< O, L >::setMaxIterations ( int n = - 1)

Definition at line 106 of file newton_d.h.

References _max_it.

Referenced by Newton().

◆ setObjectiveFunction()

template<typename O, template< typename > class L>
void aims::Newton< O, L >::setObjectiveFunction ( const Objective & f)
Warning
the Objective function needs to be copiable and thus needs a copy constructor and an assignment operator

Definition at line 119 of file newton_d.h.

References _f, and lineSearch().

◆ setPosition()

template<typename O, template< typename > class L>
void aims::Newton< O, L >::setPosition ( const Vector & x = Vector())

Definition at line 126 of file newton_d.h.

References _x.

◆ setStopCriterion()

template<typename O, template< typename > class L>
void aims::Newton< O, L >::setStopCriterion ( const std::string & crit = "absdiff")

Can take values:

  • absdiff
  • gain

Definition at line 78 of file newton_d.h.

References _crit.

Referenced by Newton().

◆ setStopValue()

template<typename O, template< typename > class L>
void aims::Newton< O, L >::setStopValue ( float epsilon = 1E-5)

Definition at line 84 of file newton_d.h.

References _epsilon.

Referenced by Newton().

◆ setVerbose()

template<typename O, template< typename > class L>
void aims::Newton< O, L >::setVerbose ( int v = carto::verbose)

Definition at line 112 of file newton_d.h.

References _verbose, and lineSearch().

Referenced by Newton().

◆ stopCriterion()

template<typename O, template< typename > class L>
const std::string & aims::Newton< O, L >::stopCriterion ( ) const

Definition at line 142 of file newton_d.h.

References _crit.

Referenced by execute().

◆ stopValue()

template<typename O, template< typename > class L>
float aims::Newton< O, L >::stopValue ( ) const

Definition at line 148 of file newton_d.h.

References _epsilon.

Referenced by execute().

◆ verbose()

template<typename O, template< typename > class L>
int aims::Newton< O, L >::verbose ( ) const

Definition at line 173 of file newton_d.h.

References _verbose.

Referenced by execute(), and setLineSearch().

Member Data Documentation

◆ _crit

template<typename O, template< typename > class L = NoLineSearch>
std::string aims::Newton< O, L >::_crit
protected

stop criterion

Definition at line 106 of file newton_decl.h.

Referenced by setStopCriterion(), and stopCriterion().

◆ _epsilon

template<typename O, template< typename > class L = NoLineSearch>
float aims::Newton< O, L >::_epsilon
protected

stop value

Definition at line 107 of file newton_decl.h.

Referenced by setStopValue(), and stopValue().

◆ _f

template<typename O, template< typename > class L = NoLineSearch>
Objective aims::Newton< O, L >::_f
protected

objectiveFunction

Definition at line 101 of file newton_decl.h.

Referenced by Newton(), Newton(), objectiveFunction(), operator=(), and setObjectiveFunction().

◆ _gamma

template<typename O, template< typename > class L = NoLineSearch>
float aims::Newton< O, L >::_gamma
protected

Fixed Gamma or initial gamma for line search.

Definition at line 99 of file newton_decl.h.

Referenced by gamma(), Newton(), operator=(), and setGamma().

◆ _ls

template<typename O, template< typename > class L = NoLineSearch>
LineSearch aims::Newton< O, L >::_ls
protected

lineSearch

Definition at line 102 of file newton_decl.h.

Referenced by lineSearch(), Newton(), operator=(), and setLineSearch().

◆ _max_it

template<typename O, template< typename > class L = NoLineSearch>
int aims::Newton< O, L >::_max_it
protected

maximum number of iterations

Definition at line 105 of file newton_decl.h.

Referenced by maxIterations(), Newton(), operator=(), and setMaxIterations().

◆ _maximize

template<typename O, template< typename > class L = NoLineSearch>
bool aims::Newton< O, L >::_maximize
protected

maximize or minimize

Definition at line 104 of file newton_decl.h.

Referenced by maximize(), Newton(), operator=(), and setMaximize().

◆ _verbose

template<typename O, template< typename > class L = NoLineSearch>
int aims::Newton< O, L >::_verbose
protected

verbosity level

Definition at line 103 of file newton_decl.h.

Referenced by Newton(), operator=(), setVerbose(), and verbose().

◆ _x

template<typename O, template< typename > class L = NoLineSearch>
Vector aims::Newton< O, L >::_x
protected

position

Definition at line 100 of file newton_decl.h.

Referenced by Newton(), Newton(), operator=(), position(), and setPosition().


The documentation for this class was generated from the following files: