gtsam  4.0.0
gtsam
gtsam::GaussianBayesTree Class Reference

Detailed Description

A Bayes tree representing a Gaussian density.

+ Inheritance diagram for gtsam::GaussianBayesTree:

Public Member Functions

 GaussianBayesTree ()
 Default constructor, creates an empty Bayes tree.
 
bool equals (const This &other, double tol=1e-9) const
 Check equality.
 
VectorValues optimize () const
 Recursively optimize the BayesTree to produce a vector solution. More...
 
VectorValues optimizeGradientSearch () const
 Optimize along the gradient direction, with a closed-form computation to perform the line search. More...
 
VectorValues gradient (const VectorValues &x0) const
 Compute the gradient of the energy function, \( \nabla_{x=x_0} \left\Vert \Sigma^{-1} R x - d \right\Vert^2 \), centered around \( x = x_0 \). More...
 
VectorValues gradientAtZero () const
 Compute the gradient of the energy function, \( \nabla_{x=0} \left\Vert \Sigma^{-1} R x - d \right\Vert^2 \), centered around zero. More...
 
double error (const VectorValues &x) const
 Mahalanobis norm error. More...
 
double determinant () const
 Computes the determinant of a GassianBayesTree, as if the Bayes tree is reorganized into a matrix. More...
 
double logDeterminant () const
 Computes the determinant of a GassianBayesTree, as if the Bayes tree is reorganized into a matrix. More...
 
Matrix marginalCovariance (Key key) const
 Return the marginal on the requested variable as a covariance matrix. More...
 
- Public Member Functions inherited from gtsam::BayesTree< GaussianBayesTreeClique >
size_t size () const
 number of cliques
 
bool empty () const
 Check if there are any cliques in the tree.
 
const Nodesnodes () const
 return nodes
 
const sharedNode operator[] (Key j) const
 Access node by variable.
 
const Rootsroots () const
 return root cliques
 
const sharedCliqueclique (Key j) const
 alternate syntax for matlab: find the clique that contains the variable with Key j
 
BayesTreeCliqueData getCliqueData () const
 Gather data on all cliques.
 
size_t numCachedSeparatorMarginals () const
 Collect number of cliques with cached separator marginals.
 
sharedConditional marginalFactor (Key j, const Eliminate &function=EliminationTraitsType::DefaultEliminate) const
 Return marginal on any variable. More...
 
sharedFactorGraph joint (Key j1, Key j2, const Eliminate &function=EliminationTraitsType::DefaultEliminate) const
 return joint on two variables Limitation: can only calculate joint if cliques are disjoint or one of them is root
 
sharedBayesNet jointBayesNet (Key j1, Key j2, const Eliminate &function=EliminationTraitsType::DefaultEliminate) const
 return joint on two variables as a BayesNet Limitation: can only calculate joint if cliques are disjoint or one of them is root
 
void saveGraph (const std::string &s, const KeyFormatter &keyFormatter=DefaultKeyFormatter) const
 Read only with side effects. More...
 
Key findParentClique (const CONTAINER &parents) const
 Find parent clique of a conditional. More...
 
void clear ()
 Remove all nodes.
 
void deleteCachedShortcuts ()
 Clear all shortcut caches - use before timing on marginal calculation to avoid residual cache data.
 
void removePath (sharedClique clique, BayesNetType &bn, Cliques &orphans)
 Remove path from clique to root and return that path as factors plus a list of orphaned subtree roots. More...
 
void removeTop (const KeyVector &keys, BayesNetType &bn, Cliques &orphans)
 Given a list of indices, turn "contaminated" part of the tree back into a factor graph. More...
 
Cliques removeSubtree (const sharedClique &subtree)
 Remove the requested subtree. More...
 
void insertRoot (const sharedClique &subtree)
 Insert a new subtree with known parent clique. More...
 
void addClique (const sharedClique &clique, const sharedClique &parent_clique=sharedClique())
 add a clique (top down)
 
void addFactorsToGraph (FactorGraph< FactorType > &graph) const
 Add all cliques in this BayesTree to the specified factor graph.
 
void print (const std::string &s="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const
 print
 

Public Types

typedef GaussianBayesTree This
 
typedef boost::shared_ptr< Thisshared_ptr
 
- Public Types inherited from gtsam::BayesTree< GaussianBayesTreeClique >
typedef GaussianBayesTreeClique Clique
 The clique type, normally BayesTreeClique.
 
typedef boost::shared_ptr< CliquesharedClique
 Shared pointer to a clique.
 
typedef Clique Node
 Synonym for Clique (TODO: remove)
 
typedef sharedClique sharedNode
 Synonym for sharedClique (TODO: remove)
 
typedef GaussianBayesTreeClique ::ConditionalType ConditionalType
 
typedef boost::shared_ptr< ConditionalType > sharedConditional
 
typedef GaussianBayesTreeClique ::BayesNetType BayesNetType
 
typedef boost::shared_ptr< BayesNetType > sharedBayesNet
 
typedef GaussianBayesTreeClique ::FactorType FactorType
 
typedef boost::shared_ptr< FactorType > sharedFactor
 
typedef GaussianBayesTreeClique ::FactorGraphType FactorGraphType
 
typedef boost::shared_ptr< FactorGraphType > sharedFactorGraph
 
typedef FactorGraphType::Eliminate Eliminate
 
typedef GaussianBayesTreeClique ::EliminationTraitsType EliminationTraitsType
 
typedef FastList< sharedCliqueCliques
 A convenience class for a list of shared cliques.
 
typedef ConcurrentMap< Key, sharedCliqueNodes
 Map from keys to Clique.
 

Additional Inherited Members

- Protected Types inherited from gtsam::BayesTree< GaussianBayesTreeClique >
typedef BayesTree< GaussianBayesTreeCliqueThis
 
typedef boost::shared_ptr< Thisshared_ptr
 
typedef FastVector< sharedCliqueRoots
 Root cliques.
 
- Protected Member Functions inherited from gtsam::BayesTree< GaussianBayesTreeClique >
Thisoperator= (const This &other)
 Assignment operator.
 
 BayesTree ()
 Create an empty Bayes Tree.
 
 BayesTree (const This &other)
 Copy constructor.
 
void getCliqueData (BayesTreeCliqueData &stats, sharedClique clique) const
 Gather data on a single clique.
 
void saveGraph (std::ostream &s, sharedClique clique, const KeyFormatter &keyFormatter, int parentnum=0) const
 private helper method for saving the Tree to a text file in GraphViz format
 
void removeClique (sharedClique clique)
 remove a clique: warning, can result in a forest
 
void fillNodesIndex (const sharedClique &subtree)
 Fill the nodes index for a subtree.
 
bool equals (const This &other, double tol=1e-9) const
 check equality
 
- Protected Attributes inherited from gtsam::BayesTree< GaussianBayesTreeClique >
Nodes nodes_
 Map from indices to Clique.
 
Roots roots_
 Root cliques.
 

Member Function Documentation

◆ determinant()

double gtsam::GaussianBayesTree::determinant ( ) const

Computes the determinant of a GassianBayesTree, as if the Bayes tree is reorganized into a matrix.

A GassianBayesTree is equivalent to an upper triangular matrix, and for an upper triangular matrix determinant is the product of the diagonal elements. Instead of actually multiplying we add the logarithms of the diagonal elements and take the exponent at the end because this is more numerically stable.

◆ error()

double gtsam::GaussianBayesTree::error ( const VectorValues x) const

Mahalanobis norm error.

◆ gradient()

VectorValues gtsam::GaussianBayesTree::gradient ( const VectorValues x0) const

Compute the gradient of the energy function, \( \nabla_{x=x_0} \left\Vert \Sigma^{-1} R x - d \right\Vert^2 \), centered around \( x = x_0 \).

The gradient is \( R^T(Rx-d) \).

Parameters
x0The center about which to compute the gradient
Returns
The gradient as a VectorValues

◆ gradientAtZero()

VectorValues gtsam::GaussianBayesTree::gradientAtZero ( ) const

Compute the gradient of the energy function, \( \nabla_{x=0} \left\Vert \Sigma^{-1} R x - d \right\Vert^2 \), centered around zero.

The gradient about zero is \( -R^T d \). See also gradient(const GaussianBayesNet&, const VectorValues&).

Returns
A VectorValues storing the gradient.

◆ logDeterminant()

double gtsam::GaussianBayesTree::logDeterminant ( ) const

Computes the determinant of a GassianBayesTree, as if the Bayes tree is reorganized into a matrix.

A GassianBayesTree is equivalent to an upper triangular matrix, and for an upper triangular matrix determinant is the product of the diagonal elements. Instead of actually multiplying we add the logarithms of the diagonal elements and take the exponent at the end because this is more numerically stable.

◆ marginalCovariance()

Matrix gtsam::GaussianBayesTree::marginalCovariance ( Key  key) const

Return the marginal on the requested variable as a covariance matrix.

See also marginalFactor().

◆ optimize()

VectorValues gtsam::GaussianBayesTree::optimize ( ) const

Recursively optimize the BayesTree to produce a vector solution.

◆ optimizeGradientSearch()

VectorValues gtsam::GaussianBayesTree::optimizeGradientSearch ( ) const

Optimize along the gradient direction, with a closed-form computation to perform the line search.

The gradient is computed about \( \delta x=0 \).

This function returns \( \delta x \) that minimizes a reparametrized problem. The error function of a GaussianBayesNet is

\[ f(\delta x) = \frac{1}{2} |R \delta x - d|^2 = \frac{1}{2}d^T d - d^T R \delta x + \frac{1}{2} \delta x^T R^T R \delta x \]

with gradient and Hessian

\[ g(\delta x) = R^T(R\delta x - d), \qquad G(\delta x) = R^T R. \]

This function performs the line search in the direction of the gradient evaluated at \( g = g(\delta x = 0) \) with step size \( \alpha \) that minimizes \( f(\delta x = \alpha g) \):

\[ f(\alpha) = \frac{1}{2} d^T d + g^T \delta x + \frac{1}{2} \alpha^2 g^T G g \]

Optimizing by setting the derivative to zero yields \( \hat \alpha = (-g^T g) / (g^T G g) \). For efficiency, this function evaluates the denominator without computing the Hessian \( G \), returning

\[ \delta x = \hat\alpha g = \frac{-g^T g}{(R g)^T(R g)} \]


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