gtsam  4.0.0
gtsam
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 namespace internal { struct NonlinearOptimizerState; }
27 
75 class GTSAM_EXPORT NonlinearOptimizer {
76 
77 protected:
79 
80  std::unique_ptr<internal::NonlinearOptimizerState> state_;
81 
82 public:
84  typedef boost::shared_ptr<const NonlinearOptimizer> shared_ptr;
85 
88 
98  virtual const Values& optimize() { defaultOptimize(); return values(); }
99 
106  const Values& optimizeSafely();
107 
109  double error() const;
110 
112  size_t iterations() const;
113 
115  const Values& values() const;
116 
118 
121 
123  virtual ~NonlinearOptimizer();
124 
126  virtual VectorValues solve(const GaussianFactorGraph &gfg,
127  const NonlinearOptimizerParams& params) const;
128 
133  virtual GaussianFactorGraph::shared_ptr iterate() = 0;
134 
136 
137 protected:
141  void defaultOptimize();
142 
143  virtual const NonlinearOptimizerParams& _params() const = 0;
144 
147  std::unique_ptr<internal::NonlinearOptimizerState> state);
148 };
149 
154 GTSAM_EXPORT bool checkConvergence(double relativeErrorTreshold,
155  double absoluteErrorTreshold, double errorThreshold,
156  double currentError, double newError, NonlinearOptimizerParams::Verbosity verbosity = NonlinearOptimizerParams::SILENT);
157 
158 GTSAM_EXPORT bool checkConvergence(const NonlinearOptimizerParams& params, double currentError,
159  double newError);
160 
161 } // gtsam
std::unique_ptr< internal::NonlinearOptimizerState > state_
PIMPL'd state.
Definition: NonlinearOptimizer.h:80
A non-templated config holding any types of Manifold-group elements.
Definition: Values.h:70
This is the abstract interface for classes that can optimize for the maximum-likelihood estimate of a...
Definition: NonlinearOptimizer.h:75
virtual const Values & optimize()
Optimize for the maximum-likelihood estimate, returning a the optimized variable assignments.
Definition: NonlinearOptimizer.h:98
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactorGraph.h:74
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:169
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition: GaussianFactorGraph.h:65
Verbosity
See NonlinearOptimizerParams::verbosity.
Definition: NonlinearOptimizerParams.h:37
Factor Graph Constsiting of non-linear factors.
NonlinearFactorGraph graph_
The graph with nonlinear factors.
Definition: NonlinearOptimizer.h:78
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:73
A non-linear factor graph is a graph of non-Gaussian, i.e.
Definition: NonlinearFactorGraph.h:77
Parameters for nonlinear optimization.
boost::shared_ptr< const NonlinearOptimizer > shared_ptr
A shared pointer to this class.
Definition: NonlinearOptimizer.h:84
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
The common parameters for Nonlinear optimizers.
Definition: NonlinearOptimizerParams.h:34