shark::AbstractLineSearchOptimizer Class Referenceabstract

Basis class for line search methods. More...

#include <shark/Algorithms/GradientDescent/AbstractLineSearchOptimizer.h>

+ Inheritance diagram for shark::AbstractLineSearchOptimizer:

Public Member Functions

SHARK_EXPORT_SYMBOL AbstractLineSearchOptimizer ()
 
SHARK_EXPORT_SYMBOL void init (ObjectiveFunctionType const &objectiveFunction, SearchPointType const &startingPoint)
 initializes the optimizer using a predefined starting point More...
 
SHARK_EXPORT_SYMBOL void step (ObjectiveFunctionType const &objectiveFunction)
 Carry out one step of the optimizer for the supplied objective function. More...
 
SHARK_EXPORT_SYMBOL void read (InArchive &archive)
 Read the component from the supplied archive. More...
 
SHARK_EXPORT_SYMBOL void write (OutArchive &archive) const
 Write the component to the supplied archive. More...
 
LineSearch const & lineSearch () const
 
LineSearchlineSearch ()
 
RealVector const & derivative () const
 Returns the derivative at the current point. Can be used for stopping criteria. More...
 
- Public Member Functions inherited from shark::AbstractSingleObjectiveOptimizer< RealVector >
std::size_t numInitPoints () const
 By default most single objective optimizers only require a single point. More...
 
virtual void init (ObjectiveFunctionType const &function, std::vector< SearchPointType > const &initPoints)
 Initialize the optimizer for the supplied objective function using a set of initialisation points. More...
 
virtual const SolutionTypesolution () const
 returns the current solution of the optimizer More...
 
- Public Member Functions inherited from shark::AbstractOptimizer< RealVector, double, SingleObjectiveResultSet< RealVector > >
const Featuresfeatures () const
 
virtual void updateFeatures ()
 
bool requiresValue () const
 
bool requiresFirstDerivative () const
 
bool requiresSecondDerivative () const
 
bool canSolveConstrained () const
 
bool requiresClosestFeasible () const
 
virtual ~AbstractOptimizer ()
 
virtual void init (ObjectiveFunctionType const &function)
 Initialize the optimizer for the supplied objective function. More...
 
- Public Member Functions inherited from shark::INameable
virtual ~INameable ()
 
virtual std::string name () const
 returns the name of the object More...
 
- Public Member Functions inherited from shark::ISerializable
virtual ~ISerializable ()
 Virtual d'tor. More...
 
void load (InArchive &archive, unsigned int version)
 Versioned loading of components, calls read(...). More...
 
void save (OutArchive &archive, unsigned int version) const
 Versioned storing of components, calls write(...). More...
 
 BOOST_SERIALIZATION_SPLIT_MEMBER ()
 

Protected Member Functions

virtual void initModel ()=0
 Initializes the internal model. More...
 
virtual void computeSearchDirection (ObjectiveFunctionType const &objectiveFunction)=0
 Updates the Model and computes the next search direction. More...
 
- Protected Member Functions inherited from shark::AbstractOptimizer< RealVector, double, SingleObjectiveResultSet< RealVector > >
void checkFeatures (ObjectiveFunctionType const &objectiveFunction)
 Convenience function that checks whether the features of the supplied objective function match with the required features of the optimizer. More...
 

Protected Attributes

LineSearch m_linesearch
 used line search method. More...
 
std::size_t m_dimension
 number of parameters More...
 
double m_initialStepLength
 Initial step length to begin with the line search. More...
 
RealVector m_derivative
 gradient of m_best.point More...
 
RealVector m_searchDirection
 search direction of next step More...
 
RealVector m_lastPoint
 previous point More...
 
RealVector m_lastDerivative
 gradient of the previous point More...
 
double m_lastValue
 value of the previous point More...
 
- Protected Attributes inherited from shark::AbstractSingleObjectiveOptimizer< RealVector >
SolutionType m_best
 Current solution of the optimizer. More...
 
- Protected Attributes inherited from shark::AbstractOptimizer< RealVector, double, SingleObjectiveResultSet< RealVector > >
Features m_features
 

Additional Inherited Members

- Public Types inherited from shark::AbstractSingleObjectiveOptimizer< RealVector >
typedef base_type::SearchPointType SearchPointType
 
typedef base_type::SolutionType SolutionType
 
typedef base_type::ResultType ResultType
 
typedef base_type::ObjectiveFunctionType ObjectiveFunctionType
 
- Public Types inherited from shark::AbstractOptimizer< RealVector, double, SingleObjectiveResultSet< RealVector > >
enum  Feature
 Models features that the optimizer requires from the objective function. More...
 
typedef RealVector SearchPointType
 
typedef double ResultType
 
typedef SingleObjectiveResultSet< RealVector > SolutionType
 
typedef AbstractObjectiveFunction< RealVector, ResultTypeObjectiveFunctionType
 
typedef TypedFlags< FeatureFeatures
 
typedef TypedFeatureNotAvailableException< FeatureFeatureNotAvailableException
 

Detailed Description

Basis class for line search methods.

Line Search optimizer find an iterative optimum by starting from some point, choosing a search direction and than performing a line search in that direction. To choose the search direction a local model of the function is often used. This class is a base class for all line search method which implement the general behaviour of line search methods. Derived classes only need to implement initModel() and computeSearchDirection() to initializee and update the model and find a new line search direction. The remaining functionality is implemented by the optimizer.

Also derived classes should specialise read() and write() methods for serialization if they have additional members as well as choose a name() for the optimizer.

Definition at line 55 of file AbstractLineSearchOptimizer.h.

Constructor & Destructor Documentation

◆ AbstractLineSearchOptimizer()

SHARK_EXPORT_SYMBOL shark::AbstractLineSearchOptimizer::AbstractLineSearchOptimizer ( )

Member Function Documentation

◆ computeSearchDirection()

virtual void shark::AbstractLineSearchOptimizer::computeSearchDirection ( ObjectiveFunctionType const &  objectiveFunction)
protectedpure virtual

Updates the Model and computes the next search direction.

After a step was performed, this method is called to compute the next search direction. This usually involves updating the internal model using the new and old step information. Afterwards m_searchDirection should contain the next search direction.

Implemented in shark::LBFGS, shark::CG, and shark::BFGS.

◆ derivative()

RealVector const& shark::AbstractLineSearchOptimizer::derivative ( ) const
inline

Returns the derivative at the current point. Can be used for stopping criteria.

Definition at line 94 of file AbstractLineSearchOptimizer.h.

References m_derivative.

◆ init()

SHARK_EXPORT_SYMBOL void shark::AbstractLineSearchOptimizer::init ( ObjectiveFunctionType const &  function,
SearchPointType const &  startingPoint 
)
virtual

initializes the optimizer using a predefined starting point

Implements shark::AbstractSingleObjectiveOptimizer< RealVector >.

Referenced by main().

◆ initModel()

virtual void shark::AbstractLineSearchOptimizer::initModel ( )
protectedpure virtual

Initializes the internal model.

Line Search Methods use a Model to search for the next search direction. The model is initialized during init()

Implemented in shark::LBFGS, shark::CG, and shark::BFGS.

◆ lineSearch() [1/2]

LineSearch const& shark::AbstractLineSearchOptimizer::lineSearch ( ) const
inline

Definition at line 86 of file AbstractLineSearchOptimizer.h.

References m_linesearch.

◆ lineSearch() [2/2]

LineSearch& shark::AbstractLineSearchOptimizer::lineSearch ( )
inline

Definition at line 89 of file AbstractLineSearchOptimizer.h.

References m_linesearch.

◆ read()

SHARK_EXPORT_SYMBOL void shark::AbstractLineSearchOptimizer::read ( InArchive archive)
virtual

Read the component from the supplied archive.

Parameters
[in,out]archiveThe archive to read from.

Reimplemented from shark::ISerializable.

Reimplemented in shark::LBFGS, shark::CG, and shark::BFGS.

◆ step()

SHARK_EXPORT_SYMBOL void shark::AbstractLineSearchOptimizer::step ( ObjectiveFunctionType const &  function)
virtual

Carry out one step of the optimizer for the supplied objective function.

Parameters
[in]functionThe objective function to initialize for.

Implements shark::AbstractOptimizer< RealVector, double, SingleObjectiveResultSet< RealVector > >.

Referenced by main(), and shark::LBFGS::setHistCount().

◆ write()

SHARK_EXPORT_SYMBOL void shark::AbstractLineSearchOptimizer::write ( OutArchive archive) const
virtual

Write the component to the supplied archive.

Parameters
[in,out]archiveThe archive to write to.

Reimplemented from shark::ISerializable.

Reimplemented in shark::LBFGS, shark::CG, and shark::BFGS.

Member Data Documentation

◆ m_derivative

RealVector shark::AbstractLineSearchOptimizer::m_derivative
protected

gradient of m_best.point

Definition at line 105 of file AbstractLineSearchOptimizer.h.

Referenced by derivative().

◆ m_dimension

std::size_t shark::AbstractLineSearchOptimizer::m_dimension
protected

number of parameters

Definition at line 102 of file AbstractLineSearchOptimizer.h.

◆ m_initialStepLength

double shark::AbstractLineSearchOptimizer::m_initialStepLength
protected

Initial step length to begin with the line search.

Definition at line 103 of file AbstractLineSearchOptimizer.h.

◆ m_lastDerivative

RealVector shark::AbstractLineSearchOptimizer::m_lastDerivative
protected

gradient of the previous point

Definition at line 110 of file AbstractLineSearchOptimizer.h.

◆ m_lastPoint

RealVector shark::AbstractLineSearchOptimizer::m_lastPoint
protected

previous point

Definition at line 109 of file AbstractLineSearchOptimizer.h.

◆ m_lastValue

double shark::AbstractLineSearchOptimizer::m_lastValue
protected

value of the previous point

Definition at line 111 of file AbstractLineSearchOptimizer.h.

◆ m_linesearch

LineSearch shark::AbstractLineSearchOptimizer::m_linesearch
protected

used line search method.

Definition at line 101 of file AbstractLineSearchOptimizer.h.

Referenced by lineSearch().

◆ m_searchDirection

RealVector shark::AbstractLineSearchOptimizer::m_searchDirection
protected

search direction of next step

Definition at line 106 of file AbstractLineSearchOptimizer.h.


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