gtsam
Loading...
Searching...
No Matches
LevenbergMarquardtOptimizer.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2
3 * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4 * Atlanta, Georgia 30332-0415
5 * All Rights Reserved
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
8 * See LICENSE for the license information
9
10 * -------------------------------------------------------------------------- */
11
20
21#pragma once
22
26#include <chrono>
27
28class NonlinearOptimizerMoreOptimizationTest;
29
30namespace gtsam {
31
36
37protected:
39
40 // startTime_ is a chrono time point
41 std::chrono::time_point<std::chrono::high_resolution_clock> startTime_;
42 std::chrono::time_point<std::chrono::high_resolution_clock> iterationStart_;
43 double lastLinearizeTime_{0.0};
44 double lastSolveTime_{0.0};
45
46 void initTime();
47
48public:
49 typedef std::shared_ptr<LevenbergMarquardtOptimizer> shared_ptr;
50
53
62 LevenbergMarquardtOptimizer(const NonlinearFactorGraph& graph, const Values& initialValues,
63 const LevenbergMarquardtParams& params = LevenbergMarquardtParams());
64
72 LevenbergMarquardtOptimizer(const NonlinearFactorGraph& graph, const Values& initialValues,
73 const Ordering& ordering,
74 const LevenbergMarquardtParams& params = LevenbergMarquardtParams());
75
79
81
84
86 double lambda() const;
87
89 int getInnerIterations() const;
90
92 void print(const std::string& str = "") const {
93 std::cout << str << "LevenbergMarquardtOptimizer" << std::endl;
94 this->params_.print(" parameters:\n");
95 }
96
98
101
106 GaussianFactorGraph::shared_ptr iterate() override;
107
110 return params_;
111 }
112
113 void writeLogFile(double currentError);
114
116 virtual GaussianFactorGraph::shared_ptr linearize() const;
117
119 virtual GaussianFactorGraph buildDampedSystem(
120 const GaussianFactorGraph& linear,
121 const VectorValues& sqrtHessianDiagonal) const;
122
124 bool tryLambda(const GaussianFactorGraph& linear, const VectorValues& sqrtHessianDiagonal);
125
127
128protected:
129
131 virtual double linearDeltaError(const GaussianFactorGraph& linear,
132 const VectorValues& delta,
133 double* oldError,
134 double* newError) const;
135
137 const NonlinearOptimizerParams& _params() const override {
138 return params_;
139 }
140
141};
142
143}
Factor Graph Values.
Base class and parameters for nonlinear optimization algorithms.
Parameters for Levenberg-Marquardt trust-region scheme.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition GaussianFactorGraph.h:77
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition GaussianFactorGraph.h:83
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:73
~LevenbergMarquardtOptimizer() override
Virtual destructor.
Definition LevenbergMarquardtOptimizer.h:77
const LevenbergMarquardtParams & params() const
Read-only access the parameters.
Definition LevenbergMarquardtOptimizer.h:109
const NonlinearOptimizerParams & _params() const override
Access the parameters (base class version).
Definition LevenbergMarquardtOptimizer.h:137
const LevenbergMarquardtParams params_
LM parameters.
Definition LevenbergMarquardtOptimizer.h:38
void print(const std::string &str="") const
print
Definition LevenbergMarquardtOptimizer.h:92
std::chrono::time_point< std::chrono::high_resolution_clock > startTime_
time when optimization started
Definition LevenbergMarquardtOptimizer.h:41
LevenbergMarquardtOptimizer(const NonlinearFactorGraph &graph, const Values &initialValues, const LevenbergMarquardtParams &params=LevenbergMarquardtParams())
Standard constructor, requires a nonlinear factor graph, initial variable assignments,...
Definition LevenbergMarquardtOptimizer.cpp:47
Parameters for Levenberg-Marquardt optimization.
Definition LevenbergMarquardtParams.h:36
NonlinearOptimizer(const NonlinearFactorGraph &graph, std::unique_ptr< internal::NonlinearOptimizerState > state)
Constructor for initial construction of base classes.
Definition NonlinearOptimizer.cpp:79
The common parameters for Nonlinear optimizers.
Definition NonlinearOptimizerParams.h:37
In nonlinear factors, the error function returns the negative log-likelihood as a non-linear function...