diff --git a/gtsam/hybrid/HybridBayesNet.cpp b/gtsam/hybrid/HybridBayesNet.cpp index 0db1b0c48..3b5ab5b80 100644 --- a/gtsam/hybrid/HybridBayesNet.cpp +++ b/gtsam/hybrid/HybridBayesNet.cpp @@ -38,21 +38,17 @@ bool HybridBayesNet::equals(const This &bn, double tol) const { } /* ************************************************************************* */ -DecisionTreeFactor::shared_ptr HybridBayesNet::discreteConditionals() const { - AlgebraicDecisionTree discreteProbs; - +DiscreteConditional::shared_ptr HybridBayesNet::discreteConditionals() const { // The canonical decision tree factor which will get // the discrete conditionals added to it. - DecisionTreeFactor discreteProbsFactor; + DiscreteConditional discreteProbs; for (auto &&conditional : *this) { if (conditional->isDiscrete()) { - // Convert to a DecisionTreeFactor and add it to the main factor. - DecisionTreeFactor f(*conditional->asDiscrete()); - discreteProbsFactor = discreteProbsFactor * f; + discreteProbs = discreteProbs * (*conditional->asDiscrete()); } } - return std::make_shared(discreteProbsFactor); + return std::make_shared(discreteProbs); } /* ************************************************************************* */ @@ -146,8 +142,8 @@ std::function &, double)> prunerFunc( /* ************************************************************************* */ void HybridBayesNet::updateDiscreteConditionals( const DecisionTreeFactor &prunedDiscreteProbs) { - //TODO(Varun) Should prune the joint conditional, maybe during elimination? - // Loop with index since we need it later. + // TODO(Varun) Should prune the joint conditional, maybe during elimination? + // Loop with index since we need it later. for (size_t i = 0; i < this->size(); i++) { HybridConditional::shared_ptr conditional = this->at(i); if (conditional->isDiscrete()) { @@ -179,7 +175,7 @@ void HybridBayesNet::updateDiscreteConditionals( HybridBayesNet HybridBayesNet::prune(size_t maxNrLeaves) { // Get the decision tree of only the discrete keys gttic_(HybridBayesNet_PruneDiscreteConditionals); - DecisionTreeFactor::shared_ptr discreteConditionals = + DiscreteConditional::shared_ptr discreteConditionals = this->discreteConditionals(); const DecisionTreeFactor prunedDiscreteProbs = discreteConditionals->prune(maxNrLeaves); diff --git a/gtsam/hybrid/HybridBayesNet.h b/gtsam/hybrid/HybridBayesNet.h index 23fc4d5d3..19e88d754 100644 --- a/gtsam/hybrid/HybridBayesNet.h +++ b/gtsam/hybrid/HybridBayesNet.h @@ -139,9 +139,9 @@ class GTSAM_EXPORT HybridBayesNet : public BayesNet { /** * @brief Get all the discrete conditionals as a decision tree factor. * - * @return DecisionTreeFactor::shared_ptr + * @return DiscreteConditional::shared_ptr */ - DecisionTreeFactor::shared_ptr discreteConditionals() const; + DiscreteConditional::shared_ptr discreteConditionals() const; /** * @brief Sample from an incomplete BayesNet, given missing variables.