Define an abstract mathematical function ( ). More...
#include <roboptim/core/function.hh>
Public Types | |
typedef GenericFunctionTraits < T >::value_type | value_type |
Values type. | |
typedef GenericFunctionTraits < T >::vector_t | vector_t |
Basic vector type. | |
typedef GenericFunctionTraits < T >::matrix_t | matrix_t |
Basic matrix type. | |
typedef GenericFunctionTraits < T >::size_type | size_type |
Size type. | |
typedef GenericFunctionTraits < T >::result_t | result_t |
Type of a function evaluation result. | |
typedef GenericFunctionTraits < T >::argument_t | argument_t |
Type of a function evaluation argument. | |
Public Member Functions | |
bool | isValidResult (const result_t &result) const throw () |
Check the given result size is valid. | |
GenericFunction< T >::size_type | inputSize () const throw () |
Return the input size (i.e. | |
GenericFunction< T >::size_type | outputSize () const throw () |
Return the output size (i.e. | |
virtual | ~GenericFunction () 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. | |
virtual std::ostream & | print (std::ostream &) const throw () |
Display the function on the specified output stream. | |
Static Public Member Functions | |
static value_type | epsilon () throw () |
Get the value of the machine epsilon, useful for floating types comparison. | |
static value_type | infinity () throw () |
Get the value that symbolizes positive infinity. | |
Protected Member Functions | |
GenericFunction (size_type inputSize, size_type outputSize=1, std::string name=std::string()) throw () | |
Concrete class constructor should call this constructor. | |
virtual void | impl_compute (result_t &result, const argument_t &argument) const =0 throw () |
Function evaluation. | |
Static Protected Attributes | |
static log4cxx::LoggerPtr | logger |
Pointer to function logger (see log4cxx documentation). | |
Interval | |
typedef std::pair< value_type, value_type > | interval_t |
Interval type (lower, upper). | |
typedef std::vector< interval_t > | intervals_t |
Vector of intervals. | |
static interval_t | makeInterval (value_type l, value_type u) throw () |
Construct an interval from a lower and upper bound. | |
static interval_t | makeInfiniteInterval () throw () |
Construct an infinite interval. | |
static interval_t | makeLowerInterval (value_type l) throw () |
Construct an interval from a lower bound. | |
static interval_t | makeUpperInterval (value_type u) throw () |
Construct an interval from an upper bound. | |
static double | getLowerBound (const interval_t &interval) throw () |
Get the lower bound of an interval. | |
static double | getUpperBound (const interval_t &interval) throw () |
Get the upper bound of an interval. | |
Discrete interval | |
typedef boost::tuple < value_type, value_type, value_type > | discreteInterval_t |
Types representing a discrete interval. | |
static discreteInterval_t | makeDiscreteInterval (value_type min, value_type max, value_type step) |
Construct a discrete interval. | |
static discreteInterval_t | makeDiscreteInterval (interval_t interval, value_type step) |
Construct a discrete interval. | |
static double | getLowerBound (const discreteInterval_t &interval) throw () |
Get the lower bound of a discrete interval. | |
static double | getUpperBound (const discreteInterval_t &interval) throw () |
Get the upper bound of a discrete interval. | |
static double | getStep (const discreteInterval_t &interval) throw () |
Get the upper step of a discrete interval. | |
template<typename F > | |
static void | foreach (const discreteInterval_t interval, F functor) |
Iterate on an interval. | |
template<typename F > | |
static void | foreach (const interval_t interval, const size_type n, F functor) |
Iterate on an interval. |
Define an abstract mathematical function ( ).
A function is an object that can be evaluated for a given point.
, where is the input size and is the output size.
Functions are pure immutable objects: evaluating a function twice at a given point must give the same result.
This function is parametrized by the matrix type used in this function. Currently, dense (which size may be dynamic or static and sparse Eigen matrices can be used) are supported.
T | Matrix type |
typedef GenericFunctionTraits<T>::argument_t roboptim::GenericFunction< T >::argument_t |
Type of a function evaluation argument.
Reimplemented in roboptim::SumOfC1Squares, and roboptim::GenericLinearFunction< T >.
typedef boost::tuple<value_type, value_type, value_type> roboptim::GenericFunction< T >::discreteInterval_t |
Types representing a discrete interval.
A discrete interval is a triplet of values:
typedef std::pair<value_type, value_type> roboptim::GenericFunction< T >::interval_t |
Interval type (lower, upper).
Use negative or positive infinity to respectively disable the lower or upper bound.
typedef std::vector<interval_t> roboptim::GenericFunction< T >::intervals_t |
Vector of intervals.
typedef GenericFunctionTraits<T>::matrix_t roboptim::GenericFunction< T >::matrix_t |
Basic matrix type.
This basic matrix type is used each time a two dimensional matrix of values is needed.
typedef GenericFunctionTraits<T>::result_t roboptim::GenericFunction< T >::result_t |
Type of a function evaluation result.
Reimplemented in roboptim::GenericLinearFunction< T >.
typedef GenericFunctionTraits<T>::size_type roboptim::GenericFunction< T >::size_type |
Size type.
This type is used to represent sizes, indexes, etc.
Reimplemented in roboptim::GenericLinearFunction< T >, and roboptim::GenericQuadraticFunction< T >.
typedef GenericFunctionTraits<T>::value_type roboptim::GenericFunction< T >::value_type |
Values type.
Represents the numerical type (i.e. float, double, int...) used for computations.
typedef GenericFunctionTraits<T>::vector_t roboptim::GenericFunction< T >::vector_t |
Basic vector type.
This basic vector type is used each time a vector of values is required.
Reimplemented in roboptim::GenericLinearFunction< T >.
static value_type roboptim::GenericFunction< T >::epsilon | ( | ) | throw () [inline, static] |
Get the value of the machine epsilon, useful for floating types comparison.
Referenced by roboptim::detail::ltvector::operator()().
static void roboptim::GenericFunction< T >::foreach | ( | const discreteInterval_t | interval, |
F | functor | ||
) | [inline, static] |
Iterate on an interval.
Call the functor to each discretization point of the discrete interval.
interval | interval on which the method iterates |
functor | unary function that will be applied |
F | functor type (has to satisfy the STL unary function concept) |
References roboptim::GenericFunction< T >::getLowerBound(), roboptim::GenericFunction< T >::getStep(), and roboptim::GenericFunction< T >::getUpperBound().
static void roboptim::GenericFunction< T >::foreach | ( | const interval_t | interval, |
const size_type | n, | ||
F | functor | ||
) | [inline, static] |
Iterate on an interval.
Call the functor regularly n times on an interval.
interval | interval on which the method iterates |
n | number of discretization points |
functor | unary function that will be applied |
F | functor type (has to satisfy the STL unary function concept) |
References roboptim::GenericFunction< T >::getLowerBound(), and roboptim::GenericFunction< T >::getUpperBound().
static double roboptim::GenericFunction< T >::getLowerBound | ( | const interval_t & | interval | ) | throw () [inline, static] |
Get the lower bound of an interval.
interval | accessed interval |
Referenced by roboptim::GenericFunction< T >::foreach(), and roboptim::GenericFunction< T >::makeDiscreteInterval().
static double roboptim::GenericFunction< T >::getLowerBound | ( | const discreteInterval_t & | interval | ) | throw () [inline, static] |
Get the lower bound of a discrete interval.
interval | accessed discrete interval |
const std::string& roboptim::GenericFunction< T >::getName | ( | ) | const throw () [inline] |
Get function name.
Referenced by roboptim::visualization::gnuplot::plot(), roboptim::visualization::gnuplot::plot_jac(), roboptim::visualization::gnuplot::plot_xy(), and roboptim::GenericFunction< T >::print().
static double roboptim::GenericFunction< T >::getStep | ( | const discreteInterval_t & | interval | ) | throw () [inline, static] |
Get the upper step of a discrete interval.
interval | accessed discrete interval |
Referenced by roboptim::GenericFunction< T >::foreach().
static double roboptim::GenericFunction< T >::getUpperBound | ( | const interval_t & | interval | ) | throw () [inline, static] |
Get the upper bound of an interval.
interval | accessed interval |
Referenced by roboptim::GenericFunction< T >::foreach(), and roboptim::GenericFunction< T >::makeDiscreteInterval().
static double roboptim::GenericFunction< T >::getUpperBound | ( | const discreteInterval_t & | interval | ) | throw () [inline, static] |
Get the upper bound of a discrete interval.
interval | accessed discrete interval |
virtual void roboptim::GenericFunction< T >::impl_compute | ( | result_t & | result, |
const argument_t & | argument | ||
) | const throw () [protected, pure virtual] |
Function evaluation.
Evaluate the function, has to be implemented in concrete classes.
result | result will be stored in this vector |
argument | point at which the function will be evaluated |
Implemented in roboptim::NTimesDerivableFunction< 2 >, roboptim::GenericFiniteDifferenceGradient< T, FdgPolicy >, roboptim::GenericNumericLinearFunction< T >, roboptim::SumOfC1Squares, roboptim::NumericQuadraticFunction, roboptim::IdentityFunction, and roboptim::ConstantFunction.
Referenced by roboptim::GenericFunction< T >::operator()().
static value_type roboptim::GenericFunction< T >::infinity | ( | ) | throw () [inline, static] |
Get the value that symbolizes positive infinity.
Referenced by roboptim::GenericFunction< T >::makeInfiniteInterval(), roboptim::GenericFunction< T >::makeLowerInterval(), roboptim::GenericFunction< T >::makeUpperInterval(), roboptim::Problem< F, boost::mpl::vector<> >::print(), and roboptim::Problem< F, CLIST >::print().
GenericFunction<T>::size_type roboptim::GenericFunction< T >::inputSize | ( | ) | const throw () [inline] |
Return the input size (i.e.
argument's vector size).
Referenced by roboptim::finiteDifferenceGradientPolicies::Simple< T >::computeGradient(), roboptim::GenericDifferentiableFunction< T >::gradient(), roboptim::GenericDifferentiableFunction< T >::gradientSize(), roboptim::GenericTwiceDifferentiableFunction< T >::hessianSize(), roboptim::GenericDifferentiableFunction< T >::jacobian(), roboptim::GenericDifferentiableFunction< T >::jacobianSize(), roboptim::GenericFunction< T >::operator()(), roboptim::visualization::gnuplot::plot(), and roboptim::visualization::gnuplot::plot_xy().
bool roboptim::GenericFunction< T >::isValidResult | ( | const result_t & | result | ) | const throw () [inline] |
Check the given result size is valid.
result | result that will be checked |
References roboptim::GenericFunction< T >::outputSize().
Referenced by roboptim::GenericFunction< T >::operator()().
static discreteInterval_t roboptim::GenericFunction< T >::makeDiscreteInterval | ( | value_type | min, |
value_type | max, | ||
value_type | step | ||
) | [inline, static] |
Construct a discrete interval.
min | miminum value of the interval |
max | maxinum value of the interval |
step | discretization step |
static discreteInterval_t roboptim::GenericFunction< T >::makeDiscreteInterval | ( | interval_t | interval, |
value_type | step | ||
) | [inline, static] |
Construct a discrete interval.
interval | continuous interval |
step | discretization step |
References roboptim::GenericFunction< T >::getLowerBound(), and roboptim::GenericFunction< T >::getUpperBound().
static interval_t roboptim::GenericFunction< T >::makeInfiniteInterval | ( | ) | throw () [inline, static] |
Construct an infinite interval.
References roboptim::GenericFunction< T >::infinity().
Referenced by roboptim::Problem< F, boost::mpl::vector<> >::Problem(), and roboptim::Problem< F, CLIST >::Problem().
static interval_t roboptim::GenericFunction< T >::makeInterval | ( | value_type | l, |
value_type | u | ||
) | throw () [inline, static] |
Construct an interval from a lower and upper bound.
l | lower bound |
u | upper bound |
Referenced by roboptim::GenericFunction< T >::makeLowerInterval(), and roboptim::GenericFunction< T >::makeUpperInterval().
static interval_t roboptim::GenericFunction< T >::makeLowerInterval | ( | value_type | l | ) | throw () [inline, static] |
Construct an interval from a lower bound.
l | lower bound |
References roboptim::GenericFunction< T >::infinity(), and roboptim::GenericFunction< T >::makeInterval().
static interval_t roboptim::GenericFunction< T >::makeUpperInterval | ( | value_type | u | ) | throw () [inline, static] |
Construct an interval from an upper bound.
u | upper bound |
References roboptim::GenericFunction< T >::infinity(), and roboptim::GenericFunction< T >::makeInterval().
result_t roboptim::GenericFunction< T >::operator() | ( | const argument_t & | argument | ) | const throw () [inline] |
Evaluate the function at a specified point.
The program will abort if the argument does not have the expected size.
argument | point at which the function will be evaluated |
References roboptim::GenericFunction< T >::outputSize().
void roboptim::GenericFunction< T >::operator() | ( | result_t & | result, |
const argument_t & | argument | ||
) | const throw () [inline] |
Evaluate the function at a specified point.
The program will abort if the argument does not have the expected size.
result | result will be stored in this vector |
argument | point at which the function will be evaluated |
ROBOPTIM_DO_NOT_CHECK_ALLOCATION
ROBOPTIM_DO_NOT_CHECK_ALLOCATION
References roboptim::GenericFunction< T >::impl_compute(), roboptim::GenericFunction< T >::inputSize(), roboptim::GenericFunction< T >::isValidResult(), and roboptim::GenericFunction< T >::logger.
GenericFunction<T>::size_type roboptim::GenericFunction< T >::outputSize | ( | ) | const throw () [inline] |
Return the output size (i.e.
result's vector size).
Referenced by roboptim::finiteDifferenceGradientPolicies::Simple< T >::computeGradient(), roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >::computeGradient(), roboptim::GenericFunction< T >::isValidResult(), roboptim::GenericDifferentiableFunction< T >::jacobianSize(), roboptim::GenericFunction< T >::operator()(), roboptim::visualization::gnuplot::plot(), and roboptim::visualization::gnuplot::plot_xy().