gtsam 4.2.0
gtsam
Loading...
Searching...
No Matches
GaussianMixture.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
22#include <gtsam/discrete/DecisionTree-inl.h>
30
31namespace gtsam {
32
33class HybridValues;
34
53class GTSAM_EXPORT GaussianMixture
54 : public HybridFactor,
55 public Conditional<HybridFactor, GaussianMixture> {
56 public:
57 using This = GaussianMixture;
58 using shared_ptr = boost::shared_ptr<GaussianMixture>;
61
64
65 private:
66 Conditionals conditionals_;
67 double logConstant_;
68
72 GaussianFactorGraphTree asGaussianFactorGraphTree() const;
73
83 prunerFunc(const DecisionTreeFactor &decisionTree);
84
85 public:
88
90 GaussianMixture() = default;
91
103 GaussianMixture(const KeyVector &continuousFrontals,
104 const KeyVector &continuousParents,
105 const DiscreteKeys &discreteParents,
106 const Conditionals &conditionals);
107
116 GaussianMixture(KeyVector &&continuousFrontals, KeyVector &&continuousParents,
117 DiscreteKeys &&discreteParents,
118 std::vector<GaussianConditional::shared_ptr> &&conditionals);
119
129 const KeyVector &continuousFrontals, const KeyVector &continuousParents,
130 const DiscreteKeys &discreteParents,
131 const std::vector<GaussianConditional::shared_ptr> &conditionals);
132
136
138 bool equals(const HybridFactor &lf, double tol = 1e-9) const override;
139
141 void print(
142 const std::string &s = "GaussianMixture\n",
143 const KeyFormatter &formatter = DefaultKeyFormatter) const override;
144
148
151 const DiscreteValues &discreteValues) const;
152
154 size_t nrComponents() const;
155
157 KeyVector continuousParents() const;
158
161 double logNormalizationConstant() const override { return logConstant_; }
162
167 boost::shared_ptr<GaussianMixtureFactor> likelihood(
168 const VectorValues &given) const;
169
171 const Conditionals &conditionals() const;
172
180 AlgebraicDecisionTree<Key> logProbability(
181 const VectorValues &continuousValues) const;
182
208 double error(const HybridValues &values) const override;
209
217 AlgebraicDecisionTree<Key> error(const VectorValues &continuousValues) const;
218
225 double logProbability(const HybridValues &values) const override;
226
228 double evaluate(const HybridValues &values) const override;
229
231 double operator()(const HybridValues &values) const {
232 return evaluate(values);
233 }
234
242 void prune(const DecisionTreeFactor &decisionTree);
243
253
254 private:
256 bool allFrontalsGiven(const VectorValues &given) const;
257
259 friend class boost::serialization::access;
260 template <class Archive>
261 void serialize(Archive &ar, const unsigned int /*version*/) {
262 ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseFactor);
263 ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseConditional);
264 ar &BOOST_SERIALIZATION_NVP(conditionals_);
265 }
266};
267
269std::set<DiscreteKey> DiscreteKeysAsSet(const DiscreteKeys &discreteKeys);
270
271// traits
272template <>
273struct traits<GaussianMixture> : public Testable<GaussianMixture> {};
274
275} // namespace gtsam
Decision Tree for use in DiscreteFactors.
specialized key for discrete variables
A set of GaussianFactors, indexed by a set of discrete keys.
Base class for conditional densities.
Conditional Gaussian Base class.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition Key.h:86
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:156
std::set< DiscreteKey > DiscreteKeysAsSet(const DiscreteKeys &discreteKeys)
Return the DiscreteKey vector as a set.
Definition GaussianMixture.cpp:221
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
std::function< double(const Assignment< Key > &, double)> prunerFunc(const DecisionTreeFactor &prunedDecisionTree, const HybridConditional &conditional)
Helper function to get the pruner functional.
Definition HybridBayesNet.cpp:66
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
An assignment from labels to value index (size_t).
Definition Assignment.h:37
A discrete probabilistic factor.
Definition DecisionTreeFactor.h:45
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition DiscreteKey.h:39
A map from keys to values.
Definition DiscreteValues.h:34
A conditional of gaussian mixtures indexed by discrete variables, as part of a Bayes Network.
Definition GaussianMixture.h:55
double logNormalizationConstant() const override
The log normalization constant is max of the the individual log-normalization constants.
Definition GaussianMixture.h:161
double operator()(const HybridValues &values) const
Evaluate probability density, sugar.
Definition GaussianMixture.h:231
GaussianMixture()=default
Default constructor, mainly for serialization.
Base class for truly hybrid probabilistic factors.
Definition HybridFactor.h:52
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:38
Definition Conditional.h:64
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition GaussianConditional.h:46
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:74
the error.