Loading...
Searching...
No Matches
gtsam::HybridBayesNet Class Reference
Hybrid

## Detailed Description

A hybrid Bayes net is a collection of HybridConditionals, which can have discrete conditionals, Gaussian mixtures, or pure Gaussian conditionals.

Inheritance diagram for gtsam::HybridBayesNet:

## Public Member Functions

Standard Constructors
| HybridBayesNet ()=default
| Construct empty Bayes net.
Testable
void | print (const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override
| GTSAM-style printing.
bool | equals (const This &fg, double tol=1e-9) const
| GTSAM-style equals.
Standard Interface
void | push_back (boost::shared_ptr< HybridConditional > conditional)
| Add a hybrid conditional using a shared_ptr.
template<class Conditional>
void | emplace_back (Conditional *conditional)
| Preferred: add a conditional directly using a pointer.
void | push_back (HybridConditional &&conditional)
| Add a conditional using a shared_ptr, using implicit conversion to a HybridConditional.
GaussianBayesNet | choose (const DiscreteValues &assignment) const
| Get the Gaussian Bayes Net which corresponds to a specific discrete value assignment.
double | evaluate (const HybridValues &values) const
| Evaluate hybrid probability density for given HybridValues.
double | operator() (const HybridValues &values) const
| Evaluate hybrid probability density for given HybridValues, sugar.
HybridValues | optimize () const
| Solve the HybridBayesNet by first computing the MPE of all the discrete variables and then optimizing the continuous variables based on the MPE assignment.
VectorValues | optimize (const DiscreteValues &assignment) const
| Given the discrete assignment, return the optimized estimate for the selected Gaussian BayesNet.
DecisionTreeFactor::shared_ptr | discreteConditionals () const
| Get all the discrete conditionals as a decision tree factor.
HybridValues | sample (const HybridValues &given, std::mt19937_64 *rng) const
| Sample from an incomplete BayesNet, given missing variables.
HybridValues | sample (std::mt19937_64 *rng) const
| Sample using ancestral sampling.
HybridValues | sample (const HybridValues &given) const
| Sample from an incomplete BayesNet, use default rng.
HybridValues | sample () const
| Sample using ancestral sampling, use default rng.
HybridBayesNet | prune (size_t maxNrLeaves)
| Prune the Hybrid Bayes Net such that we have at most maxNrLeaves leaves.
AlgebraicDecisionTree< Key > | logProbability (const VectorValues &continuousValues) const
| Compute conditional error for each discrete assignment, and return as a tree.
AlgebraicDecisionTree< Key > | evaluate (const VectorValues &continuousValues) const
| Compute unnormalized probability q(μ|M), for each discrete assignment, and return as a tree.
HybridGaussianFactorGraph | toFactorGraph (const VectorValues &measurements) const
| Convert a hybrid Bayes net to a hybrid Gaussian factor graph by converting all conditionals with instantiated measurements into likelihood factors.
double | logProbability (const HybridValues &x) const
Public Member Functions inherited from gtsam::BayesNet< HybridConditional >
void | dot (std::ostream &os, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
| Output to graphviz format, stream version.
std::string | dot (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
| Output to graphviz format string.
void | saveGraph (const std::string &filename, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
| output to file with graphviz format.
double | logProbability (const HybridValues &x) const
double | evaluate (const HybridValues &c) const
size_t | nrFactors () const
| return the number of non-null factors
KeySet | keys () const
| Potentially slow function to return all keys involved, sorted, as a set.
KeyVector | keyVector () const
| Potentially slow function to return all keys involved, sorted, as a vector.
bool | exists (size_t idx) const
| MATLAB interface utility: Checks whether a factor index idx exists in the graph and is a live pointer.
virtual | ~FactorGraph ()=default
| Default destructor Public and virtual so boost serialization can call it.
template<class DERIVEDFACTOR, typename = IsDerived<DERIVEDFACTOR>>
| FactorGraph (std::initializer_list< boost::shared_ptr< DERIVEDFACTOR > > sharedFactors)
| Constructor that takes an initializer list of shared pointers.
void | reserve (size_t size)
| Reserve space for the specified number of factors if you know in advance how many there will be (works like FastVector::reserve).
template<class DERIVEDFACTOR>
IsDerived< DERIVEDFACTOR > | push_back (boost::shared_ptr< DERIVEDFACTOR > factor)
| Add a factor directly using a shared_ptr.
template<class DERIVEDFACTOR, class... Args>
IsDerived< DERIVEDFACTOR > | emplace_shared (Args &&... args)
| Emplace a shared pointer to factor of given type.
template<class DERIVEDFACTOR>
IsDerived< DERIVEDFACTOR > | push_back (const DERIVEDFACTOR &factor)
| Add a factor by value, will be copy-constructed (use push_back with a shared_ptr to avoid the copy).
template<class DERIVEDFACTOR>
IsDerived< DERIVEDFACTOR > | add (boost::shared_ptr< DERIVEDFACTOR > factor)
| add is a synonym for push_back.
template<class DERIVEDFACTOR>
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value, boost::assign::list_inserter< RefCallPushBack< This > > >::type | operator+= (boost::shared_ptr< DERIVEDFACTOR > factor)
| += works well with boost::assign list inserter.
template<typename ITERATOR>
HasDerivedElementType< ITERATOR > | push_back (ITERATOR firstFactor, ITERATOR lastFactor)
| Push back many factors with an iterator over shared_ptr (factors are not copied).
template<typename ITERATOR>
HasDerivedValueType< ITERATOR > | push_back (ITERATOR firstFactor, ITERATOR lastFactor)
| Push back many factors with an iterator (factors are copied).
template<typename CONTAINER>
HasDerivedElementType< CONTAINER > | push_back (const CONTAINER &container)
| Push back many factors as shared_ptr's in a container (factors are not copied).
template<typename CONTAINER>
HasDerivedValueType< CONTAINER > | push_back (const CONTAINER &container)
| Push back non-pointer objects in a container (factors are copied).
template<class FACTOR_OR_CONTAINER>
void | add (const FACTOR_OR_CONTAINER &factorOrContainer)
| Add a factor or container of factors, including STL collections, BayesTrees, etc.
template<class FACTOR_OR_CONTAINER>
boost::assign::list_inserter< CRefCallPushBack< This > > | operator+= (const FACTOR_OR_CONTAINER &factorOrContainer)
| Add a factor or container of factors, including STL collections, BayesTrees, etc.
template<class CLIQUE>
std::enable_if< std::is_base_of< This, typenameCLIQUE::FactorGraphType >::value >::type | push_back (const BayesTree< CLIQUE > &bayesTree)
| Push back a BayesTree as a collection of factors.
template<typename CONTAINER, typename = HasDerivedElementType<CONTAINER>>
FactorIndices | add_factors (const CONTAINER &factors, bool useEmptySlots=false)
| Add new factors to a factor graph and returns a list of new factor indices, optionally finding and reusing empty factor slots.
bool | equals (const This &fg, double tol=1e-9) const
| Check equality up to tolerance.
size_t | size () const
| return the number of factors (including any null factors set by remove() ).
bool | empty () const
| Check if the graph is empty (null factors set by remove() will cause this to return false).
const sharedFactor | at (size_t i) const
| Get a specific factor by index (this checks array bounds and may throw an exception, as opposed to operator[] which does not).
sharedFactor & | at (size_t i)
| Get a specific factor by index (this checks array bounds and may throw an exception, as opposed to operator[] which does not).
const sharedFactor | operator[] (size_t i) const
| Get a specific factor by index (this does not check array bounds, as opposed to at() which does).
sharedFactor & | operator[] (size_t i)
| Get a specific factor by index (this does not check array bounds, as opposed to at() which does).
const_iterator | begin () const
| Iterator to beginning of factors.
const_iterator | end () const
| Iterator to end of factors.
sharedFactor | front () const
| Get the first factor.
sharedFactor | back () const
| Get the last factor.
double | error (const HybridValues &values) const
| Add error for all factors.
iterator | begin ()
| non-const STL-style begin()
iterator | end ()
| non-const STL-style end()
virtual void | resize (size_t size)
| Directly resize the number of factors in the graph.
void | remove (size_t i)
| delete factor without re-arranging indexes by inserting a nullptr pointer
void | replace (size_t index, sharedFactor factor)
| replace a factor by index
iterator | erase (iterator item)
| Erase factor and rearrange other factors to take up the empty space.
iterator | erase (iterator first, iterator last)
| Erase factors and rearrange other factors to take up the empty space.
void | dot (std::ostream &os, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
| Output to graphviz format, stream version.
std::string | dot (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
| Output to graphviz format string.
void | saveGraph (const std::string &filename, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
| output to file with graphviz format.

## Public Types

using | Base = BayesNet<HybridConditional>
using | This = HybridBayesNet
using | ConditionalType = HybridConditional
using | shared_ptr = boost::shared_ptr<HybridBayesNet>
using | sharedConditional = boost::shared_ptr<ConditionalType>
Public Types inherited from gtsam::BayesNet< HybridConditional >
typedef boost::shared_ptr< HybridConditional > | sharedConditional
| A shared pointer to a conditional.
Public Types inherited from gtsam::FactorGraph< FACTOR >
typedef FACTOR | FactorType
| factor type
typedef boost::shared_ptr< FACTOR > | sharedFactor
| Shared pointer to a factor.
typedef sharedFactor | value_type
typedef FastVector< sharedFactor >::iterator | iterator
typedef FastVector< sharedFactor >::const_iterator | const_iterator

## Friends

class | boost::serialization::access
| Serialization function.

## Additional Inherited Members

Protected Member Functions inherited from gtsam::BayesNet< HybridConditional >
| BayesNet ()
| Default constructor as an empty BayesNet.
| BayesNet (ITERATOR firstConditional, ITERATOR lastConditional)
| Construct from iterator over conditionals.
| BayesNet (std::initializer_list< sharedConditional > conditionals)
| Constructor that takes an initializer list of shared pointers.
Protected Member Functions inherited from gtsam::FactorGraph< FACTOR >
bool | isEqual (const FactorGraph &other) const
| Check exact equality of the factor pointers. Useful for derived ==.
| FactorGraph ()
| Default constructor.
template<typename ITERATOR>
| FactorGraph (ITERATOR firstFactor, ITERATOR lastFactor)
| Constructor from iterator over factors (shared_ptr or plain objects).
template<class CONTAINER>
| FactorGraph (const CONTAINER &factors)
| Construct from container of factors (shared_ptr or plain objects).
Protected Attributes inherited from gtsam::FactorGraph< FACTOR >
FastVector< sharedFactor > | factors_
| concept check, makes sure FACTOR defines print and equals

## Member Function Documentation

## choose()

GaussianBayesNet gtsam::HybridBayesNet::choose | ( | const DiscreteValues & | assignment | ) | const

Get the Gaussian Bayes Net which corresponds to a specific discrete value assignment.

Parameters

  assignment | The discrete value assignment for the discrete keys.

Returns
  GaussianBayesNet

## discreteConditionals()

DecisionTreeFactor::shared_ptr gtsam::HybridBayesNet::discreteConditionals | ( |  | ) | const

Get all the discrete conditionals as a decision tree factor.

Returns
  DecisionTreeFactor::shared_ptr

## emplace_back()

template<class Conditional>

void gtsam::HybridBayesNet::emplace_back | ( | Conditional * | conditional | ) |

inline

Preferred: add a conditional directly using a pointer.

Examples: hbn.emplace_back(new GaussianMixture(...))); hbn.emplace_back(new GaussianConditional(...))); hbn.emplace_back(new DiscreteConditional(...)));

## evaluate()

AlgebraicDecisionTree< Key > gtsam::HybridBayesNet::evaluate | ( | const VectorValues & | continuousValues | ) | const

Compute unnormalized probability q(μ|M), for each discrete assignment, and return as a tree.

q(μ|M) is the unnormalized probability at the MLE point μ, conditioned on the discrete variables.

Parameters

  continuousValues | Continuous values at which to compute the probability.

Returns
  AlgebraicDecisionTree<Key>

## logProbability()

AlgebraicDecisionTree< Key > gtsam::HybridBayesNet::logProbability | ( | const VectorValues & | continuousValues | ) | const

Compute conditional error for each discrete assignment, and return as a tree.

Parameters

  continuousValues | Continuous values at which to compute the error.

Returns
  AlgebraicDecisionTree<Key>

## optimize() [1/2]

HybridValues gtsam::HybridBayesNet::optimize | ( |  | ) | const

Solve the HybridBayesNet by first computing the MPE of all the discrete variables and then optimizing the continuous variables based on the MPE assignment.

Returns
  HybridValues

## optimize() [2/2]

VectorValues gtsam::HybridBayesNet::optimize | ( | const DiscreteValues & | assignment | ) | const

Given the discrete assignment, return the optimized estimate for the selected Gaussian BayesNet.

Parameters

  assignment | An assignment of discrete values.

Returns
  Values

## print()

void gtsam::HybridBayesNet::print | ( | const std::string & | s = "",
|  | const KeyFormatter & | formatter = DefaultKeyFormatter ) const

override virtual

GTSAM-style printing.

Reimplemented from gtsam::BayesNet< HybridConditional >.

## push_back() [1/2]

void gtsam::HybridBayesNet::push_back | ( | boost::shared_ptr< HybridConditional > | conditional | ) |

inline

Add a hybrid conditional using a shared_ptr.

This is the "native" push back, as this class stores hybrid conditionals.

## push_back() [2/2]

void gtsam::HybridBayesNet::push_back | ( | HybridConditional && | conditional | ) |

inline

Add a conditional using a shared_ptr, using implicit conversion to a HybridConditional.

This is useful when you create a conditional shared pointer as you need it somewhere else.

Example: auto shared_ptr_to_a_conditional = boost::make_shared<GaussianMixture>(...); hbn.push_back(shared_ptr_to_a_conditional);

## sample() [1/4]

HybridValues gtsam::HybridBayesNet::sample | ( |  | ) | const

Sample using ancestral sampling, use default rng.

Returns
  HybridValues

## sample() [2/4]

HybridValues gtsam::HybridBayesNet::sample | ( | const HybridValues & | given | ) | const

Sample from an incomplete BayesNet, use default rng.

Parameters

  given | Values of missing variables.

Returns
  HybridValues

## sample() [3/4]

HybridValues gtsam::HybridBayesNet::sample | ( | const HybridValues & | given,
|  | std::mt19937_64 * | rng ) const

Sample from an incomplete BayesNet, given missing variables.

Example: std::mt19937_64 rng(42); VectorValues given = ...; auto sample = bn.sample(given, &rng);

Parameters

  given | Values of missing variables.
  rng | The pseudo-random number generator.

Returns
  HybridValues

## sample() [4/4]

HybridValues gtsam::HybridBayesNet::sample | ( | std::mt19937_64 * | rng | ) | const

Sample using ancestral sampling.

Example: std::mt19937_64 rng(42); auto sample = bn.sample(&rng);

Parameters

  rng | The pseudo-random number generator.

Returns
  HybridValues

The documentation for this class was generated from the following files:

- /build/gtsam-gchP9J/gtsam-4.2.2+dfsg/gtsam/hybrid/HybridBayesNet.h
- /build/gtsam-gchP9J/gtsam-4.2.2+dfsg/gtsam/hybrid/HybridBayesNet.cpp