gtsam  4.0.0
gtsam
SubgraphSolver.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 #pragma once
21 
23 
24 namespace gtsam {
25 
26 // Forward declarations
27 class GaussianFactorGraph;
28 class GaussianBayesNet;
29 class SubgraphPreconditioner;
30 
32 public:
35  Base() {
36  }
37  void print() const {
38  Base::print();
39  }
40  virtual void print(std::ostream &os) const {
41  Base::print(os);
42  }
43 };
44 
66 class GTSAM_EXPORT SubgraphSolver: public IterativeSolver {
67 
68 public:
70 
71 protected:
72  Parameters parameters_;
73  Ordering ordering_;
74  boost::shared_ptr<SubgraphPreconditioner> pc_;
75 
76 public:
77 
79  SubgraphSolver(const GaussianFactorGraph &A, const Parameters &parameters,
80  const Ordering& ordering);
81 
83  SubgraphSolver(const boost::shared_ptr<GaussianFactorGraph> &A,
84  const Parameters &parameters, const Ordering& ordering);
85 
91  const Parameters &parameters, const Ordering& ordering);
92 
94  SubgraphSolver(const boost::shared_ptr<GaussianFactorGraph> &Ab1,
95  const boost::shared_ptr<GaussianFactorGraph> &Ab2,
96  const Parameters &parameters, const Ordering& ordering);
97 
98  /* The same as above, but the A1 is solved before */
99  SubgraphSolver(const boost::shared_ptr<GaussianBayesNet> &Rc1,
100  const GaussianFactorGraph &Ab2, const Parameters &parameters,
101  const Ordering& ordering);
102 
104  SubgraphSolver(const boost::shared_ptr<GaussianBayesNet> &Rc1,
105  const boost::shared_ptr<GaussianFactorGraph> &Ab2,
106  const Parameters &parameters, const Ordering& ordering);
107 
109  virtual ~SubgraphSolver() {
110  }
111 
114 
116  VectorValues optimize(const VectorValues &initial);
117 
119  virtual VectorValues optimize(const GaussianFactorGraph &gfg,
120  const KeyInfo &keyInfo, const std::map<Key, Vector> &lambda,
121  const VectorValues &initial);
122 
123 protected:
124 
125  void initialize(const GaussianFactorGraph &jfg);
126  void initialize(const boost::shared_ptr<GaussianBayesNet> &Rc1,
127  const boost::shared_ptr<GaussianFactorGraph> &Ab2);
128 
129  boost::tuple<boost::shared_ptr<GaussianFactorGraph>,
130  boost::shared_ptr<GaussianFactorGraph> >
131  splitGraph(const GaussianFactorGraph &gfg);
132 };
133 
134 } // namespace gtsam
Base class for Iterative Solvers like SubgraphSolver.
Definition: IterativeSolver.h:86
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:140
parameters for the conjugate gradient method
Definition: ConjugateGradientSolver.h:29
Handy data structure for iterative solvers.
Definition: IterativeSolver.h:139
parameters for iterative linear solvers
Definition: IterativeSolver.h:44
Definition: SubgraphSolver.h:31
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:90
virtual ~SubgraphSolver()
Destructor.
Definition: SubgraphSolver.h:109
Definition: Ordering.h:33
Point3 optimize(const NonlinearFactorGraph &graph, const Values &values, Key landmarkKey)
Optimize for triangulation.
Definition: triangulation.cpp:73
boost::shared_ptr< SubgraphPreconditioner > pc_
preconditioner object
Definition: SubgraphSolver.h:74
Implementation of Conjugate Gradient solver for a linear system.
This class implements the SPCG solver presented in Dellaert et al in IROS&#39;10.
Definition: SubgraphSolver.h:66
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition: GaussianFactorGraph.h:65
Global functions in a separate testing namespace.
Definition: chartTesting.h:28