fix creation of DiscreteConditional

release/4.3a0
Varun Agrawal 2024-12-31 17:07:25 -05:00
parent 094b76df2d
commit bf4c0bd72d
2 changed files with 5 additions and 4 deletions

View File

@ -351,8 +351,7 @@ discreteElimination(const HybridGaussianFactorGraph &factors,
// All the discrete variables should form a single clique,
// so we can sum out on all the variables as frontals.
// This should give an empty separator.
Ordering orderedKeys(product.keys());
TableFactor::shared_ptr sum = product.sum(orderedKeys);
TableFactor::shared_ptr sum = product.sum(frontalKeys);
#if GTSAM_HYBRID_TIMING
gttoc_(EliminateDiscreteSum);
#endif
@ -361,8 +360,9 @@ discreteElimination(const HybridGaussianFactorGraph &factors,
gttic_(EliminateDiscreteFormDiscreteConditional);
#endif
// Finally, get the conditional
auto conditional =
std::make_shared<DiscreteConditional>(product, *sum, orderedKeys);
auto c = product / (*sum);
auto conditional = std::make_shared<DiscreteConditional>(
frontalKeys.size(), c.toDecisionTreeFactor());
#if GTSAM_HYBRID_TIMING
gttoc_(EliminateDiscreteFormDiscreteConditional);
#endif

View File

@ -162,6 +162,7 @@ TEST(GaussianMixture, GaussianMixtureModel2) {
EXPECT_DOUBLES_EQUAL(expected, posterior2(m1Assignment), 1e-8);
}
}
/* ************************************************************************* */
int main() {
TestResult tr;