Published January 7, 2016
| Version v3.2
Software
Open
roboptim-core: Release 3.2
Creators
- 1. CNRS-LIRMM
- 2. CNRS/AIST JRL
- 3. CNRS-LAAS
- 4. Wandercraft
Description
Summary
- API breaking change: Problem and Solver are now only templated on the matrix type. See the migration guide in the next section. Impact on end-user code is limited, the biggest changes happen in plugin codes.
- latex/dvips are no longer required for building the documentation. A minimal MathJax will be bundled instead. This explains the larger tarballs.
- Minor fixes:
- Fix NumericQuadraticFunction hessian,
- Fix some alignment issues for 32-bit systems,
- Fix updateSparseBlock helper function,
- Fix CachedFunction.
- Clarify usage of Lagrange multipliers vector λ in Result structure.
- Add new SolverCallback class to be used with the Multiplexer.
- Improve printing for several functions.
- Add jacobian(x) and constraintsOutputSize() methods to Problem.
- Problem and Solver were templated on the cost function and constraints types, for instance:
// Specify the solver type that will be used
typedef Solver<DifferentiableFunction, boost::mpl::vector<LinearFunction, DifferentiableFunction> > solver_t;
// Deduce the problem type, which is Problem<DifferentiableFunction, boost::mpl::vector<LinearFunction, DifferentiableFunction> >
typedef solver_t::problem_t problem_t;
Now, this is handled at runtime, and all that remains is the matrix type used:
// Specify the solver type that will be used
typedef Solver<EigenMatrixDense> solver_t;
// Deduce the problem type, which is Problem<EigenMatrixDense>
typedef solver_t::problem_t problem_t;
- The following Problem constructor is now deprecated:
// Instantiate the cost function
CostFunction cost (param);
// Create problem
solver_t::problem_t pb (cost);
Instead, use the boost::shared_ptr version:
// Instantiate the cost function
boost::shared_ptr<CostFunction> f (new CostFunction (param));
// Create problem
solver_t::problem_t pb (cost);
- Flags are now used to identify a function's "true" type at runtime. For instance:
// f is a (shared) pointer to a function, and we want to cast it to a LinearFunction
// if that is possible
LinearFunction* g = 0;
if (f->asType<LinearFunction> ())
{
g = f->castInto<LinearFunction> ();
}
The implementation thus relies on a cheap static_cast rather than an expensive dynamic_cast. Note that castInto accepts a boolean parameter to enable the asType check internally, and throw if the cast is invalid.
Files
roboptim-core-v3.2.zip
Files
(441.9 kB)
Name | Size | Download all |
---|---|---|
md5:5ce66070f4bdd3882538ebdda60d0435
|
441.9 kB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/roboptim/roboptim-core/tree/v3.2 (URL)