35 class GaussianFactorGraph;
38 class GaussianBayesNet;
39 class GaussianEliminationTree;
40 class GaussianBayesTree;
41 class GaussianJunctionTree;
54 static std::pair<boost::shared_ptr<ConditionalType>, boost::shared_ptr<FactorType> >
60 boost::optional<const VariableIndex&> variableIndex) {
98 template<
typename ITERATOR>
102 template<
class CONTAINER>
106 template<
class DERIVEDFACTOR>
116 bool equals(
const This& fg,
double tol = 1e-9)
const;
133 void add(
const Vector& b) {
138 const Vector& b,
const SharedDiagonal& model = SharedDiagonal()) {
143 Key key2,
const Matrix& A2,
144 const Vector& b,
const SharedDiagonal& model = SharedDiagonal()) {
149 Key key2,
const Matrix& A2,
150 Key key3,
const Matrix& A3,
151 const Vector& b,
const SharedDiagonal& model = SharedDiagonal()) {
155 template<
class TERMS>
156 void add(
const TERMS& terms,
const Vector &b,
const SharedDiagonal& model = SharedDiagonal()) {
167 std::map<Key, size_t> getKeyDimMap()
const;
209 std::vector<std::tuple<int, int, double> > sparseJacobian(
210 const Ordering& ordering,
size_t& nrows,
size_t& ncols)
const;
213 std::vector<std::tuple<int, int, double> > sparseJacobian()
const;
221 Matrix sparseJacobian_()
const;
230 Matrix augmentedJacobian(
const Ordering& ordering)
const;
239 Matrix augmentedJacobian()
const;
248 std::pair<Matrix,Vector> jacobian(
const Ordering& ordering)
const;
257 std::pair<Matrix,Vector> jacobian()
const;
270 Matrix augmentedHessian(
const Ordering& ordering)
const;
283 Matrix augmentedHessian()
const;
291 std::pair<Matrix,Vector> hessian(
const Ordering& ordering)
const;
299 std::pair<Matrix,Vector> hessian()
const;
305 virtual std::map<Key,Matrix> hessianBlockDiagonal()
const;
312 const Eliminate& function = EliminationTraitsType::DefaultEliminate)
const;
319 const Eliminate& function = EliminationTraitsType::DefaultEliminate)
const;
385 void multiplyHessianAdd(
double alpha,
const VectorValues& x,
392 void multiplyInPlace(
const VectorValues& x,
const Errors::iterator& e)
const;
396 const std::string& str =
"GaussianFactorGraph: ",
398 const std::function<
bool(
const Factor* ,
401 [](
const Factor*,
double,
size_t) {
return true; })
const;
406 friend class boost::serialization::access;
407 template<
class ARCHIVE>
408 void serialize(ARCHIVE & ar,
const unsigned int ) {
409 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(
Base);
414#ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V42
417 optimize(boost::none_t,
const Eliminate& function =
418 EliminationTraitsType::DefaultEliminate)
const {
429 GTSAM_EXPORT
bool hasConstraints(
const GaussianFactorGraph& factors);
Variable elimination algorithms for factor graphs.
Contains the HessianFactor class, a general quadratic factor.
A factor with a quadratic error function - a Gaussian.
std::pair< boost::shared_ptr< GaussianConditional >, boost::shared_ptr< GaussianFactor > > EliminatePreferCholesky(const GaussianFactorGraph &factors, const Ordering &keys)
Densely partially eliminate with Cholesky factorization.
Definition: HessianFactor.cpp:548
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
bool hasConstraints(const GaussianFactorGraph &factors)
Evaluates whether linear factors have any constrained noise models.
Definition: GaussianFactorGraph.cpp:442
Point3 optimize(const NonlinearFactorGraph &graph, const Values &values, Key landmarkKey)
Optimize for triangulation.
Definition: triangulation.cpp:155
Point2 operator*(double s, const Point2 &p)
multiply with scalar
Definition: Point2.h:47
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:100
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:35
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
Template to create a binary predicate.
Definition: Testable.h:111
A helper that implements the traits interface for GTSAM types.
Definition: Testable.h:151
A factor graph is a bipartite graph with factor nodes connected to variable nodes.
Definition: FactorGraph.h:97
bool isEqual(const FactorGraph &other) const
Check exact equality of the factor pointers. Useful for derived ==.
Definition: FactorGraph.h:134
boost::shared_ptr< GaussianFactor > sharedFactor
Shared pointer to a factor.
Definition: FactorGraph.h:101
Traits class for eliminateable factor graphs, specifies the types that result from elimination,...
Definition: EliminateableFactorGraph.h:36
EliminateableFactorGraph is a base class for factor graphs that contains elimination algorithms.
Definition: EliminateableFactorGraph.h:57
Definition: Ordering.h:34
static Ordering Colamd(const FACTOR_GRAPH &graph)
Compute a fill-reducing ordering using COLAMD from a factor graph (see details for note on performanc...
Definition: Ordering.h:95
GaussianBayesNet is a Bayes net made from linear-Gaussian conditionals.
Definition: GaussianBayesNet.h:36
A Bayes tree representing a Gaussian density.
Definition: GaussianBayesTree.h:52
A GaussianConditional functions as the node in a Bayes network.
Definition: GaussianConditional.h:43
Definition: GaussianEliminationTree.h:29
An abstract virtual base class for JacobianFactor and HessianFactor.
Definition: GaussianFactor.h:39
virtual GaussianFactor::shared_ptr clone() const =0
Clone a factor (make a deep copy)
static Ordering DefaultOrderingFunc(const FactorGraphType &graph, boost::optional< const VariableIndex & > variableIndex)
The default ordering generation function.
Definition: GaussianFactorGraph.h:58
GaussianBayesTree BayesTreeType
Type of Bayes tree.
Definition: GaussianFactorGraph.h:51
GaussianConditional ConditionalType
Type of conditionals from elimination.
Definition: GaussianFactorGraph.h:48
GaussianFactor FactorType
Type of factors in factor graph.
Definition: GaussianFactorGraph.h:46
GaussianEliminationTree EliminationTreeType
Type of elimination tree.
Definition: GaussianFactorGraph.h:50
GaussianFactorGraph FactorGraphType
Type of the factor graph (e.g. GaussianFactorGraph)
Definition: GaussianFactorGraph.h:47
GaussianBayesNet BayesNetType
Type of Bayes net from sequential elimination.
Definition: GaussianFactorGraph.h:49
GaussianJunctionTree JunctionTreeType
Type of Junction tree.
Definition: GaussianFactorGraph.h:52
static std::pair< boost::shared_ptr< ConditionalType >, boost::shared_ptr< FactorType > > DefaultEliminate(const FactorGraphType &factors, const Ordering &keys)
The default dense elimination function.
Definition: GaussianFactorGraph.h:55
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition: GaussianFactorGraph.h:75
EliminateableFactorGraph< This > BaseEliminateable
Typedef to base elimination class.
Definition: GaussianFactorGraph.h:80
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactorGraph.h:81
void add(const TERMS &terms, const Vector &b, const SharedDiagonal &model=SharedDiagonal())
Add an n-ary factor.
Definition: GaussianFactorGraph.h:156
GaussianFactorGraph(std::initializer_list< sharedFactor > factors)
Construct from an initializer lists of GaussianFactor shared pointers.
Definition: GaussianFactorGraph.h:94
GaussianFactorGraph()
Default constructor.
Definition: GaussianFactorGraph.h:87
void add(const GaussianFactor &factor)
Add a factor by value - makes a copy.
Definition: GaussianFactorGraph.h:127
void add(Key key1, const Matrix &A1, Key key2, const Matrix &A2, Key key3, const Matrix &A3, const Vector &b, const SharedDiagonal &model=SharedDiagonal())
Add a ternary factor.
Definition: GaussianFactorGraph.h:148
void add(const sharedFactor &factor)
Add a factor by pointer - stores pointer without copying the factor.
Definition: GaussianFactorGraph.h:130
friend bool operator==(const GaussianFactorGraph &lhs, const GaussianFactorGraph &rhs)
Check exact equality.
Definition: GaussianFactorGraph.h:121
GaussianFactorGraph This
Typedef to this class.
Definition: GaussianFactorGraph.h:78
KeySet Keys
Return the set of variables involved in the factors (computes a set union).
Definition: GaussianFactorGraph.h:163
void add(const Vector &b)
Add a null factor.
Definition: GaussianFactorGraph.h:133
void add(Key key1, const Matrix &A1, const Vector &b, const SharedDiagonal &model=SharedDiagonal())
Add a unary factor.
Definition: GaussianFactorGraph.h:137
virtual ~GaussianFactorGraph()
Virtual destructor.
Definition: GaussianFactorGraph.h:110
void add(Key key1, const Matrix &A1, Key key2, const Matrix &A2, const Vector &b, const SharedDiagonal &model=SharedDiagonal())
Add a binary factor.
Definition: GaussianFactorGraph.h:142
GaussianFactorGraph(ITERATOR firstFactor, ITERATOR lastFactor)
Construct from iterator over factors.
Definition: GaussianFactorGraph.h:99
FactorGraph< GaussianFactor > Base
Typedef to base factor graph type.
Definition: GaussianFactorGraph.h:79
GaussianFactorGraph(const FactorGraph< DERIVEDFACTOR > &graph)
Implicit copy/downcast constructor to override explicit template container constructor.
Definition: GaussianFactorGraph.h:107
GaussianFactorGraph(const CONTAINER &factors)
Construct from container of factors (shared_ptr or plain objects)
Definition: GaussianFactorGraph.h:103
A junction tree specialized to Gaussian factors, i.e., it is a cluster tree with Gaussian factors sto...
Definition: GaussianJunctionTree.h:39
A Gaussian factor in the squared-error form.
Definition: JacobianFactor.h:91
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition: VectorValues.h:74
is the normalization constant.