diff --git a/gtsam/hybrid/HybridBayesNet.cpp b/gtsam/hybrid/HybridBayesNet.cpp index 787c91a0d..bca50a902 100644 --- a/gtsam/hybrid/HybridBayesNet.cpp +++ b/gtsam/hybrid/HybridBayesNet.cpp @@ -138,7 +138,6 @@ GaussianBayesNet HybridBayesNet::choose( } else if (factors_.at(idx)->isContinuous()) { // If continuous only, add gaussian conditional. - factors_.at(idx)->print(); gbn.push_back((this->atGaussian(idx))); } else if (factors_.at(idx)->isDiscrete()) { diff --git a/gtsam/hybrid/HybridBayesTree.cpp b/gtsam/hybrid/HybridBayesTree.cpp index d0f6f2fe2..49ae0bd87 100644 --- a/gtsam/hybrid/HybridBayesTree.cpp +++ b/gtsam/hybrid/HybridBayesTree.cpp @@ -57,12 +57,14 @@ HybridValues HybridBayesTree::optimize() const { added_keys.insert(added_keys.end(), conditional->frontals().begin(), conditional->frontals().end()); - if (conditional->isHybrid()) { - // If conditional is hybrid, add it to a Hybrid Bayes net. - hbn.push_back(conditional); - } else if (conditional->isDiscrete()) { - // Else if discrete, we use it to compute the MPE + if (conditional->isDiscrete()) { + // If discrete, we use it to compute the MPE dbn.push_back(conditional->asDiscreteConditional()); + + } else { + // Else conditional is hybrid or continuous-only, + // so we directly add it to the Hybrid Bayes net. + hbn.push_back(conditional); } } } @@ -109,6 +111,10 @@ VectorValues HybridBayesTree::optimize(const DiscreteValues& assignment) const { (*gm)(assignment); gbn.push_back(gaussian_conditional); + + } else if (conditional->isContinuous()) { + // If conditional is Gaussian, we simply add it to the Bayes net. + gbn.push_back(conditional->asGaussian()); } } }