gtsam 4.2.0
gtsam
Loading...
Searching...
No Matches
GaussianBayesNet.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// \callgraph
20
21#pragma once
22
27
28#include <utility>
29namespace gtsam {
30
35 class GTSAM_EXPORT GaussianBayesNet: public BayesNet<GaussianConditional>
36 {
37 public:
38
40 typedef GaussianBayesNet This;
42 typedef boost::shared_ptr<This> shared_ptr;
43 typedef boost::shared_ptr<ConditionalType> sharedConditional;
44
47
50
52 template <typename ITERATOR>
53 GaussianBayesNet(ITERATOR firstConditional, ITERATOR lastConditional)
54 : Base(firstConditional, lastConditional) {}
55
57 template <class CONTAINER>
58 explicit GaussianBayesNet(const CONTAINER& conditionals) {
59 push_back(conditionals);
60 }
61
64 template <class DERIVEDCONDITIONAL>
66 : Base(graph) {}
67
72 template <class DERIVEDCONDITIONAL>
74 std::initializer_list<boost::shared_ptr<DERIVEDCONDITIONAL> > conditionals)
75 : Base(conditionals) {}
76
78 virtual ~GaussianBayesNet() = default;
79
81
84
86 bool equals(const This& bn, double tol = 1e-9) const;
87
89 void print(
90 const std::string& s = "",
91 const KeyFormatter& formatter = DefaultKeyFormatter) const override {
92 Base::print(s, formatter);
93 }
94
96
99
101 double error(const VectorValues& x) const;
102
104 double logProbability(const VectorValues& x) const;
105
111 double evaluate(const VectorValues& x) const;
112
114 double operator()(const VectorValues& x) const {
115 return evaluate(x);
116 }
117
120 VectorValues optimize() const;
121
123 VectorValues optimize(const VectorValues& given) const;
124
131 VectorValues sample(std::mt19937_64* rng) const;
132
140 VectorValues sample(const VectorValues& given, std::mt19937_64* rng) const;
141
143 VectorValues sample() const;
144
146 VectorValues sample(const VectorValues& given) const;
147
154 Ordering ordering() const;
155
157
160
166 std::pair<Matrix, Vector> matrix(const Ordering& ordering) const;
167
173 std::pair<Matrix, Vector> matrix() const;
174
200 VectorValues optimizeGradientSearch() const;
201
207 VectorValues gradient(const VectorValues& x0) const;
208
215 VectorValues gradientAtZero() const;
216
224 double determinant() const;
225
232 double logDeterminant() const;
233
238 VectorValues backSubstitute(const VectorValues& gx) const;
239
246 VectorValues backSubstituteTranspose(const VectorValues& gx) const;
247
251
252 using Base::evaluate; // Expose evaluate(const HybridValues&) method..
253 using Base::logProbability; // Expose logProbability(const HybridValues&) method..
254 using Base::error; // Expose error(const HybridValues&) method..
255
257
258 private:
260 friend class boost::serialization::access;
261 template<class ARCHIVE>
262 void serialize(ARCHIVE & ar, const unsigned int /*version*/) {
263 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
264 }
265 };
266
268 template<>
269 struct traits<GaussianBayesNet> : public Testable<GaussianBayesNet> {
270 };
271
272} //\ namespace gtsam
Bayes network.
Factor Graph Base Class.
Conditional Gaussian Base class.
Included from all GTSAM files.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
Point3 optimize(const NonlinearFactorGraph &graph, const Values &values, Key landmarkKey)
Optimize for triangulation.
Definition triangulation.cpp:155
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 BayesNet is a tree of conditionals, stored in elimination order.
Definition BayesNet.h:35
A factor graph is a bipartite graph with factor nodes connected to variable nodes.
Definition FactorGraph.h:97
Definition Ordering.h:34
GaussianBayesNet is a Bayes net made from linear-Gaussian conditionals.
Definition GaussianBayesNet.h:36
double operator()(const VectorValues &x) const
Evaluate probability density, sugar.
Definition GaussianBayesNet.h:114
void print(const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override
print graph
Definition GaussianBayesNet.h:89
GaussianBayesNet(std::initializer_list< boost::shared_ptr< DERIVEDCONDITIONAL > > conditionals)
Constructor that takes an initializer list of shared pointers.
Definition GaussianBayesNet.h:73
GaussianBayesNet(const FactorGraph< DERIVEDCONDITIONAL > &graph)
Implicit copy/downcast constructor to override explicit template container constructor.
Definition GaussianBayesNet.h:65
virtual ~GaussianBayesNet()=default
Destructor.
GaussianBayesNet(const CONTAINER &conditionals)
Construct from container of factors (shared_ptr or plain objects)
Definition GaussianBayesNet.h:58
GaussianBayesNet()
Construct empty bayes net.
Definition GaussianBayesNet.h:49
GaussianBayesNet(ITERATOR firstConditional, ITERATOR lastConditional)
Construct from iterator over conditionals.
Definition GaussianBayesNet.h:53
A GaussianConditional functions as the node in a Bayes network.
Definition GaussianConditional.h:43
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:74