LevenbergMarquardt/LevenbergMarquardt.h
Go to the documentation of this file.
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2009 Thomas Capricelli <orzel@freehackers.org>
5 // Copyright (C) 2012 Desire Nuentsa <desire.nuentsa_wakam@inria.fr>
6 //
7 // The algorithm of this class initially comes from MINPACK whose original authors are:
8 // Copyright Jorge More - Argonne National Laboratory
9 // Copyright Burt Garbow - Argonne National Laboratory
10 // Copyright Ken Hillstrom - Argonne National Laboratory
11 //
12 // This Source Code Form is subject to the terms of the Minpack license
13 // (a BSD-like license) described in the campaigned CopyrightMINPACK.txt file.
14 //
15 // This Source Code Form is subject to the terms of the Mozilla
16 // Public License v. 2.0. If a copy of the MPL was not distributed
17 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
18 
19 #ifndef EIGEN_LEVENBERGMARQUARDT_H
20 #define EIGEN_LEVENBERGMARQUARDT_H
21 
22 
23 namespace Eigen {
24 namespace LevenbergMarquardtSpace {
25  enum Status {
26  NotStarted = -2,
27  Running = -1,
38  };
39 }
40 
41 template <typename _Scalar, int NX=Dynamic, int NY=Dynamic>
43 {
44  typedef _Scalar Scalar;
45  enum {
48  };
53  const int m_inputs, m_values;
54 
57 
58  int inputs() const { return m_inputs; }
59  int values() const { return m_values; }
60 
61  //int operator()(const InputType &x, ValueType& fvec) { }
62  // should be defined in derived classes
63 
64  //int df(const InputType &x, JacobianType& fjac) { }
65  // should be defined in derived classes
66 };
67 
68 template <typename _Scalar, typename _Index>
70 {
71  typedef _Scalar Scalar;
72  typedef _Index Index;
77  enum {
80  };
81 
83 
84  int inputs() const { return m_inputs; }
85  int values() const { return m_values; }
86 
87  const int m_inputs, m_values;
88  //int operator()(const InputType &x, ValueType& fvec) { }
89  // to be defined in the functor
90 
91  //int df(const InputType &x, JacobianType& fjac) { }
92  // to be defined in the functor if no automatic differentiation
93 
94 };
95 namespace internal {
96 template <typename QRSolver, typename VectorType>
97 void lmpar2(const QRSolver &qr, const VectorType &diag, const VectorType &qtb,
98  typename VectorType::Scalar m_delta, typename VectorType::Scalar &par,
99  VectorType &x);
100  }
109 template<typename _FunctorType>
111 {
112  public:
113  typedef _FunctorType FunctorType;
114  typedef typename FunctorType::QRSolver QRSolver;
115  typedef typename FunctorType::JacobianType JacobianType;
116  typedef typename JacobianType::Scalar Scalar;
118  typedef typename QRSolver::StorageIndex PermIndex;
121  public:
123  : m_functor(functor),m_nfev(0),m_njev(0),m_fnorm(0.0),m_gnorm(0),
125  {
126  resetParameters();
127  m_useExternalScaling=false;
128  }
129 
134  FVectorType &x,
136  );
139  FVectorType &x,
140  Index *nfev,
142  );
143 
146  {
147  using std::sqrt;
148 
149  m_factor = 100.;
150  m_maxfev = 400;
153  m_gtol = 0. ;
154  m_epsfcn = 0. ;
155  }
156 
159 
162 
165 
168 
170  void setEpsilon (RealScalar epsfcn) { m_epsfcn = epsfcn; }
171 
174 
177 
179  RealScalar xtol() const {return m_xtol; }
180 
182  RealScalar ftol() const {return m_ftol; }
183 
185  RealScalar gtol() const {return m_gtol; }
186 
188  RealScalar factor() const {return m_factor; }
189 
191  RealScalar epsilon() const {return m_epsfcn; }
192 
194  Index maxfev() const {return m_maxfev; }
195 
197  FVectorType& diag() {return m_diag; }
198 
200  Index iterations() { return m_iter; }
201 
203  Index nfev() { return m_nfev; }
204 
206  Index njev() { return m_njev; }
207 
209  RealScalar fnorm() {return m_fnorm; }
210 
212  RealScalar gnorm() {return m_gnorm; }
213 
215  RealScalar lm_param(void) { return m_par; }
216 
219  FVectorType& fvec() {return m_fvec; }
220 
224 
229 
233 
244  {
245 
246  return m_info;
247  }
248  private:
250  JacobianType m_rfactor; // The triangular matrix R from the QR of the jacobian matrix m_fjac
257  RealScalar m_fnorm; // Norm of the current vector function
258  RealScalar m_gnorm; //Norm of the gradient of the error
260  Index m_maxfev; // Maximum number of function evaluation
261  RealScalar m_ftol; //Tolerance in the norm of the vector function
263  RealScalar m_gtol; //tolerance of the norm of the error gradient
265  Index m_iter; // Number of iterations performed
269  FVectorType m_wa1, m_wa2, m_wa3, m_wa4; //Temporary vectors
271  bool m_isInitialized; // Check whether the minimization step has been called
273 };
274 
275 template<typename FunctorType>
278 {
279  LevenbergMarquardtSpace::Status status = minimizeInit(x);
281  m_isInitialized = true;
282  return status;
283  }
284  do {
285 // std::cout << " uv " << x.transpose() << "\n";
286  status = minimizeOneStep(x);
287  } while (status==LevenbergMarquardtSpace::Running);
288  m_isInitialized = true;
289  return status;
290 }
291 
292 template<typename FunctorType>
295 {
296  n = x.size();
297  m = m_functor.values();
298 
299  m_wa1.resize(n); m_wa2.resize(n); m_wa3.resize(n);
300  m_wa4.resize(m);
301  m_fvec.resize(m);
302  //FIXME Sparse Case : Allocate space for the jacobian
303  m_fjac.resize(m, n);
304 // m_fjac.reserve(VectorXi::Constant(n,5)); // FIXME Find a better alternative
305  if (!m_useExternalScaling)
306  m_diag.resize(n);
307  eigen_assert( (!m_useExternalScaling || m_diag.size()==n) && "When m_useExternalScaling is set, the caller must provide a valid 'm_diag'");
308  m_qtf.resize(n);
309 
310  /* Function Body */
311  m_nfev = 0;
312  m_njev = 0;
313 
314  /* check the input parameters for errors. */
315  if (n <= 0 || m < n || m_ftol < 0. || m_xtol < 0. || m_gtol < 0. || m_maxfev <= 0 || m_factor <= 0.){
316  m_info = InvalidInput;
318  }
319 
320  if (m_useExternalScaling)
321  for (Index j = 0; j < n; ++j)
322  if (m_diag[j] <= 0.)
323  {
324  m_info = InvalidInput;
326  }
327 
328  /* evaluate the function at the starting point */
329  /* and calculate its norm. */
330  m_nfev = 1;
331  if ( m_functor(x, m_fvec) < 0)
333  m_fnorm = m_fvec.stableNorm();
334 
335  /* initialize levenberg-marquardt parameter and iteration counter. */
336  m_par = 0.;
337  m_iter = 1;
338 
340 }
341 
342 template<typename FunctorType>
345  FVectorType &x,
346  const Scalar tol
347  )
348 {
349  n = x.size();
350  m = m_functor.values();
351 
352  /* check the input parameters for errors. */
353  if (n <= 0 || m < n || tol < 0.)
355 
356  resetParameters();
357  m_ftol = tol;
358  m_xtol = tol;
359  m_maxfev = 100*(n+1);
360 
361  return minimize(x);
362 }
363 
364 
365 template<typename FunctorType>
368  FunctorType &functor,
369  FVectorType &x,
370  Index *nfev,
371  const Scalar tol
372  )
373 {
374  Index n = x.size();
375  Index m = functor.values();
376 
377  /* check the input parameters for errors. */
378  if (n <= 0 || m < n || tol < 0.)
380 
381  NumericalDiff<FunctorType> numDiff(functor);
382  // embedded LevenbergMarquardt
384  lm.setFtol(tol);
385  lm.setXtol(tol);
386  lm.setMaxfev(200*(n+1));
387 
389  if (nfev)
390  * nfev = lm.nfev();
391  return info;
392 }
393 
394 } // end namespace Eigen
395 
396 #endif // EIGEN_LEVENBERGMARQUARDT_H
Eigen::LevenbergMarquardt::m_delta
RealScalar m_delta
Definition: LevenbergMarquardt/LevenbergMarquardt.h:266
Eigen::LevenbergMarquardt::functor
FunctorType & functor
Definition: NonLinearOptimization/LevenbergMarquardt.h:119
Eigen::LevenbergMarquardt::matrixR
JacobianType & matrixR()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:228
Eigen::LevenbergMarquardt::m_ftol
RealScalar m_ftol
Definition: LevenbergMarquardt/LevenbergMarquardt.h:261
Eigen::DenseFunctor::m_values
const int m_values
Definition: LevenbergMarquardt/LevenbergMarquardt.h:53
Eigen::LevenbergMarquardt::Index
DenseIndex Index
Definition: NonLinearOptimization/LevenbergMarquardt.h:58
Eigen::LevenbergMarquardt::m_fjac
JacobianType m_fjac
Definition: LevenbergMarquardt/LevenbergMarquardt.h:249
Eigen::LevenbergMarquardt::m_rfactor
JacobianType m_rfactor
Definition: LevenbergMarquardt/LevenbergMarquardt.h:250
Eigen::LevenbergMarquardt::m_xtol
RealScalar m_xtol
Definition: LevenbergMarquardt/LevenbergMarquardt.h:262
Eigen::LevenbergMarquardt::m_maxfev
Index m_maxfev
Definition: LevenbergMarquardt/LevenbergMarquardt.h:260
Eigen
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
Eigen::LevenbergMarquardt::JacobianType
FunctorType::JacobianType JacobianType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:115
Eigen::SparseMatrix
A versatible sparse matrix representation.
Definition: SparseMatrix.h:96
Eigen::DenseFunctor::DenseFunctor
DenseFunctor(int inputs, int values)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:56
Eigen::LevenbergMarquardt::m_qtf
FVectorType m_qtf
Definition: LevenbergMarquardt/LevenbergMarquardt.h:252
Eigen::SparseFunctor::InputsAtCompileTime
@ InputsAtCompileTime
Definition: LevenbergMarquardt/LevenbergMarquardt.h:78
Eigen::LevenbergMarquardt::nfev
Index nfev()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:203
Eigen::DenseFunctor::Scalar
_Scalar Scalar
Definition: LevenbergMarquardt/LevenbergMarquardt.h:44
Eigen::LevenbergMarquardt::Scalar
JacobianType::Scalar Scalar
Definition: LevenbergMarquardt/LevenbergMarquardt.h:116
Eigen::LevenbergMarquardt::m
Index m
Definition: LevenbergMarquardt/LevenbergMarquardt.h:254
Eigen::LevenbergMarquardt::setExternalScaling
void setExternalScaling(bool value)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:176
eigen_assert
#define eigen_assert(x)
Definition: Macros.h:1037
gtsam::diag
Matrix diag(const std::vector< Matrix > &Hs)
Definition: Matrix.cpp:206
Eigen::SparseFunctor::Scalar
_Scalar Scalar
Definition: LevenbergMarquardt/LevenbergMarquardt.h:71
x
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Definition: gnuplot_common_settings.hh:12
Eigen::LevenbergMarquardt::factor
RealScalar factor() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:188
Eigen::LevenbergMarquardt::epsilon
RealScalar epsilon() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:191
Eigen::internal::lmpar2
void lmpar2(const QRSolver &qr, const VectorType &diag, const VectorType &qtb, typename VectorType::Scalar m_delta, typename VectorType::Scalar &par, VectorType &x)
Definition: LMpar.h:20
Eigen::LevenbergMarquardt::xtol
RealScalar xtol() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:179
Eigen::LevenbergMarquardt::m_useExternalScaling
bool m_useExternalScaling
Definition: LevenbergMarquardt/LevenbergMarquardt.h:267
Eigen::SparseFunctor::values
int values() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:85
Eigen::LevenbergMarquardt::m_njev
Index m_njev
Definition: LevenbergMarquardt/LevenbergMarquardt.h:256
Eigen::LevenbergMarquardt
Performs non linear optimization over a non-linear function, using a variant of the Levenberg Marquar...
Definition: LevenbergMarquardt/LevenbergMarquardt.h:110
Eigen::LevenbergMarquardt::FVectorType
Matrix< Scalar, Dynamic, 1 > FVectorType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:119
Eigen::LevenbergMarquardtSpace::RelativeErrorTooSmall
@ RelativeErrorTooSmall
Definition: LevenbergMarquardt/LevenbergMarquardt.h:30
Eigen::LevenbergMarquardt::ftol
RealScalar ftol() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:182
Eigen::SparseFunctor::m_values
const int m_values
Definition: LevenbergMarquardt/LevenbergMarquardt.h:87
n
int n
Definition: BiCGSTAB_simple.cpp:1
Eigen::LevenbergMarquardt::jacobian
JacobianType & jacobian()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:223
Eigen::LevenbergMarquardt::m_info
ComputationInfo m_info
Definition: LevenbergMarquardt/LevenbergMarquardt.h:272
Eigen::DenseFunctor::m_inputs
const int m_inputs
Definition: LevenbergMarquardt/LevenbergMarquardt.h:53
Eigen::LevenbergMarquardt::setEpsilon
void setEpsilon(RealScalar epsfcn)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:170
Eigen::LevenbergMarquardt::resetParameters
void resetParameters()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:145
Eigen::SparseFunctor::SparseFunctor
SparseFunctor(int inputs, int values)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:82
Eigen::SparseFunctor::inputs
int inputs() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:84
Eigen::LevenbergMarquardtSpace::UserAsked
@ UserAsked
Definition: LevenbergMarquardt/LevenbergMarquardt.h:37
Eigen::LevenbergMarquardt::fnorm
RealScalar fnorm()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:209
j
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2
Eigen::LevenbergMarquardt::njev
Index njev()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:206
Eigen::DenseFunctor::ValueType
Matrix< Scalar, ValuesAtCompileTime, 1 > ValueType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:50
Eigen::LevenbergMarquardtSpace::Status
Status
Definition: LevenbergMarquardt/LevenbergMarquardt.h:25
Eigen::LevenbergMarquardtSpace::RelativeErrorAndReductionTooSmall
@ RelativeErrorAndReductionTooSmall
Definition: LevenbergMarquardt/LevenbergMarquardt.h:31
Eigen::LevenbergMarquardt::minimizeInit
LevenbergMarquardtSpace::Status minimizeInit(FVectorType &x)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:294
Eigen::Dynamic
const int Dynamic
Definition: Constants.h:22
Eigen::LevenbergMarquardt::RealScalar
JacobianType::RealScalar RealScalar
Definition: LevenbergMarquardt/LevenbergMarquardt.h:117
Eigen::LevenbergMarquardtSpace::GtolTooSmall
@ GtolTooSmall
Definition: LevenbergMarquardt/LevenbergMarquardt.h:36
Eigen::SparseFunctor::m_inputs
const int m_inputs
Definition: LevenbergMarquardt/LevenbergMarquardt.h:87
Eigen::DenseFunctor::DenseFunctor
DenseFunctor()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:55
Eigen::NumericalDiff
Definition: NumericalDiff.h:36
Eigen::LevenbergMarquardt::setFtol
void setFtol(RealScalar ftol)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:161
Eigen::LevenbergMarquardtSpace::ImproperInputParameters
@ ImproperInputParameters
Definition: LevenbergMarquardt/LevenbergMarquardt.h:28
Eigen::LevenbergMarquardt::m_par
RealScalar m_par
Definition: LevenbergMarquardt/LevenbergMarquardt.h:270
Eigen::LevenbergMarquardt::lmder1
LevenbergMarquardtSpace::Status lmder1(FVectorType &x, const Scalar tol=std::sqrt(NumTraits< Scalar >::epsilon()))
Definition: LevenbergMarquardt/LevenbergMarquardt.h:344
info
else if n * info
Definition: 3rdparty/Eigen/lapack/cholesky.cpp:18
Eigen::DenseFunctor::inputs
int inputs() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:58
Eigen::LevenbergMarquardt::n
Index n
Definition: LevenbergMarquardt/LevenbergMarquardt.h:253
Eigen::LevenbergMarquardt::diag
FVectorType & diag()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:197
Eigen::DenseFunctor::JacobianType
Matrix< Scalar, ValuesAtCompileTime, InputsAtCompileTime > JacobianType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:51
Eigen::LevenbergMarquardt::info
ComputationInfo info() const
Reports whether the minimization was successful.
Definition: LevenbergMarquardt/LevenbergMarquardt.h:243
m
Matrix3f m
Definition: AngleAxis_mimic_euler.cpp:1
Eigen::ColPivHouseholderQR
Householder rank-revealing QR decomposition of a matrix with column-pivoting.
Definition: ForwardDeclarations.h:274
Eigen::DenseFunctor::InputsAtCompileTime
@ InputsAtCompileTime
Definition: LevenbergMarquardt/LevenbergMarquardt.h:46
Eigen::LevenbergMarquardt::m_iter
Index m_iter
Definition: LevenbergMarquardt/LevenbergMarquardt.h:265
Eigen::LevenbergMarquardt::maxfev
Index maxfev() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:194
anyset::size
size_t size() const
Definition: pytypes.h:2173
Eigen::LevenbergMarquardt::lmdif1
static LevenbergMarquardtSpace::Status lmdif1(FunctorType &functor, FVectorType &x, Index *nfev, const Scalar tol=std::sqrt(NumTraits< Scalar >::epsilon()))
Definition: LevenbergMarquardt/LevenbergMarquardt.h:367
Eigen::DenseFunctor::QRSolver
ColPivHouseholderQR< JacobianType > QRSolver
Definition: LevenbergMarquardt/LevenbergMarquardt.h:52
Eigen::DenseFunctor::values
int values() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:59
Eigen::LevenbergMarquardt::minimizeOneStep
LevenbergMarquardtSpace::Status minimizeOneStep(FVectorType &x)
Definition: LMonestep.h:21
RealScalar
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:47
Eigen::LevenbergMarquardt::m_wa1
FVectorType m_wa1
Definition: LevenbergMarquardt/LevenbergMarquardt.h:269
Eigen::LevenbergMarquardt::iterations
Index iterations()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:200
Eigen::DenseFunctor::InputType
Matrix< Scalar, InputsAtCompileTime, 1 > InputType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:49
Eigen::LevenbergMarquardt::m_wa4
FVectorType m_wa4
Definition: LevenbergMarquardt/LevenbergMarquardt.h:269
Eigen::LevenbergMarquardt::setGtol
void setGtol(RealScalar gtol)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:164
Eigen::LevenbergMarquardt::m_fvec
FVectorType m_fvec
Definition: LevenbergMarquardt/LevenbergMarquardt.h:252
Eigen::LevenbergMarquardtSpace::Running
@ Running
Definition: LevenbergMarquardt/LevenbergMarquardt.h:27
Eigen::LevenbergMarquardt::m_isInitialized
bool m_isInitialized
Definition: LevenbergMarquardt/LevenbergMarquardt.h:271
Eigen::LevenbergMarquardt::m_epsfcn
RealScalar m_epsfcn
Definition: LevenbergMarquardt/LevenbergMarquardt.h:264
qr
HouseholderQR< MatrixXf > qr(A)
Eigen::SparseFunctor::Index
_Index Index
Definition: LevenbergMarquardt/LevenbergMarquardt.h:72
Eigen::LevenbergMarquardt::setFactor
void setFactor(RealScalar factor)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:167
Eigen::LevenbergMarquardtSpace::XtolTooSmall
@ XtolTooSmall
Definition: LevenbergMarquardt/LevenbergMarquardt.h:35
Eigen::LevenbergMarquardt::PermutationType
PermutationMatrix< Dynamic, Dynamic, int > PermutationType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:120
Eigen::LevenbergMarquardt::m_gnorm
RealScalar m_gnorm
Definition: LevenbergMarquardt/LevenbergMarquardt.h:258
Eigen::LevenbergMarquardtSpace::TooManyFunctionEvaluation
@ TooManyFunctionEvaluation
Definition: LevenbergMarquardt/LevenbergMarquardt.h:33
Eigen::SparseFunctor::ValueType
Matrix< Scalar, Dynamic, 1 > ValueType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:74
Eigen::PermutationMatrix< Dynamic, Dynamic, int >
Eigen::LevenbergMarquardtSpace::RelativeReductionTooSmall
@ RelativeReductionTooSmall
Definition: LevenbergMarquardt/LevenbergMarquardt.h:29
Eigen::LevenbergMarquardt::m_factor
RealScalar m_factor
Definition: LevenbergMarquardt/LevenbergMarquardt.h:259
Eigen::LevenbergMarquardt::setXtol
void setXtol(RealScalar xtol)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:158
Eigen::LevenbergMarquardt::m_fnorm
RealScalar m_fnorm
Definition: LevenbergMarquardt/LevenbergMarquardt.h:257
Eigen::LevenbergMarquardt::lm_param
RealScalar lm_param(void)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:215
Eigen::LevenbergMarquardt::permutation
PermutationType permutation()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:232
Eigen::LevenbergMarquardtSpace::CosinusTooSmall
@ CosinusTooSmall
Definition: LevenbergMarquardt/LevenbergMarquardt.h:32
Eigen::LevenbergMarquardt::m_nfev
Index m_nfev
Definition: LevenbergMarquardt/LevenbergMarquardt.h:255
Eigen::LevenbergMarquardt::fvec
FVectorType & fvec()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:219
gtsam::tol
const G double tol
Definition: Group.h:79
Eigen::LevenbergMarquardtSpace::FtolTooSmall
@ FtolTooSmall
Definition: LevenbergMarquardt/LevenbergMarquardt.h:34
Eigen::internal::no_assignment_operator
Definition: XprHelper.h:109
Eigen::LevenbergMarquardt::gtol
RealScalar gtol() const
Definition: LevenbergMarquardt/LevenbergMarquardt.h:185
Eigen::Matrix
The matrix class, also used for vectors and row-vectors.
Definition: 3rdparty/Eigen/Eigen/src/Core/Matrix.h:178
Eigen::LevenbergMarquardt::m_permutation
PermutationType m_permutation
Definition: LevenbergMarquardt/LevenbergMarquardt.h:268
Eigen::LevenbergMarquardt::QRSolver
FunctorType::QRSolver QRSolver
Definition: LevenbergMarquardt/LevenbergMarquardt.h:114
Eigen::InvalidInput
@ InvalidInput
Definition: Constants.h:449
internal
Definition: BandTriangularSolver.h:13
VectorType
Definition: FFTW.cpp:65
Eigen::LevenbergMarquardt::m_wa2
FVectorType m_wa2
Definition: LevenbergMarquardt/LevenbergMarquardt.h:269
Eigen::LevenbergMarquardt::minimize
LevenbergMarquardtSpace::Status minimize(FVectorType &x)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:277
Eigen::LevenbergMarquardtSpace::NotStarted
@ NotStarted
Definition: LevenbergMarquardt/LevenbergMarquardt.h:26
Eigen::ComputationInfo
ComputationInfo
Definition: Constants.h:440
Eigen::LevenbergMarquardt::m_gtol
RealScalar m_gtol
Definition: LevenbergMarquardt/LevenbergMarquardt.h:263
Eigen::LevenbergMarquardt::gnorm
RealScalar gnorm()
Definition: LevenbergMarquardt/LevenbergMarquardt.h:212
Eigen::LevenbergMarquardt::setMaxfev
void setMaxfev(Index maxfev)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:173
Eigen::SparseFunctor::JacobianType
SparseMatrix< Scalar, ColMajor, Index > JacobianType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:75
Eigen::SparseQR
Sparse left-looking QR factorization with numerical column pivoting.
Definition: SparseQR.h:16
Eigen::NumTraits
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:232
test_callbacks.value
value
Definition: test_callbacks.py:158
Eigen::SparseFunctor::QRSolver
SparseQR< JacobianType, COLAMDOrdering< int > > QRSolver
Definition: LevenbergMarquardt/LevenbergMarquardt.h:76
ceres::sqrt
Jet< T, N > sqrt(const Jet< T, N > &f)
Definition: jet.h:418
Eigen::LevenbergMarquardt::PermIndex
QRSolver::StorageIndex PermIndex
Definition: LevenbergMarquardt/LevenbergMarquardt.h:118
Eigen::LevenbergMarquardt::LevenbergMarquardt
LevenbergMarquardt(FunctorType &functor)
Definition: LevenbergMarquardt/LevenbergMarquardt.h:122
Eigen::SparseFunctor::InputType
Matrix< Scalar, Dynamic, 1 > InputType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:73
Eigen::SparseFunctor::ValuesAtCompileTime
@ ValuesAtCompileTime
Definition: LevenbergMarquardt/LevenbergMarquardt.h:79
Eigen::LevenbergMarquardt::m_functor
FunctorType & m_functor
Definition: LevenbergMarquardt/LevenbergMarquardt.h:251
Eigen::DenseFunctor::ValuesAtCompileTime
@ ValuesAtCompileTime
Definition: LevenbergMarquardt/LevenbergMarquardt.h:47
Scalar
SCALAR Scalar
Definition: bench_gemm.cpp:46
Eigen::LevenbergMarquardt::nfev
Index nfev
Definition: NonLinearOptimization/LevenbergMarquardt.h:110
Eigen::SparseFunctor
Definition: LevenbergMarquardt/LevenbergMarquardt.h:69
Eigen::Index
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
Eigen::DenseFunctor
Definition: LevenbergMarquardt/LevenbergMarquardt.h:42
Eigen::LevenbergMarquardt::FunctorType
_FunctorType FunctorType
Definition: LevenbergMarquardt/LevenbergMarquardt.h:113
Eigen::LevenbergMarquardt::m_wa3
FVectorType m_wa3
Definition: LevenbergMarquardt/LevenbergMarquardt.h:269
Eigen::LevenbergMarquardt::m_diag
FVectorType m_diag
Definition: LevenbergMarquardt/LevenbergMarquardt.h:252


gtsam
Author(s):
autogenerated on Tue Jun 25 2024 03:01:15