23#include <gtsam/discrete/DecisionTree-inl.h>
57 public Conditional<HybridGaussianFactor, HybridGaussianConditional> {
60 using shared_ptr = std::shared_ptr<This>;
70 double negLogConstant_;
91 const std::vector<GaussianConditional::shared_ptr> &
conditionals);
103 const std::vector<std::pair<Vector, double>> ¶meters);
117 const std::vector<std::pair<Vector, double>> ¶meters);
133 const Matrix &A1,
Key parent1,
const Matrix &A2,
Key parent2,
134 const std::vector<std::pair<Vector, double>> ¶meters);
171 const std::string &s =
"HybridGaussianConditional\n",
185 return choose(discreteValues);
189 size_t nrComponents()
const;
208 std::shared_ptr<HybridGaussianFactor> likelihood(
213 const Conditionals conditionals()
const;
221 double logProbability(
const HybridValues &values)
const override;
224 double evaluate(
const HybridValues &values)
const override;
238 HybridGaussianConditional::shared_ptr prune(
245 std::shared_ptr<Factor> restrict(
256 Helper &&helper,
bool pruned =
false);
261#if GTSAM_ENABLE_BOOST_SERIALIZATION
263 friend class boost::serialization::access;
264 template <
class Archive>
265 void serialize(Archive &ar,
const unsigned int ) {
266 ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseFactor);
267 ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseConditional);
278 :
public Testable<HybridGaussianConditional> {};
specialized key for discrete variables
Decision Tree for use in DiscreteFactors.
A set of GaussianFactors, indexed by a set of discrete keys.
Base class for conditional densities.
Conditional Gaussian Base class.
std::pair< Key, size_t > DiscreteKey
Key type for discrete variables.
Definition DiscreteKey.h:38
Global functions in a separate testing namespace.
Definition chartTesting.h:28
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition Key.cpp:30
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition Key.h:91
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::set< DiscreteKey > DiscreteKeysAsSet(const DiscreteKeys &discreteKeys)
Return the DiscreteKey vector as a set.
Definition HybridGaussianConditional.cpp:309
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:43
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:152
a decision tree is a function from assignments to values.
Definition DecisionTree.h:62
Discrete Conditional Density Derives from DecisionTreeFactor.
Definition DiscreteConditional.h:40
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition DiscreteKey.h:41
A map from keys to values.
Definition DiscreteValues.h:34
Base class for truly hybrid probabilistic factors.
Definition HybridFactor.h:51
A conditional of gaussian conditionals indexed by discrete variables, as part of a Bayes Network.
Definition HybridGaussianConditional.h:57
HybridGaussianConditional()=default
Default constructor, mainly for serialization.
bool pruned() const
Return true if the conditional has already been pruned.
Definition HybridGaussianConditional.h:242
DecisionTree< Key, GaussianConditional::shared_ptr > Conditionals
typedef for Decision Tree of Gaussian Conditionals
Definition HybridGaussianConditional.h:65
void print(const std::string &s="HybridGaussianConditional\n", const KeyFormatter &formatter=DefaultKeyFormatter) const override
Print utility.
Definition HybridGaussianConditional.cpp:228
bool equals(const HybridFactor &lf, double tol=1e-9) const override
Test equality with base HybridFactor.
Definition HybridGaussianConditional.cpp:210
double operator()(const HybridValues &values) const
Evaluate probability density, sugar.
Definition HybridGaussianConditional.h:227
GaussianConditional::shared_ptr operator()(const DiscreteValues &discreteValues) const
Syntactic sugar for choose.
Definition HybridGaussianConditional.h:183
double negLogConstant() const override
Return log normalization constant in negative log space.
Definition HybridGaussianConditional.h:202
GaussianConditional::shared_ptr choose(const DiscreteValues &discreteValues) const
Return the conditional Gaussian for the given discrete assignment.
Definition HybridGaussianConditional.cpp:192
double evaluate(const HybridValues &values) const override
Calculate probability density for given values.
Definition HybridGaussianConditional.cpp:360
const Conditionals conditionals() const
Get Conditionals DecisionTree (dynamic cast from factors).
Definition HybridGaussianConditional.cpp:176
HybridGaussianFactor()=default
Default constructor, mainly for serialization.
DecisionTree< Key, GaussianFactorValuePair > FactorValuePairs
typedef for Decision Tree of Gaussian factors and arbitrary value.
Definition HybridGaussianFactor.h:69
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:37
Conditional()
Definition Conditional.h:108
std::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:73