gtsam 4.1.1
gtsam
|
A Bayes tree representing a Gaussian density.
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. | |
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 |
0.5 * sum of squared Mahalanobis distances. | |
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 Nodes & | nodes () const |
return nodes | |
const sharedNode | operator[] (Key j) const |
Access node by variable. | |
const Roots & | roots () const |
return root cliques | |
const sharedClique & | clique (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. | |
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< This > | shared_ptr |
Public Types inherited from gtsam::BayesTree< GaussianBayesTreeClique > | |
typedef GaussianBayesTreeClique | Clique |
The clique type, normally BayesTreeClique. | |
typedef boost::shared_ptr< Clique > | sharedClique |
Shared pointer to a clique. | |
typedef Clique | Node |
Synonym for Clique (TODO: remove) | |
typedef sharedClique | sharedNode |
Synonym for sharedClique (TODO: remove) | |
typedef CLIQUE::ConditionalType | ConditionalType |
typedef boost::shared_ptr< ConditionalType > | sharedConditional |
typedef CLIQUE::BayesNetType | BayesNetType |
typedef boost::shared_ptr< BayesNetType > | sharedBayesNet |
typedef CLIQUE::FactorType | FactorType |
typedef boost::shared_ptr< FactorType > | sharedFactor |
typedef CLIQUE::FactorGraphType | FactorGraphType |
typedef boost::shared_ptr< FactorGraphType > | sharedFactorGraph |
typedef FactorGraphType::Eliminate | Eliminate |
typedef CLIQUE::EliminationTraitsType | EliminationTraitsType |
typedef FastList< sharedClique > | Cliques |
A convenience class for a list of shared cliques. | |
typedef ConcurrentMap< Key, sharedClique > | Nodes |
Map from keys to Clique. | |
typedef FastVector< sharedClique > | Roots |
Root cliques. | |
Additional Inherited Members | |
Protected Types inherited from gtsam::BayesTree< GaussianBayesTreeClique > | |
typedef BayesTree< GaussianBayesTreeClique > | This |
typedef boost::shared_ptr< This > | shared_ptr |
Protected Member Functions inherited from gtsam::BayesTree< GaussianBayesTreeClique > | |
This & | operator= (const This &other) |
Assignment operator. | |
BayesTree () | |
Create an empty Bayes Tree. | |
BayesTree (const This &other) | |
Copy constructor. | |
void | getCliqueData (sharedClique clique, BayesTreeCliqueData *stats) 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. | |
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.
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) \).
x0 | The center about which to compute the gradient |
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&).
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.
Matrix gtsam::GaussianBayesTree::marginalCovariance | ( | Key | key | ) | const |
Return the marginal on the requested variable as a covariance matrix.
See also marginalFactor().
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)} \]