gtsam  3.2.1
gtsam
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NonlinearOptimizer.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 
19 #pragma once
20 
23 
24 namespace gtsam {
25 
26 class NonlinearOptimizer;
27 
35 class GTSAM_EXPORT NonlinearOptimizerState {
36 public:
37 
40 
42  double error;
43 
46 
48 
51 
52 protected:
53  NonlinearOptimizerState(const NonlinearFactorGraph& graph, const Values& values, unsigned int iterations = 0) :
54  values(values), error(graph.error(values)), iterations(iterations) {}
55 
56  NonlinearOptimizerState(const Values& values, double error, unsigned int iterations) :
57  values(values), error(error), iterations(iterations) {}
58 
59  friend class NonlinearOptimizer;
60 };
61 
134 class GTSAM_EXPORT NonlinearOptimizer {
135 
136 protected:
137  NonlinearFactorGraph graph_;
138 
139 public:
141  typedef boost::shared_ptr<const NonlinearOptimizer> shared_ptr;
142 
145 
155  virtual const Values& optimize() { defaultOptimize(); return values(); }
156 
163  const Values& optimizeSafely();
164 
166  double error() const { return _state().error; }
167 
169  int iterations() const { return _state().iterations; }
170 
172  const Values& values() const { return _state().values; }
173 
175 
178 
180  virtual ~NonlinearOptimizer() {}
181 
183  virtual VectorValues solve(const GaussianFactorGraph &gfg,
184  const Values& initial, const NonlinearOptimizerParams& params) const;
185 
190  virtual void iterate() = 0;
191 
193 
194 protected:
198  void defaultOptimize();
199 
200  virtual const NonlinearOptimizerState& _state() const = 0;
201 
202  virtual const NonlinearOptimizerParams& _params() const = 0;
203 
205  NonlinearOptimizer(const NonlinearFactorGraph& graph) : graph_(graph) {}
206 
207 };
208 
213 GTSAM_EXPORT bool checkConvergence(double relativeErrorTreshold,
214  double absoluteErrorTreshold, double errorThreshold,
215  double currentError, double newError, NonlinearOptimizerParams::Verbosity verbosity = NonlinearOptimizerParams::SILENT);
216 
217 } // gtsam
virtual const Values & optimize()
Optimize for the maximum-likelihood estimate, returning a new NonlinearOptimizer class containing the...
Definition: NonlinearOptimizer.h:155
Parameters for nonlinear optimization.
void solve(Matrix &A, Matrix &B)
solve AX=B via in-place Lu factorization and backsubstitution After calling, A contains LU...
Definition: Matrix.cpp:283
double error
The factor graph error on the current values.
Definition: NonlinearOptimizer.h:42
The common parameters for Nonlinear optimizers.
Definition: NonlinearOptimizerParams.h:33
virtual ~NonlinearOptimizer()
Virtual destructor.
Definition: NonlinearOptimizer.h:180
int iterations
The number of optimization iterations performed.
Definition: NonlinearOptimizer.h:45
Factor Graph Constsiting of non-linear factors.
A non-templated config holding any types of Manifold-group elements.
Definition: Values.h:75
bool checkConvergence(double relativeErrorTreshold, double absoluteErrorTreshold, double errorThreshold, double currentError, double newError, NonlinearOptimizerParams::Verbosity verbosity)
Check whether the relative error decrease is less than relativeErrorTreshold, the absolute error decr...
Definition: NonlinearOptimizer.cpp:138
double error() const
return error
Definition: NonlinearOptimizer.h:166
This is the abstract interface for classes that can optimize for the maximum-likelihood estimate of a...
Definition: NonlinearOptimizer.h:134
A non-linear factor graph is a graph of non-Gaussian, i.e.
Definition: NonlinearFactorGraph.h:69
virtual ~NonlinearOptimizerState()
Virtual destructor.
Definition: NonlinearOptimizer.h:50
const Values & values() const
return values
Definition: NonlinearOptimizer.h:172
int iterations() const
return number of iterations
Definition: NonlinearOptimizer.h:169
Values values
The current estimate of the variable values.
Definition: NonlinearOptimizer.h:39
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:89
NonlinearOptimizer(const NonlinearFactorGraph &graph)
Constructor for initial construction of base classes.
Definition: NonlinearOptimizer.h:205
Verbosity
See NonlinearOptimizerParams::verbosity.
Definition: NonlinearOptimizerParams.h:36
boost::shared_ptr< const NonlinearOptimizer > shared_ptr
A shared pointer to this class.
Definition: NonlinearOptimizer.h:141
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition: GaussianFactorGraph.h:65
Base class for a nonlinear optimization state, including the current estimate of the variable values...
Definition: NonlinearOptimizer.h:35