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 >:

Public Types

typedef Problem< F, C > problem_t
 Solver problem type. More...
 
- Public Types inherited from roboptim::GenericSolver
enum  solutions { SOLVER_NO_SOLUTION, SOLVER_VALUE, SOLVER_VALUE_WARNINGS, SOLVER_ERROR }
 Define the kind of solution which has been found. More...
 
typedef Function::vector_t vector_t
 Vector type imported from function class. More...
 
typedef boost::variant
< NoSolution, Result,
ResultWithWarnings,
SolverError
result_t
 Result type. More...
 

Public Member Functions

 Solver (const problem_t &problem) throw ()
 Instantiate a solver from a problem. More...
 
template<typename F_ , typename C_ >
 Solver (const Problem< F_, C_ > &problem) throw ()
 Instantiate a solver from a problem in a different problem class. More...
 
virtual ~Solver () throw ()
 
const problem_tproblem () const throw ()
 Retrieve the problem. More...
 
virtual std::ostream & print (std::ostream &) const throw ()
 Display the solver on the specified output stream. More...
 
- Public Member Functions inherited from roboptim::GenericSolver
void reset () throw ()
 Force to restart the optimization. Reset the internal mechanism to force the solution to be re-computed next time getMinimum is called. More...
 
virtual void solve ()=0 throw ()
 Solve the problem. Called automatically by getMinimum if required. More...
 
const result_tminimum () throw ()
 Returns the function minimum This solves the problem automatically, if it has not yet been solved. More...
 
solutions minimumType () throw ()
 Determine real minimum type. More...
 
template<typename T >
const T & getMinimum () throw (boost::bad_get)
 Get real result. More...
 
 GenericSolver () throw ()
 
 GenericSolver (const GenericSolver &) throw ()
 
virtual ~GenericSolver () throw ()
 

Protected Attributes

const problem_t problem_
 Problem that will be solved. More...
 
- Protected Attributes inherited from roboptim::GenericSolver
result_t result_
 /brief Optimization result. More...
 

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 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 >
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.

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>
const problem_t roboptim::Solver< F, C >::problem_
protected

Problem that will be solved.