![]() |
|
Performs non linear optimization over a non-linear function, using a variant of the Levenberg Marquardt algorithm. More...
#include <LevenbergMarquardt.h>
Classes | |
struct | Parameters |
Public Types | |
typedef FunctorType_ | FunctorType |
typedef FunctorType::QRSolver | QRSolver |
typedef FunctorType::JacobianType | JacobianType |
typedef JacobianType::Scalar | Scalar |
typedef JacobianType::RealScalar | RealScalar |
typedef QRSolver::StorageIndex | PermIndex |
typedef Matrix< Scalar, Dynamic, 1 > | FVectorType |
typedef PermutationMatrix< Dynamic, Dynamic, int > | PermutationType |
typedef DenseIndex | Index |
typedef Matrix< Scalar, Dynamic, 1 > | FVectorType |
typedef Matrix< Scalar, Dynamic, Dynamic > | JacobianType |
Static Public Member Functions | |
static LevenbergMarquardtSpace::Status | lmdif1 (FunctorType &functor, FVectorType &x, Index *nfev, const Scalar tol=std::sqrt(NumTraits< Scalar >::epsilon())) |
static LevenbergMarquardtSpace::Status | lmdif1 (FunctorType &functor, FVectorType &x, Index *nfev, const Scalar tol=sqrt_epsilon()) |
Private Member Functions | |
LevenbergMarquardt & | operator= (const LevenbergMarquardt &) |
Static Private Member Functions | |
static Scalar | sqrt_epsilon () |
Performs non linear optimization over a non-linear function, using a variant of the Levenberg Marquardt algorithm.
Check wikipedia for more information. http://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm
typedef FunctorType_ Eigen::LevenbergMarquardt< FunctorType_ >::FunctorType |
typedef Matrix<Scalar, Dynamic, 1> Eigen::LevenbergMarquardt< FunctorType_ >::FVectorType |
typedef Matrix<Scalar, Dynamic, 1> Eigen::LevenbergMarquardt< FunctorType_ >::FVectorType |
typedef DenseIndex Eigen::LevenbergMarquardt< FunctorType_ >::Index |
typedef FunctorType::JacobianType Eigen::LevenbergMarquardt< FunctorType_ >::JacobianType |
typedef Matrix<Scalar, Dynamic, Dynamic> Eigen::LevenbergMarquardt< FunctorType_ >::JacobianType |
typedef QRSolver::StorageIndex Eigen::LevenbergMarquardt< FunctorType_ >::PermIndex |
typedef PermutationMatrix<Dynamic, Dynamic, int> Eigen::LevenbergMarquardt< FunctorType_ >::PermutationType |
typedef FunctorType::QRSolver Eigen::LevenbergMarquardt< FunctorType_ >::QRSolver |
typedef JacobianType::RealScalar Eigen::LevenbergMarquardt< FunctorType_ >::RealScalar |
typedef JacobianType::Scalar Eigen::LevenbergMarquardt< FunctorType_ >::Scalar |
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_useExternalScaling, and Eigen::LevenbergMarquardt< FunctorType_ >::resetParameters().
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::fnorm, Eigen::LevenbergMarquardt< FunctorType_ >::gnorm, Eigen::LevenbergMarquardt< FunctorType_ >::iter, Eigen::LevenbergMarquardt< FunctorType_ >::nfev, Eigen::LevenbergMarquardt< FunctorType_ >::njev, and Eigen::LevenbergMarquardt< FunctorType_ >::useExternalScaling.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_diag.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_epsfcn.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_factor.
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::setFactor().
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_fnorm.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_ftol.
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::setFtol().
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_fvec.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_gnorm.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_gtol.
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::setGtol().
|
inline |
Reports whether the minimization was successful.
Success
if the minimization was successful, NumericalIssue
if a numerical problem arises during the minimization process, for example during the QR factorization NoConvergence
if the minimization did not converge after the maximum number of function evaluation allowed InvalidInput
if the input matrix is invalid References Eigen::LevenbergMarquardt< FunctorType_ >::m_info.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_iter.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_fjac.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_par.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::par.
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType_ >::lmder1 | ( | FVectorType & | x, |
const Scalar | tol = sqrt_epsilon() |
||
) |
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType, Scalar >::lmder1 | ( | FVectorType & | x, |
const Scalar | tol = std::sqrt(NumTraits<Scalar>::epsilon()) |
||
) |
References Eigen::LevenbergMarquardtSpace::ImproperInputParameters, m, n, and plotDoE::x.
Referenced by test_lmder(), and testLmder1().
|
static |
|
static |
References Eigen::LevenbergMarquardtSpace::ImproperInputParameters, info, m, Eigen::LevenbergMarquardt< FunctorType_ >::minimize(), n, Eigen::LevenbergMarquardt< FunctorType_ >::nfev, Eigen::LevenbergMarquardt< FunctorType_ >::setFtol(), Eigen::LevenbergMarquardt< FunctorType_ >::setMaxfev(), Eigen::LevenbergMarquardt< FunctorType_ >::setXtol(), and plotDoE::x.
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType, Scalar >::lmstr1 | ( | FVectorType & | x, |
const Scalar | tol = sqrt_epsilon() |
||
) |
References Eigen::LevenbergMarquardtSpace::ImproperInputParameters, m, n, and plotDoE::x.
Referenced by testLmstr1().
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_rfactor.
Referenced by testLmder(), and testLmdif().
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_maxfev.
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::setMaxfev().
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType, Scalar >::minimize | ( | FVectorType & | x | ) |
References Eigen::LevenbergMarquardtSpace::ImproperInputParameters, Eigen::LevenbergMarquardtSpace::Running, and plotDoE::x.
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::lmdif1(), test_minimizeLM(), testLmder(), testLmdif(), testNistBennett5(), testNistBoxBOD(), testNistChwirut2(), testNistEckerle4(), testNistHahn1(), testNistLanczos1(), testNistMGH09(), testNistMGH10(), testNistMGH17(), testNistMisra1a(), testNistMisra1d(), testNistRat42(), testNistRat43(), and testNistThurber().
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType_ >::minimize | ( | FVectorType & | x | ) |
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType, Scalar >::minimizeInit | ( | FVectorType & | x | ) |
References eigen_assert, Eigen::LevenbergMarquardtSpace::ImproperInputParameters, Eigen::InvalidInput, j, m, n, Eigen::LevenbergMarquardtSpace::NotStarted, Eigen::LevenbergMarquardtSpace::UserAsked, and plotDoE::x.
Referenced by test_minimizeSteps(), and test_sparseLM_T().
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType_ >::minimizeInit | ( | FVectorType & | x | ) |
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType, Scalar >::minimizeOneStep | ( | FVectorType & | x | ) |
References abs(), Eigen::numext::abs2(), Eigen::LevenbergMarquardtSpace::CosinusTooSmall, e(), eigen_assert, Eigen::LevenbergMarquardtSpace::FtolTooSmall, Eigen::LevenbergMarquardtSpace::GtolTooSmall, Eigen::LevenbergMarquardtSpace::ImproperInputParameters, j, Eigen::internal::lmpar2(), max, min, n, Eigen::NoConvergence, Eigen::NumericalIssue, Eigen::LevenbergMarquardtSpace::RelativeErrorAndReductionTooSmall, Eigen::LevenbergMarquardtSpace::RelativeErrorTooSmall, Eigen::LevenbergMarquardtSpace::RelativeReductionTooSmall, Eigen::LevenbergMarquardtSpace::Running, sqrt(), Eigen::Success, Eigen::LevenbergMarquardtSpace::TooManyFunctionEvaluation, Eigen::LevenbergMarquardtSpace::UserAsked, plotDoE::x, and Eigen::LevenbergMarquardtSpace::XtolTooSmall.
Referenced by test_minimizeSteps().
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType_ >::minimizeOneStep | ( | FVectorType & | x | ) |
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType, Scalar >::minimizeOptimumStorage | ( | FVectorType & | x | ) |
References Eigen::LevenbergMarquardtSpace::ImproperInputParameters, Eigen::LevenbergMarquardtSpace::Running, and plotDoE::x.
Referenced by testLmstr().
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType, Scalar >::minimizeOptimumStorageInit | ( | FVectorType & | x | ) |
References diag, eigen_assert, Eigen::LevenbergMarquardtSpace::ImproperInputParameters, j, m, n, Eigen::LevenbergMarquardtSpace::NotStarted, calibrate::par, Eigen::LevenbergMarquardtSpace::UserAsked, and plotDoE::x.
LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt< FunctorType, Scalar >::minimizeOptimumStorageOneStep | ( | FVectorType & | x | ) |
References abs(), Eigen::numext::abs2(), Eigen::ColPivHouseholderQR< MatrixType_, PermutationIndex_ >::colsPermutation(), Eigen::LevenbergMarquardtSpace::CosinusTooSmall, MultiOpt::delta, diag, e(), eigen_assert, Eigen::LevenbergMarquardtSpace::FtolTooSmall, Eigen::LevenbergMarquardtSpace::GtolTooSmall, Eigen::ColPivHouseholderQR< MatrixType_, PermutationIndex_ >::hCoeffs(), i, j, m, Eigen::ColPivHouseholderQR< MatrixType_, PermutationIndex_ >::matrixQR(), max, min, n, calibrate::par, Eigen::LevenbergMarquardtSpace::RelativeErrorAndReductionTooSmall, Eigen::LevenbergMarquardtSpace::RelativeErrorTooSmall, Eigen::LevenbergMarquardtSpace::RelativeReductionTooSmall, Eigen::LevenbergMarquardtSpace::Running, sqrt(), Eigen::LevenbergMarquardtSpace::TooManyFunctionEvaluation, Eigen::LevenbergMarquardtSpace::UserAsked, plotDoE::x, and Eigen::LevenbergMarquardtSpace::XtolTooSmall.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_nfev.
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_njev.
|
private |
|
inline |
the permutation used in the QR factorization
References Eigen::LevenbergMarquardt< FunctorType_ >::m_permutation.
|
inline |
Sets the default parameters
References Eigen::LevenbergMarquardt< FunctorType_ >::m_epsfcn, Eigen::LevenbergMarquardt< FunctorType_ >::m_factor, Eigen::LevenbergMarquardt< FunctorType_ >::m_ftol, Eigen::LevenbergMarquardt< FunctorType_ >::m_gtol, Eigen::LevenbergMarquardt< FunctorType_ >::m_maxfev, Eigen::LevenbergMarquardt< FunctorType_ >::m_xtol, and sqrt().
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::LevenbergMarquardt(), testNistBennett5(), testNistBoxBOD(), testNistChwirut2(), testNistMGH09(), testNistMGH17(), testNistRat43(), and testNistThurber().
|
inline |
|
inline |
|
inline |
Use an external Scaling. If set to true, pass a nonzero diagonal to diag()
References Eigen::LevenbergMarquardt< FunctorType_ >::m_useExternalScaling, and Eigen::value.
|
inline |
Sets the step bound for the diagonal shift
References Eigen::LevenbergMarquardt< FunctorType_ >::factor(), and Eigen::LevenbergMarquardt< FunctorType_ >::m_factor.
Referenced by testNistBoxBOD().
|
inline |
Sets the tolerance for the norm of the vector function
References Eigen::LevenbergMarquardt< FunctorType_ >::ftol(), and Eigen::LevenbergMarquardt< FunctorType_ >::m_ftol.
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::lmdif1(), testNistBoxBOD(), testNistChwirut2(), testNistMGH17(), testNistRat43(), and testNistThurber().
|
inline |
Sets the tolerance for the norm of the gradient of the error vector
References Eigen::LevenbergMarquardt< FunctorType_ >::gtol(), and Eigen::LevenbergMarquardt< FunctorType_ >::m_gtol.
|
inline |
Sets the maximum number of function evaluation
References Eigen::LevenbergMarquardt< FunctorType_ >::m_maxfev, and Eigen::LevenbergMarquardt< FunctorType_ >::maxfev().
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::lmdif1(), testNistBennett5(), testNistMGH09(), and testNistMGH17().
|
inline |
Sets the tolerance for the norm of the solution vector
References Eigen::LevenbergMarquardt< FunctorType_ >::m_xtol, and Eigen::LevenbergMarquardt< FunctorType_ >::xtol().
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::lmdif1(), testNistBoxBOD(), testNistChwirut2(), testNistMGH17(), testNistRat43(), and testNistThurber().
|
inlinestaticprivate |
References sqrt().
|
inline |
References Eigen::LevenbergMarquardt< FunctorType_ >::m_xtol.
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::setXtol().
|
private |
|
private |
FVectorType Eigen::LevenbergMarquardt< FunctorType_ >::diag |
|
private |
JacobianType Eigen::LevenbergMarquardt< FunctorType_ >::fjac |
Referenced by testLmder(), and testLmdif().
Scalar Eigen::LevenbergMarquardt< FunctorType_ >::fnorm |
|
private |
|
private |
FVectorType Eigen::LevenbergMarquardt< FunctorType_ >::fvec |
Referenced by testLmder(), testLmder1(), testLmdif(), testLmstr(), testLmstr1(), testNistBennett5(), testNistBoxBOD(), testNistChwirut2(), testNistEckerle4(), testNistHahn1(), testNistLanczos1(), testNistMGH09(), testNistMGH10(), testNistMGH17(), testNistMisra1a(), testNistMisra1d(), testNistRat42(), testNistRat43(), and testNistThurber().
Scalar Eigen::LevenbergMarquardt< FunctorType_ >::gnorm |
Index Eigen::LevenbergMarquardt< FunctorType_ >::iter |
|
private |
|
private |
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::diag().
|
private |
|
private |
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::jacobian().
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::fnorm().
|
private |
|
private |
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::fvec().
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::gnorm().
|
private |
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::info().
|
private |
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::iterations().
|
private |
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::nfev().
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::njev().
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::lm_param().
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::permutation().
|
private |
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::matrixR().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Index Eigen::LevenbergMarquardt< FunctorType_ >::nfev |
Index Eigen::LevenbergMarquardt< FunctorType_ >::njev |
|
private |
Referenced by Eigen::LevenbergMarquardt< FunctorType_ >::lm_param().
Parameters Eigen::LevenbergMarquardt< FunctorType_ >::parameters |
PermutationMatrix<Dynamic, Dynamic> Eigen::LevenbergMarquardt< FunctorType_ >::permutation |
Referenced by testLmder(), and testLmdif().
|
private |
|
private |
FVectorType Eigen::LevenbergMarquardt< FunctorType_ >::qtf |
|
private |
|
private |
|
private |
|
private |
|
private |
bool Eigen::LevenbergMarquardt< FunctorType_ >::useExternalScaling |
|
private |
|
private |
|
private |
|
private |
|
private |