roboptim::Problem< F, CLIST > Class Template Reference
[Optimization problems]

Optimization problem. More...

#include <roboptim/core/problem.hh>

List of all members.

Public Types

typedef F function_t
 Function type.
typedef
boost::make_variant_over
< typename
detail::add_shared_ptr< CLIST >
::type >::type 
constraint_t
 Constraint's type.
typedef function_t::value_type value_type
typedef std::vector< constraint_tconstraints_t
 Constraints are represented as a vector of constraints.
typedef boost::optional
< Function::vector_t
startingPoint_t
 Optional vector defines a starting point.
typedef Function::interval_t interval_t
typedef Function::intervals_t intervals_t
typedef std::vector< value_typescales_t
 Scale vector.

Public Member Functions

std::ostream & print (std::ostream &o) const throw ()
 Display the problem on the specified output stream.
Constructors and destructors.



 Problem (const function_t &) throw ()
 Problem (const Problem< F, CLIST > &) throw ()
 Copy constructor.
template<typename F_ , typename CLIST_ >
 Problem (const Problem< F_, CLIST_ > &) throw ()
 Copy constructor (convert from another class of problem).
 ~Problem () throw ()
Cost function.



const function_tfunction () const throw ()
 Retrieve cost function.
intervals_targumentBounds () throw ()
 Retrieve arguments bounds. Arguments bounds define in which interval each argument is valid.
const intervals_targumentBounds () const throw ()
 Retrieve arguments bounds. Arguments bounds define in which interval each argument is valid.
scales_targumentScales () throw ()
 Retrieve arguments scales. Arguments scales define which scale is applied for each argument.
const scales_targumentScales () const throw ()
 Retrieve arguments scales. Arguments scales define which scale is applied for each argument.
Constraints.



const constraints_tconstraints () const throw ()
 Retrieve constraints.
template<typename C >
void addConstraint (boost::shared_ptr< C > constraint, interval_t interval, value_type scale=1.) throw (std::runtime_error)
 Add a constraint to the problem.
const intervals_tbounds () const throw ()
 Retrieve constraints bounds.
const scales_tscales () const throw ()
 Retrieve constraints scales.
Starting point (initial guess).



startingPoint_tstartingPoint () throw ()
 Set the initial guess.
const startingPoint_tstartingPoint () const throw ()
 Get the initial guess.

Friends

class Problem

Detailed Description

template<typename F, typename CLIST>
class roboptim::Problem< F, CLIST >

Optimization problem.

An optimization problem is defined as:

The goal of the optimization process is finding a point which minimizes the cost function and which respects the constraints (i.e. the result of some functions is inside of specific interval).

To use the class, one has to instantiate a problem with a reference to a cost function. Then, constraints can be added through the addConstraint method: a reference to a function and an interval is needed.

The cost function is immutable.

Constraints are stored as a Boost.Variant of smart pointers (i.e. more precisely using a boost::shared_ptr) representing all the different possibles constraint types.

It is recommended to add a constraint using the following syntax:

 problem.addConstraint<C> (boost::make_shared<MyFunction> (...), ...);

where C is the constraint type and MyFunction the function type.

Unlike other classes which just copy functions, pointers are used here in order to allow sub-classes of constraints to be inserted in the problem. For instance, a twice derivable function can be inserted in a problem which expects a derivable function.

Template Parameters:
F function type
CLIST type list satisfying MPL's sequence concept
Examples:

problem-cc.cc.


Member Typedef Documentation

template<typename F, typename CLIST>
typedef boost::make_variant_over<typename detail::add_shared_ptr<CLIST>::type>::type roboptim::Problem< F, CLIST >::constraint_t

Constraint's type.

Generate a Boost.Variant of shared pointers tyle from the static constraints types list.

For instance, if one instantiates

  Problem<QuadraticFunction, vector<LinearFunction, QuadraticFunction> >

then this type will be set to:

 boost::variant<boost::shared_ptr<LinearFunction>,
                boost::shared_ptr<QuadraticFunction> >

The meta-algorithm which add shared pointers is implemented in detail::add_shared_pointer.

template<typename F, typename CLIST>
typedef std::vector<constraint_t> roboptim::Problem< F, CLIST >::constraints_t

Constraints are represented as a vector of constraints.

template<typename F, typename CLIST>
typedef F roboptim::Problem< F, CLIST >::function_t

Function type.

This has to be either Function or one of its sub-classes.

template<typename F, typename CLIST>
typedef Function::interval_t roboptim::Problem< F, CLIST >::interval_t
template<typename F, typename CLIST>
typedef Function::intervals_t roboptim::Problem< F, CLIST >::intervals_t
template<typename F, typename CLIST>
typedef std::vector<value_type> roboptim::Problem< F, CLIST >::scales_t

Scale vector.

template<typename F, typename CLIST>
typedef boost::optional<Function::vector_t> roboptim::Problem< F, CLIST >::startingPoint_t

Optional vector defines a starting point.

template<typename F, typename CLIST>
typedef function_t::value_type roboptim::Problem< F, CLIST >::value_type

Constructor & Destructor Documentation

template<typename F , typename CLIST >
roboptim::Problem< F, CLIST >::Problem ( const function_t f  )  throw () [inline, explicit]
Precondition:
costfunction $\mathbb{R}^n \rightarrow \mathbb{R}$

References roboptim::Function::makeInfiniteInterval().

template<typename F , typename CLIST >
roboptim::Problem< F, CLIST >::Problem ( const Problem< F, CLIST > &  pb  )  throw () [inline, explicit]

Copy constructor.

template<typename F, typename CLIST>
template<typename F_ , typename CLIST_ >
roboptim::Problem< F, CLIST >::Problem ( const Problem< F_, CLIST_ > &   )  throw () [inline, explicit]

Copy constructor (convert from another class of problem).

template<typename F , typename CLIST >
roboptim::Problem< F, CLIST >::~Problem (  )  throw () [inline]

Member Function Documentation

template<typename F , typename CLIST >
template<typename C >
void roboptim::Problem< F, CLIST >::addConstraint ( boost::shared_ptr< C >  constraint,
interval_t  interval,
value_type  scale = 1. 
) throw (std::runtime_error) [inline]

Add a constraint to the problem.

Parameters:
constraint the constraint that will be added
interval interval in which the constraint is satisfied
scale constraint scale
Template Parameters:
C constraint type (has to be in CLIST)
template<typename F , typename CLIST >
const Problem< F, CLIST >::intervals_t & roboptim::Problem< F, CLIST >::argumentBounds (  )  const throw () [inline]

Retrieve arguments bounds. Arguments bounds define in which interval each argument is valid.

Returns:
arguments bounds
template<typename F , typename CLIST >
Problem< F, CLIST >::intervals_t & roboptim::Problem< F, CLIST >::argumentBounds (  )  throw () [inline]

Retrieve arguments bounds. Arguments bounds define in which interval each argument is valid.

Returns:
arguments bounds
template<typename F , typename CLIST >
const Problem< F, CLIST >::scales_t & roboptim::Problem< F, CLIST >::argumentScales (  )  const throw () [inline]

Retrieve arguments scales. Arguments scales define which scale is applied for each argument.

Returns:
arguments scales
template<typename F , typename CLIST >
Problem< F, CLIST >::scales_t & roboptim::Problem< F, CLIST >::argumentScales (  )  throw () [inline]

Retrieve arguments scales. Arguments scales define which scale is applied for each argument.

Returns:
arguments scales
template<typename F , typename CLIST >
const Problem< F, CLIST >::intervals_t & roboptim::Problem< F, CLIST >::bounds (  )  const throw () [inline]

Retrieve constraints bounds.

Returns:
constraints bounds
template<typename F , typename CLIST >
const Problem< F, CLIST >::constraints_t & roboptim::Problem< F, CLIST >::constraints (  )  const throw () [inline]

Retrieve constraints.

Returns:
constraints
template<typename F , typename CLIST >
const Problem< F, CLIST >::function_t & roboptim::Problem< F, CLIST >::function (  )  const throw () [inline]

Retrieve cost function.

Returns:
cost function

Referenced by roboptim::Problem< F, CLIST >::startingPoint().

template<typename F , typename CLIST >
std::ostream & roboptim::Problem< F, CLIST >::print ( std::ostream &  o  )  const throw () [inline]

Display the problem on the specified output stream.

Parameters:
o output stream used for display
Returns:
output stream

References roboptim::decindent(), roboptim::iendl(), roboptim::incendl(), and roboptim::Function::infinity().

template<typename F , typename CLIST >
const Problem< F, CLIST >::scales_t & roboptim::Problem< F, CLIST >::scales (  )  const throw () [inline]

Retrieve constraints scales.

Returns:
constraints scales
template<typename F , typename CLIST >
const Problem< F, CLIST >::startingPoint_t & roboptim::Problem< F, CLIST >::startingPoint (  )  const throw () [inline]

Get the initial guess.

Returns:
reference on the initial guess

References roboptim::Problem< F, CLIST >::function().

template<typename F , typename CLIST >
Problem< F, CLIST >::startingPoint_t & roboptim::Problem< F, CLIST >::startingPoint (  )  throw () [inline]

Set the initial guess.

Returns:
reference on the initial guess

References roboptim::Problem< F, CLIST >::function().


Friends And Related Function Documentation

template<typename F, typename CLIST>
friend class Problem [friend]