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 
21 #include <gtsam/global_includes.h>
26 
27 namespace gtsam {
28 
35 class GTSAM_EXPORT HybridBayesNet : public BayesNet<HybridConditional> {
36  public:
40  using shared_ptr = std::shared_ptr<HybridBayesNet>;
41  using sharedConditional = std::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(std::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(std::make_shared<HybridConditional>(
84  std::shared_ptr<Conditional>(conditional)));
85  }
86 
99  void push_back(HybridConditional &&conditional) {
100  factors_.push_back(
101  std::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 
151  HybridValues sample(const HybridValues &given, std::mt19937_64 *rng) const;
152 
163  HybridValues sample(std::mt19937_64 *rng) const;
164 
171  HybridValues sample(const HybridValues &given) const;
172 
178  HybridValues sample() const;
179 
181  HybridBayesNet prune(size_t maxNrLeaves);
182 
190  AlgebraicDecisionTree<Key> errorTree(
191  const VectorValues &continuousValues) const;
192 
197  using Base::error;
198 
207  AlgebraicDecisionTree<Key> logProbability(
208  const VectorValues &continuousValues) const;
209 
210  using BayesNet::logProbability; // expose HybridValues version
211 
223  const VectorValues &continuousValues) const;
224 
229  HybridGaussianFactorGraph toFactorGraph(
230  const VectorValues &measurements) const;
232 
233  private:
239  DecisionTreeFactor pruneDiscreteConditionals(size_t maxNrLeaves);
240 
241 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION
242 
243  friend class boost::serialization::access;
244  template <class ARCHIVE>
245  void serialize(ARCHIVE &ar, const unsigned int /*version*/) {
246  ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
247  }
248 #endif
249 };
250 
252 template <>
253 struct traits<HybridBayesNet> : public Testable<HybridBayesNet> {};
254 
255 } // namespace gtsam
gtsam::HybridBayesNet::sharedConditional
std::shared_ptr< ConditionalType > sharedConditional
Definition: HybridBayesNet.h:41
gtsam::DecisionTreeFactor
Definition: DecisionTreeFactor.h:44
gtsam::HybridValues
Definition: HybridValues.h:38
rng
static std::mt19937 rng
Definition: timeFactorOverhead.cpp:31
gtsam::HybridConditional
Definition: HybridConditional.h:59
global_includes.h
Included from all GTSAM files.
gtsam::BayesNet
Definition: BayesNet.h:35
s
RealScalar s
Definition: level1_cplx_impl.h:126
e
Array< double, 1, 3 > e(1./3., 0.5, 2.)
gtsam::HybridBayesNet
Definition: HybridBayesNet.h:35
gtsam::optimize
Point3 optimize(const NonlinearFactorGraph &graph, const Values &values, Key landmarkKey)
Definition: triangulation.cpp:177
formatter
const KeyFormatter & formatter
Definition: treeTraversal-inst.h:204
GaussianBayesNet.h
Chordal Bayes Net, the result of eliminating a factor graph.
gtsam::DefaultKeyFormatter
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition: Key.cpp:30
gtsam::AlgebraicDecisionTree< Key >
gtsam::print
void print(const Matrix &A, const string &s, ostream &stream)
Definition: Matrix.cpp:155
gtsam::VectorValues
Definition: VectorValues.h:74
gtsam::HybridBayesNet::operator()
double operator()(const HybridValues &values) const
Evaluate hybrid probability density for given HybridValues, sugar.
Definition: HybridBayesNet.h:117
gtsam::KeyFormatter
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
gtsam::HybridBayesNet::push_back
void push_back(HybridConditional &&conditional)
Definition: HybridBayesNet.h:99
gtsam::HybridGaussianFactorGraph
Definition: HybridGaussianFactorGraph.h:104
gtsam::Conditional
Definition: Conditional.h:61
BayesNet.h
Bayes network.
gtsam::equals
Definition: Testable.h:112
gtsam::HybridBayesNet::push_back
void push_back(std::shared_ptr< HybridConditional > conditional)
Add a hybrid conditional using a shared_ptr.
Definition: HybridBayesNet.h:69
gtsam
traits
Definition: chartTesting.h:28
gtsam::BayesNet::logProbability
double logProbability(const HybridValues &x) const
Definition: BayesNet-inst.h:94
gtsam::Testable
Definition: Testable.h:152
error
static double error
Definition: testRot3.cpp:37
gtsam::traits
Definition: Group.h:36
gtsam::DiscreteValues
Definition: DiscreteValues.h:34
leaf::values
leaf::MyValues values
gtsam::HybridBayesNet::emplace_back
void emplace_back(Conditional *conditional)
Definition: HybridBayesNet.h:82
gtsam::tol
const G double tol
Definition: Group.h:79
gtsam::HybridBayesNet::shared_ptr
std::shared_ptr< HybridBayesNet > shared_ptr
Definition: HybridBayesNet.h:40
Base
Definition: test_virtual_functions.cpp:156
HybridValues.h
DecisionTreeFactor.h
choose
static const T & choose(int layout, const T &col, const T &row)
Definition: cxx11_tensor_block_access.cpp:27
gtsam::GaussianBayesNet
Definition: GaussianBayesNet.h:35
HybridConditional.h


gtsam
Author(s):
autogenerated on Tue Jun 25 2024 03:01:00