gtsam 4.2.0
gtsam
Loading...
Searching...
No Matches
HybridBayesNet.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2 * GTSAM Copyright 2010, Georgia Tech Research Corporation,
3 * Atlanta, Georgia 30332-0415
4 * All Rights Reserved
5 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
6 * See LICENSE for the license information
7 * -------------------------------------------------------------------------- */
8
18#pragma once
19
26
27namespace gtsam {
28
35class GTSAM_EXPORT HybridBayesNet : public BayesNet<HybridConditional> {
36 public:
38 using This = HybridBayesNet;
40 using shared_ptr = boost::shared_ptr<HybridBayesNet>;
41 using sharedConditional = boost::shared_ptr<ConditionalType>;
42
45
47 HybridBayesNet() = default;
48
52
54 void print(const std::string &s = "", const KeyFormatter &formatter =
55 DefaultKeyFormatter) const override;
56
58 bool equals(const This &fg, double tol = 1e-9) const;
59
63
69 void push_back(boost::shared_ptr<HybridConditional> conditional) {
70 factors_.push_back(conditional);
71 }
72
81 template <class Conditional>
82 void emplace_back(Conditional *conditional) {
83 factors_.push_back(boost::make_shared<HybridConditional>(
84 boost::shared_ptr<Conditional>(conditional)));
85 }
86
99 void push_back(HybridConditional &&conditional) {
100 factors_.push_back(
101 boost::make_shared<HybridConditional>(std::move(conditional)));
102 }
103
111 GaussianBayesNet choose(const DiscreteValues &assignment) const;
112
114 double evaluate(const HybridValues &values) const;
115
117 double operator()(const HybridValues &values) const {
118 return evaluate(values);
119 }
120
128 HybridValues optimize() const;
129
137 VectorValues optimize(const DiscreteValues &assignment) const;
138
144 DecisionTreeFactor::shared_ptr discreteConditionals() const;
145
158 HybridValues sample(const HybridValues &given, std::mt19937_64 *rng) const;
159
170 HybridValues sample(std::mt19937_64 *rng) const;
171
178 HybridValues sample(const HybridValues &given) const;
179
185 HybridValues sample() const;
186
188 HybridBayesNet prune(size_t maxNrLeaves);
189
197 AlgebraicDecisionTree<Key> logProbability(
198 const VectorValues &continuousValues) const;
199
200 using BayesNet::logProbability; // expose HybridValues version
201
213 const VectorValues &continuousValues) const;
214
219 HybridGaussianFactorGraph toFactorGraph(
220 const VectorValues &measurements) const;
222
223 private:
229 void updateDiscreteConditionals(const DecisionTreeFactor &prunedDecisionTree);
230
232 friend class boost::serialization::access;
233 template <class ARCHIVE>
234 void serialize(ARCHIVE &ar, const unsigned int /*version*/) {
235 ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
236 }
237};
238
240template <>
241struct traits<HybridBayesNet> : public Testable<HybridBayesNet> {};
242
243} // namespace gtsam
Bayes network.
Chordal Bayes Net, the result of eliminating a factor graph.
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
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:156
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
An algebraic decision tree fixes the range of a DecisionTree to double.
Definition AlgebraicDecisionTree.h:38
A discrete probabilistic factor.
Definition DecisionTreeFactor.h:45
A map from keys to values.
Definition DiscreteValues.h:34
A hybrid Bayes net is a collection of HybridConditionals, which can have discrete conditionals,...
Definition HybridBayesNet.h:35
void push_back(boost::shared_ptr< HybridConditional > conditional)
Add a hybrid conditional using a shared_ptr.
Definition HybridBayesNet.h:69
void emplace_back(Conditional *conditional)
Preferred: add a conditional directly using a pointer.
Definition HybridBayesNet.h:82
void push_back(HybridConditional &&conditional)
Add a conditional using a shared_ptr, using implicit conversion to a HybridConditional.
Definition HybridBayesNet.h:99
HybridBayesNet()=default
Construct empty Bayes net.
double operator()(const HybridValues &values) const
Evaluate hybrid probability density for given HybridValues, sugar.
Definition HybridBayesNet.h:117
Hybrid Conditional Density.
Definition HybridConditional.h:62
Definition HybridGaussianFactorGraph.h:102
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:38
A BayesNet is a tree of conditionals, stored in elimination order.
Definition BayesNet.h:35
Definition Conditional.h:64
GaussianBayesNet is a Bayes net made from linear-Gaussian conditionals.
Definition GaussianBayesNet.h:36
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:74