Main MRPT website > C++ reference
MRPT logo
Classes | Public Types | Static Public Member Functions

mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM > Class Template Reference


Detailed Description

template<typename VECTORTYPE = mrpt::vector_double, class USERPARAM = VECTORTYPE>
class mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >

An implementation of the Levenberg-Marquardt algorithm for least-square minimization.

Refer to this page for more details on the algorithm and its usage.

Template Parameters:
NUMTYPEThe numeric type for all the operations (float, double, or long double)
USERPARAMThe type of the "y" input to the user supplied evaluation functor. Default type is a vector of NUMTYPE.

Definition at line 50 of file CLevenbergMarquardt.h.

#include <mrpt/math/CLevenbergMarquardt.h>

Inheritance diagram for mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >:
Inheritance graph
[legend]

List of all members.

Classes

struct  TResultInfo

Public Types

typedef VECTORTYPE::value_type NUMTYPE
typedef void(* TFunctor )(const VECTORTYPE &x, const USERPARAM &y, VECTORTYPE &out)
 The type of the function passed to execute.

Static Public Member Functions

static void execute (VECTORTYPE &out_optimal_x, const VECTORTYPE &x0, TFunctor functor, const VECTORTYPE &increments, const USERPARAM &userParam, TResultInfo &out_info, bool verbose=false, const size_t &maxIter=200, const NUMTYPE tau=1e-3, const NUMTYPE e1=1e-8, const NUMTYPE e2=1e-8, bool returnPath=true)
 Executes the LM-method, with derivatives estimated from "functor" Is a user-provided function which takes as input two vectors, in this order:

  • x: The parameters to be optimized.


Member Typedef Documentation

template<typename VECTORTYPE = mrpt::vector_double, class USERPARAM = VECTORTYPE>
typedef VECTORTYPE::value_type mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::NUMTYPE

Definition at line 53 of file CLevenbergMarquardt.h.

template<typename VECTORTYPE = mrpt::vector_double, class USERPARAM = VECTORTYPE>
typedef void(* mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TFunctor)(const VECTORTYPE &x, const USERPARAM &y, VECTORTYPE &out)

The type of the function passed to execute.

The user must supply a function which evaluates the error of a given point in the solution space.

Parameters:
xThe state point under examination.
yThe same object passed to "execute" as the parameter "userParam".
outThe vector of (non-squared) errors, of the average square root error, for the given "x". The functor code must set the size of this vector.

Definition at line 61 of file CLevenbergMarquardt.h.


Member Function Documentation

template<typename VECTORTYPE = mrpt::vector_double, class USERPARAM = VECTORTYPE>
static void mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::execute ( VECTORTYPE &  out_optimal_x,
const VECTORTYPE &  x0,
TFunctor  functor,
const VECTORTYPE &  increments,
const USERPARAM &  userParam,
TResultInfo out_info,
bool  verbose = false,
const size_t &  maxIter = 200,
const NUMTYPE  tau = 1e-3,
const NUMTYPE  e1 = 1e-8,
const NUMTYPE  e2 = 1e-8,
bool  returnPath = true 
) [inline, static]

Executes the LM-method, with derivatives estimated from "functor" Is a user-provided function which takes as input two vectors, in this order:

  • x: The parameters to be optimized.

  • userParam: The vector passed to the LM algorithm, unmodified. and must return the "error vector", or the error (not squared) in each measured dimension, so the sum of the square of that output is the overall square error.

Definition at line 86 of file CLevenbergMarquardt.h.

References ASSERT_, mrpt::math::estimateJacobian(), mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TResultInfo::final_sqr_err, mrpt::format(), mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TResultInfo::iterations_executed, mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TResultInfo::last_err_vector, MRPT_END, MRPT_START, mrpt::math::norm(), mrpt::math::norm_inf(), mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TResultInfo::path, pow(), mrpt::utils::CDebugOutputCapable::printf_debug(), and mrpt::utils::sprintf_vector().




Page generated by Doxygen 1.7.3 for MRPT 0.9.4 SVN:exported at Tue Jan 25 21:56:31 UTC 2011