roboptim::Solver< F, C > Class Template Reference

Solver for a specific problem class. More...

#include <roboptim/core/solver.hh>

Inheritance diagram for roboptim::Solver< F, C >:
Collaboration diagram for roboptim::Solver< F, C >:

List of all members.

Public Types

typedef Problem< F, C > problem_t
 Solver problem type.
typedef std::map< std::string,
Parameter
parameters_t
 Map of parameters.

Public Member Functions

 Solver (const problem_t &problem) throw ()
 Instantiate a solver from a problem.
template<typename F_ , typename C_ >
 Solver (const Problem< F_, C_ > &problem) throw ()
 Instantiate a solver from a problem in a different problem class.
virtual ~Solver () throw ()
const problem_tproblem () const throw ()
 Retrieve the problem.
virtual std::ostream & print (std::ostream &) const throw ()
 Display the solver on the specified output stream.
Parameters
const parameters_tparameters () const throw ()
parameters_tparameters () throw ()
template<typename T >
const T & getParameter (const std::string &key) const

Protected Attributes

const problem_t problem_
 Problem that will be solved.
parameters_t parameters_
 Solver parameters (run-time configuration).

Static Protected Attributes

static log4cxx::LoggerPtr logger
 Pointer to function logger (see log4cxx documentation).

Detailed Description

template<typename F, typename C>
class roboptim::Solver< F, C >

Solver for a specific problem class.

This class is parametrized by two types: the cost function type and the constraints type.

Solver classes are immutable, the problem can not be changed after the class instantiation.

Template Parameters:
Fcost function type
Cconstraints functions type
Precondition:
F is a subtype of Function

Member Typedef Documentation

template<typename F, typename C>
typedef std::map<std::string, Parameter> roboptim::Solver< F, C >::parameters_t

Map of parameters.

template<typename F, typename C>
typedef Problem<F, C> roboptim::Solver< F, C >::problem_t

Solver problem type.

The solver can solve problems of this type. If another kind of problem is given, a conversion will be required.


Constructor & Destructor Documentation

template<typename F , typename C >
roboptim::Solver< F, C >::Solver ( const problem_t problem) throw () [explicit]

Instantiate a solver from a problem.

Parameters:
problemproblem that should be solved
template<typename F , typename C >
template<typename F_ , typename C_ >
roboptim::Solver< F, C >::Solver ( const Problem< F_, C_ > &  problem) throw () [explicit]

Instantiate a solver from a problem in a different problem class.

This constructor is called when the problem cost function or/and constraints type does not match solver's types.

This is only possible if the problem provides too much information compared to the solver requirements: if the problem contains twice derivable function and the solver requires only derivable function, it will work however the opposite will fail. Problem compatibility is known at compile-time, so the failure will be at compile-time.

Template Parameters:
F_original cost function type
C_original constraints functions type
Parameters:
problemproblem that should be solved
template<typename F , typename C >
roboptim::Solver< F, C >::~Solver ( ) throw () [virtual]

Member Function Documentation

template<typename F , typename C >
template<typename T >
const T & roboptim::Solver< F, C >::getParameter ( const std::string &  key) const
template<typename F , typename C >
const Solver< F, C >::parameters_t & roboptim::Solver< F, C >::parameters ( ) const throw ()
template<typename F , typename C >
Solver< F, C >::parameters_t & roboptim::Solver< F, C >::parameters ( ) throw ()
template<typename F , typename C >
std::ostream & roboptim::Solver< F, C >::print ( std::ostream &  o) const throw () [virtual]

Display the solver on the specified output stream.

Parameters:
ooutput stream used for display
Returns:
output stream

Reimplemented from roboptim::GenericSolver.

References roboptim::decindent(), roboptim::iendl(), and roboptim::incindent().

template<typename F , typename C >
const Solver< F, C >::problem_t & roboptim::Solver< F, C >::problem ( ) const throw ()

Retrieve the problem.

Returns:
problem this solver is solving

Member Data Documentation

template<typename F, typename C>
log4cxx::LoggerPtr roboptim::Solver< F, C >::logger [static, protected]

Pointer to function logger (see log4cxx documentation).

Reimplemented from roboptim::GenericSolver.

template<typename F, typename C>
parameters_t roboptim::Solver< F, C >::parameters_ [protected]

Solver parameters (run-time configuration).

template<typename F, typename C>
const problem_t roboptim::Solver< F, C >::problem_ [protected]

Problem that will be solved.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines