roboptim::GenericSolver Class Referenceabstract

Abstract interface satisfied by all solvers. More...

#include <roboptim/core/generic-solver.hh>

Inheritance diagram for roboptim::GenericSolver:
roboptim::Solver< F, C > roboptim::Solver< F, boost::mpl::vector< F > > roboptim::Solver< Function, boost::mpl::vector< Function > > roboptim::Solver< TwiceDifferentiableFunction, boost::mpl::vector< TwiceDifferentiableFunction > > roboptim::GenericDummySolverLastState< F > roboptim::DummySolver roboptim::DummySolverTd

Public Types

enum  solutions {
  SOLVER_NO_SOLUTION,
  SOLVER_VALUE,
  SOLVER_VALUE_WARNINGS,
  SOLVER_ERROR
}
 Define the kind of solution which has been found. More...
 
typedef boost::variant< NoSolution, Result, ResultWithWarnings, SolverErrorresult_t
 Result type. More...
 

Public Member Functions

void reset ()
 Force to restart the optimization. More...
 
virtual void solve ()=0
 Solve the problem. More...
 
const result_tminimum ()
 Returns the function minimum This solves the problem automatically, if it has not yet been solved. More...
 
virtual std::ostream & print (std::ostream &) const
 Display the solver on the specified output stream. More...
 
solutions minimumType ()
 Determine real minimum type. More...
 
template<typename T >
const T & getMinimum ()
 Get real result. More...
 
Constructors and destructors.
 GenericSolver ()
 
 GenericSolver (const GenericSolver &)
 
virtual ~GenericSolver ()
 

Protected Attributes

result_t result_
 Optimization result. More...
 

Static Protected Attributes

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

Detailed Description

Abstract interface satisfied by all solvers.

Member Typedef Documentation

Result type.

Uses a Boost.Variant to represent the different possible results:

  • no solution (problem not yet solved),
  • result (problem has been solved successfully),
  • result and warnings (problem solved but some errors happened),
  • solver error (optimization has failed).

Constructor & Destructor Documentation

roboptim::GenericSolver::GenericSolver ( )
explicit
roboptim::GenericSolver::GenericSolver ( const GenericSolver solver)
explicit
roboptim::GenericSolver::~GenericSolver ( )
virtual

Member Function Documentation

template<typename T >
const T& roboptim::GenericSolver::getMinimum ( )
inline

Get real result.

Optimization results is wrapped in a Boost.Variant class, this method has to be used to retrieve the real result type.

Returns
real result
Exceptions
boost::bad_getif a wrong type is used.
const GenericSolver::result_t & roboptim::GenericSolver::minimum ( )

Returns the function minimum This solves the problem automatically, if it has not yet been solved.

See also
minimumType()
getMinimum()

References result_, solve(), and SOLVER_NO_SOLUTION.

solutions roboptim::GenericSolver::minimumType ( )
inline

Determine real minimum type.

Returns
value representing result type
std::ostream & roboptim::GenericSolver::print ( std::ostream &  o) const
virtual
void roboptim::GenericSolver::reset ( )

Force to restart the optimization.

Reset the internal mechanism to force the solution to be re-computed next time getMinimum is called.

References logger, and result_.

virtual void roboptim::GenericSolver::solve ( )
pure virtual

Solve the problem.

Called automatically by getMinimum if required.

Implemented in roboptim::GenericDummySolverLastState< F >, roboptim::DummySolverTd, and roboptim::DummySolver.

Referenced by minimum().

Member Data Documentation

log4cxx::LoggerPtr roboptim::GenericSolver::logger
staticprotected

Pointer to function logger (see log4cxx documentation).

Referenced by reset().

result_t roboptim::GenericSolver::result_
protected