Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

HybridBayesNet

Open In Colab

A HybridBayesNet represents a directed graphical model (Bayes Net) specifically designed for hybrid systems. It is a collection of gtsam.HybridConditional objects, ordered according to an elimination sequence.

It extends gtsam.BayesNet<HybridConditional> and allows representing the joint probability distribution P(X,M)P(X, M) over continuous variables XX and discrete variables MM as a product of conditional probabilities:

P(X,M)=∏iP(Frontali∣Parentsi)P(X, M) = \prod_i P(\text{Frontal}_i | \text{Parents}_i)

where each conditional P(Frontali∣Parentsi)P(\text{Frontal}_i | \text{Parents}_i) is stored as a HybridConditional. This structure allows for representing complex dependencies, such as continuous variables conditioned on discrete modes (P(X∣M)P(X|M)) alongside purely discrete (P(M)P(M)) or purely continuous (P(X)P(X)) relationships.

HybridBayesNet objects are typically obtained by eliminating a HybridGaussianFactorGraph.

Creating a HybridBayesNet

While they can be constructed manually by adding HybridConditionals, they are more commonly obtained via elimination of a HybridGaussianFactorGraph.

Manually Constructed HybridBayesNet:
Loading...

Original HybridGaussianFactorGraph for Elimination:
Loading...

HybridBayesNet from Elimination:
Loading...

Operations on HybridBayesNet

HybridBayesNet allows evaluating the joint probability, sampling, optimizing (finding the MAP state), and extracting marginal or conditional distributions.


LogProbability P(X0=0.1, X1=0.2, D0=0): -2.160749387689685
Probability P(X0=0.1, X1=0.2, D0=0): 0.11523873018620859

Sampled HybridValues:
HybridValues: 
  Continuous: 2 elements
  x0: 6.29382
  x1: 6.6918
  Discrete: (d0, 1)
  Nonlinear
Values with 0 values:

MAP Solution (Optimize):
HybridValues: 
  Continuous: 2 elements
  x0: 0
  x1: 0
  Discrete: (d0, 0)
  Nonlinear
Values with 0 values:

MPE Discrete Assignment:
DiscreteValues{7205759403792793600: 0}

Optimized Continuous Solution for D0=1:
VectorValues: 2 elements
  x0: 5
  x1: 5

Discrete Marginal P(M):
DiscreteBayesNet
 
size: 1
conditional 0:  P( d0 ):
 f[ (d0,2), ]
(d0, 0) | 0.731343   | 0
(d0, 1) | 0.268657   | 1
number of nnzs: 2


Gaussian Conditional P(X | D0=0):

size: 2
conditional 0:  p(x1 | x0)
  R = [ 1 ]
  S[x0] = [ -1 ]
  d = [ 0 ]
  logNormalizationConstant: -0.918939
  No noise model
conditional 1:  p(x0)
  R = [ 1 ]
  d = [ 0 ]
  mean: 1 elements
  x0: 0
  logNormalizationConstant: -0.918939
  No noise model

Advanced Operations (errorTree, discretePosterior, prune)


Error Tree (Unnormalized Log Posterior Log P'(M|x)) for x0=0.5, x1=1.0:
AlgebraicDecisionTreeKey
 Choice(d0) 
AlgebraicDecisionTreeKey
 0 Leaf 0.56287232
AlgebraicDecisionTreeKey
 1 Leaf 4.663718

Discrete Posterior Tree P(M|x) for x0=0.5, x1=1.0:
AlgebraicDecisionTreeKey
 Choice(d0) 
AlgebraicDecisionTreeKey
 0 Leaf 0.98371106
AlgebraicDecisionTreeKey
 1 Leaf 0.016288942

Pruned HybridBayesNet (max_leaves=1):
HybridBayesNet
 
size: 2
conditional 0: p(x1 | x0)
  R = [ 1 ]
  S[x0] = [ -1 ]
  d = [ 0 ]
  logNormalizationConstant: -0.918939
  No noise model
conditional 1: p(x0)
  R = [ 1 ]
  d = [ 0 ]
  mean: 1 elements
  x0: 0
  logNormalizationConstant: -0.918939
  No noise model
Loading...