HybridGaussianConditional.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 
30 
31 namespace gtsam {
32 
33 class HybridValues;
34 
53 class GTSAM_EXPORT HybridGaussianConditional
54  : public HybridGaussianFactor,
55  public Conditional<HybridGaussianFactor, HybridGaussianConditional> {
56  public:
58  using shared_ptr = std::shared_ptr<This>;
61 
64 
65  private:
67  double negLogConstant_;
70 
75  GaussianFactorGraphTree asGaussianFactorGraphTree() const;
76 
84  std::function<GaussianConditional::shared_ptr(
86  prunerFunc(const DecisionTreeFactor &discreteProbs);
87 
88  public:
91 
93  HybridGaussianConditional() = default;
94 
106  HybridGaussianConditional(const KeyVector &continuousFrontals,
107  const KeyVector &continuousParents,
108  const DiscreteKeys &discreteParents,
109  const Conditionals &conditionals);
110 
123  const KeyVector &continuousFrontals, const KeyVector &continuousParents,
124  const DiscreteKey &discreteParent,
125  const std::vector<GaussianConditional::shared_ptr> &conditionals);
126 
130 
132  bool equals(const HybridFactor &lf, double tol = 1e-9) const override;
133 
135  void print(
136  const std::string &s = "HybridGaussianConditional\n",
137  const KeyFormatter &formatter = DefaultKeyFormatter) const override;
138 
142 
145  const DiscreteValues &discreteValues) const;
146 
148  size_t nrComponents() const;
149 
151  KeyVector continuousParents() const;
152 
161  inline double negLogConstant() const override { return negLogConstant_; }
162 
167  std::shared_ptr<HybridGaussianFactor> likelihood(
168  const VectorValues &given) const;
169 
171  const Conditionals &conditionals() const;
172 
180  AlgebraicDecisionTree<Key> logProbability(
181  const VectorValues &continuousValues) const;
182 
189  double logProbability(const HybridValues &values) const override;
190 
192  double evaluate(const HybridValues &values) const override;
193 
195  double operator()(const HybridValues &values) const {
196  return evaluate(values);
197  }
198 
205  void prune(const DecisionTreeFactor &discreteProbs);
206 
208 
209  private:
211  bool allFrontalsGiven(const VectorValues &given) const;
212 
213 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION
214 
215  friend class boost::serialization::access;
216  template <class Archive>
217  void serialize(Archive &ar, const unsigned int /*version*/) {
218  ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseFactor);
219  ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseConditional);
220  ar &BOOST_SERIALIZATION_NVP(conditionals_);
221  }
222 #endif
223 };
224 
226 std::set<DiscreteKey> DiscreteKeysAsSet(const DiscreteKeys &discreteKeys);
227 
228 // traits
229 template <>
231  : public Testable<HybridGaussianConditional> {};
232 
233 } // namespace gtsam
gtsam::DecisionTreeFactor
Definition: DecisionTreeFactor.h:44
gtsam::HybridValues
Definition: HybridValues.h:37
GaussianConditional.h
Conditional Gaussian Base class.
s
RealScalar s
Definition: level1_cplx_impl.h:126
e
Array< double, 1, 3 > e(1./3., 0.5, 2.)
gtsam::prunerFunc
std::function< double(const Assignment< Key > &, double)> prunerFunc(const DecisionTreeFactor &prunedDiscreteProbs, const HybridConditional &conditional)
Helper function to get the pruner functional.
Definition: HybridBayesNet.cpp:48
gtsam::HybridGaussianConditional::conditionals_
Conditionals conditionals_
Definition: HybridGaussianConditional.h:66
gtsam::HybridFactor
Definition: HybridFactor.h:54
gtsam::HybridFactor::shared_ptr
std::shared_ptr< HybridFactor > shared_ptr
shared_ptr to this class
Definition: HybridFactor.h:73
formatter
const KeyFormatter & formatter
Definition: treeTraversal-inst.h:204
gtsam::DiscreteKeys
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition: DiscreteKey.h:41
HybridValues
gtsam::KeyVector
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:92
HybridGaussianFactor.h
A set of GaussianFactors, indexed by a set of discrete keys.
equal_constants::conditionals
const std::vector< GaussianConditional::shared_ptr > conditionals
Definition: testHybridGaussianConditional.cpp:50
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
HybridFactor.h
gtsam::VectorValues
Definition: VectorValues.h:74
operator()
internal::enable_if< internal::valid_indexed_view_overload< RowIndices, ColIndices >::value &&internal::traits< typename EIGEN_INDEXED_VIEW_METHOD_TYPE< RowIndices, ColIndices >::type >::ReturnAsIndexedView, typename EIGEN_INDEXED_VIEW_METHOD_TYPE< RowIndices, ColIndices >::type >::type operator()(const RowIndices &rowIndices, const ColIndices &colIndices) EIGEN_INDEXED_VIEW_METHOD_CONST
Definition: IndexedViewMethods.h:73
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
DecisionTree.h
Decision Tree for use in DiscreteFactors.
gtsam::HybridGaussianConditional
A conditional of gaussian conditionals indexed by discrete variables, as part of a Bayes Network....
Definition: HybridGaussianConditional.h:53
gtsam::Assignment< Key >
gtsam::HybridGaussianConditional::operator()
double operator()(const HybridValues &values) const
Evaluate probability density, sugar.
Definition: HybridGaussianConditional.h:195
gtsam::Conditional
Definition: Conditional.h:63
gtsam::equals
Definition: Testable.h:112
DiscreteKey.h
specialized key for discrete variables
gtsam::DecisionTree< Key, GaussianConditional::shared_ptr >
gtsam::DiscreteKeysAsSet
std::set< DiscreteKey > DiscreteKeysAsSet(const DiscreteKeys &discreteKeys)
Return the DiscreteKey vector as a set.
Definition: HybridGaussianConditional.cpp:230
gtsam
traits
Definition: chartTesting.h:28
gtsam::Testable
Definition: Testable.h:152
DecisionTree-inl.h
gtsam::traits
Definition: Group.h:36
gtsam::DiscreteValues
Definition: DiscreteValues.h:34
leaf::values
leaf::MyValues values
gtsam::DiscreteKey
std::pair< Key, size_t > DiscreteKey
Definition: DiscreteKey.h:38
gtsam::HybridGaussianFactor
Implementation of a discrete-conditioned hybrid factor. Implements a joint discrete-continuous factor...
Definition: HybridGaussianFactor.h:59
gtsam::GaussianConditional::shared_ptr
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianConditional.h:46
gtsam::HybridGaussianConditional::negLogConstant
double negLogConstant() const override
Return log normalization constant in negative log space.
Definition: HybridGaussianConditional.h:161
gtsam::tol
const G double tol
Definition: Group.h:79
Conditional.h
Base class for conditional densities.
DecisionTreeFactor.h


gtsam
Author(s):
autogenerated on Wed Sep 25 2024 03:02:32