Test sum-product in discrete factor graph up to scale.

release/4.3a0
Kevin 2023-02-11 20:00:26 -05:00
parent 70fa568131
commit 9fa2d30362
1 changed files with 12 additions and 4 deletions

View File

@ -108,7 +108,14 @@ TEST(DiscreteFactorGraph, test) {
// Test EliminateDiscrete // Test EliminateDiscrete
const Ordering frontalKeys{0}; const Ordering frontalKeys{0};
const auto [conditional, newFactor] = EliminateDiscrete(graph, frontalKeys); const auto [conditional, newFactorPtr] = EliminateDiscrete(graph, frontalKeys);
DecisionTreeFactor newFactor = *newFactorPtr;
// Normalize newFactor by max for comparison with expected
auto normalization = newFactor.max(newFactor.size());
newFactor = newFactor / *normalization;
// Check Conditional // Check Conditional
CHECK(conditional); CHECK(conditional);
@ -117,12 +124,13 @@ TEST(DiscreteFactorGraph, test) {
EXPECT(assert_equal(expectedConditional, *conditional)); EXPECT(assert_equal(expectedConditional, *conditional));
// Check Factor // Check Factor
CHECK(newFactor); CHECK(&newFactor);
DecisionTreeFactor expectedFactor(B & A, "10 6 6 10"); DecisionTreeFactor expectedFactor(B & A, "10 6 6 10");
auto normalization = expectedFactor.sum(expectedFactor.size()); // Normalize by max.
normalization = expectedFactor.max(expectedFactor.size());
// Ensure normalization is correct. // Ensure normalization is correct.
expectedFactor = expectedFactor / *normalization; expectedFactor = expectedFactor / *normalization;
EXPECT(assert_equal(expectedFactor, *newFactor)); EXPECT(assert_equal(expectedFactor, newFactor));
// Test using elimination tree // Test using elimination tree
const Ordering ordering{0, 1, 2}; const Ordering ordering{0, 1, 2};