roboptim::FiniteDifferenceGradient< FdgPolicy > Class Template Reference

Compute automatically a gradient with finite differences. More...

#include <roboptim/core/finite-difference-gradient.hh>

+ Inheritance diagram for roboptim::FiniteDifferenceGradient< FdgPolicy >:

List of all members.

Public Member Functions

 FiniteDifferenceGradient (const Function &f, value_type e=finiteDifferenceEpsilon) throw ()
 Instantiate a finite differences gradient.
 ~FiniteDifferenceGradient () throw ()
- Public Member Functions inherited from roboptim::DerivableFunction
size_type gradientSize () const throw ()
 Return the gradient size.
jacobianSize_t jacobianSize () const throw ()
 Return the jacobian size as a pair.
bool isValidGradient (const gradient_t &gradient) const throw ()
 Check if the gradient is valid (check size).
bool isValidJacobian (const jacobian_t &jacobian) const throw ()
 Check if the jacobian is valid (check sizes).
jacobian_t jacobian (const argument_t &argument) const throw ()
 Computes the jacobian.
void jacobian (jacobian_t &jacobian, const argument_t &argument) const throw ()
 Computes the jacobian.
gradient_t gradient (const argument_t &argument, size_type functionId=0) const throw ()
 Computes the gradient.
void gradient (gradient_t &gradient, const argument_t &argument, size_type functionId=0) const throw ()
 Computes the gradient.
virtual std::ostream & print (std::ostream &o) const throw ()
 Display the function on the specified output stream.
- Public Member Functions inherited from roboptim::Function
bool isValidResult (const result_t &result) const throw ()
 Check the given result size is valid.
size_type inputSize () const throw ()
 Return the input size (i.e. argument's vector size).
size_type outputSize () const throw ()
 Return the output size (i.e. result's vector size).
virtual ~Function () throw ()
 Trivial destructor.
result_t operator() (const argument_t &argument) const throw ()
 Evaluate the function at a specified point.
void operator() (result_t &result, const argument_t &argument) const throw ()
 Evaluate the function at a specified point.
const std::string & getName () const throw ()
 Get function name.

Protected Member Functions

void impl_compute (result_t &, const argument_t &) const throw ()
 Function evaluation.
void impl_gradient (gradient_t &, const argument_t &argument, size_type=0) const throw ()
 Gradient evaluation.
- Protected Member Functions inherited from roboptim::DerivableFunction
 DerivableFunction (size_type inputSize, size_type outputSize=1, std::string name=std::string()) throw ()
 Concrete class constructor should call this constructor.
virtual void impl_jacobian (jacobian_t &jacobian, const argument_t &arg) const throw ()
 Jacobian evaluation.
- Protected Member Functions inherited from roboptim::Function
 Function (size_type inputSize, size_type outputSize=1, std::string name=std::string()) throw ()
 Concrete class constructor should call this constructor.

Protected Attributes

const Functionadaptee_
 Reference to the wrapped function.
const value_type epsilon_

Additional Inherited Members

- Public Types inherited from roboptim::DerivableFunction
typedef vector_t gradient_t
 Gradient type.
typedef matrix_t jacobian_t
 Jacobian type.
typedef std::pair< value_type,
value_type
jacobianSize_t
 Jacobian size type (pair of values).
- Public Types inherited from roboptim::Function
typedef double value_type
 Values type.
typedef std::size_t size_type
 Size type.
typedef ublas::vector< value_typevector_t
 Basic vector type.
typedef ublas::matrix< value_typematrix_t
 Basic matrix type.
typedef vector_t result_t
 Type of a function evaluation result.
typedef vector_t argument_t
 Type of a function evaluation argument.
typedef std::pair< value_type,
value_type
interval_t
 Interval type (lower, upper). Use negative or positive infinity to respectively disable the lower or upper bound.
typedef std::vector< interval_tintervals_t
 Vector of intervals.
typedef boost::tuple
< value_type, value_type,
value_type
discreteInterval_t
 Types representing a discrete interval. A discrete interval is a triplet of values:

Detailed Description

template<typename FdgPolicy>
class roboptim::FiniteDifferenceGradient< FdgPolicy >

Compute automatically a gradient with finite differences.

 Finite difference gradient is a method to approximate a function's
 gradient. It is particularly useful in RobOptim to avoid the need
 to compute the analytical gradient manually.

 This class takes a Function as its input and wraps it into a derivable
 function.

 The one dimensional formula is:

\[f'(x)\approx {f(x+\epsilon)-f(x)\over \epsilon}\]

where $\epsilon$ is a constant given when calling the class constructor.

Examples:
finite-difference-gradient.cc.

Constructor & Destructor Documentation

template<typename FdgPolicy >
roboptim::FiniteDifferenceGradient< FdgPolicy >::FiniteDifferenceGradient ( const Function f,
value_type  e = finiteDifferenceEpsilon 
) throw ()

Instantiate a finite differences gradient.

Instantiate a derivable function that will wraps a non derivable function and compute automatically its gradient using finite differences.

Parameters:
ffunction that will e wrapped
eepsilon used in finite difference computation
template<typename FdgPolicy >
roboptim::FiniteDifferenceGradient< FdgPolicy >::~FiniteDifferenceGradient ( ) throw ()

Member Function Documentation

template<typename FdgPolicy >
void roboptim::FiniteDifferenceGradient< FdgPolicy >::impl_compute ( result_t result,
const argument_t argument 
) const throw ()
protectedvirtual

Function evaluation.

Evaluate the function, has to be implemented in concrete classes.

Warning:
Do not call this function directly, call operator()(result_t&, const argument_t&) const throw () instead.
Parameters:
resultresult will be stored in this vector
argumentpoint at which the function will be evaluated

Implements roboptim::Function.

template<typename FdgPolicy >
void roboptim::FiniteDifferenceGradient< FdgPolicy >::impl_gradient ( gradient_t gradient,
const argument_t argument,
size_type  functionId = 0 
) const throw ()
protectedvirtual

Gradient evaluation.

Compute the gradient, has to be implemented in concrete classes. The gradient is computed for a specific sub-function which id is passed through the functionId argument.

Warning:
Do not call this function directly, call gradient instead.
Parameters:
gradientgradient will be store in this argument
argumentpoint where the gradient will be computed
functionIdevaluated function id in the split representation

Implements roboptim::DerivableFunction.


Member Data Documentation

template<typename FdgPolicy>
const Function& roboptim::FiniteDifferenceGradient< FdgPolicy >::adaptee_
protected

Reference to the wrapped function.

template<typename FdgPolicy>
const value_type roboptim::FiniteDifferenceGradient< FdgPolicy >::epsilon_
protected