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

List of all members.

Public Types

typedef Problem< F, C > problem_t
 Solver problem type.
- 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.
typedef boost::variant
< NoSolution, Result,
ResultWithWarnings,
SolverError
result_t
 Result type.

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.
- 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.
virtual void solve ()=0 throw ()
 Solve the problem. Called automatically by getMinimum if required.
const result_tminimum () throw ()
 Returns the function minimum This solves the problem automatically, if it has not yet been solved.
solutions minimumType () throw ()
 Determine real minimum type.
template<typename T >
const T & getMinimum () throw (boost::bad_get)
 Get real result.
 GenericSolver () throw ()
 GenericSolver (const GenericSolver &) throw ()
virtual ~GenericSolver () throw ()

Protected Attributes

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

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.