Fix unit tests
parent
433ef9050f
commit
6eeceb679a
|
@ -347,26 +347,26 @@ TEST(DiscreteBayesTree, Lookup) {
|
|||
EXPECT_LONGS_EQUAL(2, lookup->size());
|
||||
auto lookup_x1_a1_x2 = (*lookup)[X(1)]->conditional();
|
||||
EXPECT_LONGS_EQUAL(3, lookup_x1_a1_x2->frontals().size());
|
||||
// check that sum is 100
|
||||
// check that sum is 1.0 (not 100, as we now normalize)
|
||||
DiscreteValues empty;
|
||||
EXPECT_DOUBLES_EQUAL(100, (*lookup_x1_a1_x2->sum(3))(empty), 1e-9);
|
||||
EXPECT_DOUBLES_EQUAL(1.0, (*lookup_x1_a1_x2->sum(3))(empty), 1e-9);
|
||||
// And that only non-zero reward is for x1 a1 x2 == 0 1 1
|
||||
EXPECT_DOUBLES_EQUAL(100, (*lookup_x1_a1_x2)({{X(1),0},{A(1),1},{X(2),1}}), 1e-9);
|
||||
EXPECT_DOUBLES_EQUAL(1.0, (*lookup_x1_a1_x2)({{X(1),0},{A(1),1},{X(2),1}}), 1e-9);
|
||||
|
||||
auto lookup_a2_x3 = (*lookup)[X(3)]->conditional();
|
||||
// check that the sum depends on x2 and is non-zero only for x2 \in {1,2}
|
||||
auto sum_x2 = lookup_a2_x3->sum(2);
|
||||
EXPECT_DOUBLES_EQUAL(0, (*sum_x2)({{X(2),0}}), 1e-9);
|
||||
EXPECT_DOUBLES_EQUAL(10, (*sum_x2)({{X(2),1}}), 1e-9);
|
||||
EXPECT_DOUBLES_EQUAL(20, (*sum_x2)({{X(2),2}}), 1e-9);
|
||||
EXPECT_DOUBLES_EQUAL(1.0, (*sum_x2)({{X(2),1}}), 1e-9);
|
||||
EXPECT_DOUBLES_EQUAL(2.0, (*sum_x2)({{X(2),2}}), 1e-9);
|
||||
EXPECT_LONGS_EQUAL(2, lookup_a2_x3->frontals().size());
|
||||
// And that the non-zero rewards are for
|
||||
// x2 a2 x3 == 1 1 2
|
||||
EXPECT_DOUBLES_EQUAL(10, (*lookup_a2_x3)({{X(2),1},{A(2),1},{X(3),2}}), 1e-9);
|
||||
EXPECT_DOUBLES_EQUAL(1.0, (*lookup_a2_x3)({{X(2),1},{A(2),1},{X(3),2}}), 1e-9);
|
||||
// x2 a2 x3 == 2 0 2
|
||||
EXPECT_DOUBLES_EQUAL(10, (*lookup_a2_x3)({{X(2),2},{A(2),0},{X(3),2}}), 1e-9);
|
||||
EXPECT_DOUBLES_EQUAL(1.0, (*lookup_a2_x3)({{X(2),2},{A(2),0},{X(3),2}}), 1e-9);
|
||||
// x2 a2 x3 == 2 1 2
|
||||
EXPECT_DOUBLES_EQUAL(10, (*lookup_a2_x3)({{X(2),2},{A(2),1},{X(3),2}}), 1e-9);
|
||||
EXPECT_DOUBLES_EQUAL(1.0, (*lookup_a2_x3)({{X(2),2},{A(2),1},{X(3),2}}), 1e-9);
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
|
|
|
@ -181,7 +181,7 @@ TEST(QPSolver, iterate) {
|
|||
QPSolver::State state(currentSolution, VectorValues(), workingSet, false,
|
||||
100);
|
||||
|
||||
int it = 0;
|
||||
// int it = 0;
|
||||
while (!state.converged) {
|
||||
state = solver.iterate(state);
|
||||
// These checks will fail because the expected solutions obtained from
|
||||
|
@ -190,7 +190,7 @@ TEST(QPSolver, iterate) {
|
|||
// do not recompute dual variables after every step!!!
|
||||
// CHECK(assert_equal(expected[it], state.values, 1e-10));
|
||||
// CHECK(assert_equal(expectedDuals[it], state.duals, 1e-10));
|
||||
it++;
|
||||
// it++;
|
||||
}
|
||||
|
||||
CHECK(assert_equal(expected[3], state.values, 1e-10));
|
||||
|
|
|
@ -128,15 +128,15 @@ class TestDiscreteBayesNet(GtsamTestCase):
|
|||
assert lookup.size() == 2
|
||||
lookup_x1_a1_x2 = lookup[X(1)].conditional()
|
||||
assert lookup_x1_a1_x2.nrFrontals() == 3
|
||||
# Check that sum is 100
|
||||
# Check that sum is 1.0 (not 100, as we now normalize to prevent underflow)
|
||||
empty = gtsam.DiscreteValues()
|
||||
self.assertAlmostEqual(lookup_x1_a1_x2.sum(3)(empty), 100)
|
||||
self.assertAlmostEqual(lookup_x1_a1_x2.sum(3)(empty), 1.0)
|
||||
# And that only non-zero reward is for x1 a1 x2 == 0 1 1
|
||||
values = DiscreteValues()
|
||||
values[X(1)] = 0
|
||||
values[A(1)] = 1
|
||||
values[X(2)] = 1
|
||||
self.assertAlmostEqual(lookup_x1_a1_x2(values), 100)
|
||||
self.assertAlmostEqual(lookup_x1_a1_x2(values), 1.0)
|
||||
|
||||
lookup_a2_x3 = lookup[X(3)].conditional()
|
||||
# Check that the sum depends on x2 and is non-zero only for x2 in {1, 2}
|
||||
|
@ -145,16 +145,16 @@ class TestDiscreteBayesNet(GtsamTestCase):
|
|||
values[X(2)] = 0
|
||||
self.assertAlmostEqual(sum_x2(values), 0)
|
||||
values[X(2)] = 1
|
||||
self.assertAlmostEqual(sum_x2(values), 10)
|
||||
self.assertAlmostEqual(sum_x2(values), 1.0) # not 10, as we normalize
|
||||
values[X(2)] = 2
|
||||
self.assertAlmostEqual(sum_x2(values), 20)
|
||||
self.assertAlmostEqual(sum_x2(values), 2.0) # not 20, as we normalize
|
||||
assert lookup_a2_x3.nrFrontals() == 2
|
||||
# And that the non-zero rewards are for x2 a2 x3 == 1 1 2
|
||||
values = DiscreteValues()
|
||||
values[X(2)] = 1
|
||||
values[A(2)] = 1
|
||||
values[X(3)] = 2
|
||||
self.assertAlmostEqual(lookup_a2_x3(values), 10)
|
||||
self.assertAlmostEqual(lookup_a2_x3(values), 1.0) # not 10...
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
Loading…
Reference in New Issue