Skip to content

Commit 997d0b4

Browse files
committed
ratio tests for GaussianMixtureFactor
1 parent 3f782a4 commit 997d0b4

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

gtsam/hybrid/tests/testGaussianMixtureFactor.cpp

+40
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,24 @@ TEST(GaussianMixtureFactor, TwoStateModel2) {
519519
{
520520
// Start with no measurement on x1, only on x0
521521
HybridGaussianFactorGraph gfg = hbn.toFactorGraph(given);
522+
523+
{
524+
VectorValues vv{
525+
{X(0), Vector1(0.0)}, {X(1), Vector1(1.0)}, {Z(0), Vector1(0.5)}};
526+
HybridValues hv0(vv, DiscreteValues{{M(1), 0}}),
527+
hv1(vv, DiscreteValues{{M(1), 1}});
528+
EXPECT_DOUBLES_EQUAL(gfg.error(hv0) / hbn.error(hv0),
529+
gfg.error(hv1) / hbn.error(hv1), 1e-9);
530+
}
531+
{
532+
VectorValues vv{
533+
{X(0), Vector1(0.5)}, {X(1), Vector1(3.0)}, {Z(0), Vector1(0.5)}};
534+
HybridValues hv0(vv, DiscreteValues{{M(1), 0}}),
535+
hv1(vv, DiscreteValues{{M(1), 1}});
536+
EXPECT_DOUBLES_EQUAL(gfg.error(hv0) / hbn.error(hv0),
537+
gfg.error(hv1) / hbn.error(hv1), 1e-9);
538+
}
539+
522540
HybridBayesNet::shared_ptr bn = gfg.eliminateSequential();
523541

524542
// Since no measurement on x1, we a 50/50 probability
@@ -535,6 +553,28 @@ TEST(GaussianMixtureFactor, TwoStateModel2) {
535553

536554
given.insert(z1, Vector1(2.2));
537555
HybridGaussianFactorGraph gfg = hbn.toFactorGraph(given);
556+
557+
{
558+
VectorValues vv{{X(0), Vector1(0.0)},
559+
{X(1), Vector1(1.0)},
560+
{Z(0), Vector1(0.5)},
561+
{Z(1), Vector1(2.2)}};
562+
HybridValues hv0(vv, DiscreteValues{{M(1), 0}}),
563+
hv1(vv, DiscreteValues{{M(1), 1}});
564+
EXPECT_DOUBLES_EQUAL(gfg.error(hv0) / hbn.error(hv0),
565+
gfg.error(hv1) / hbn.error(hv1), 1e-9);
566+
}
567+
{
568+
VectorValues vv{{X(0), Vector1(0.5)},
569+
{X(1), Vector1(3.0)},
570+
{Z(0), Vector1(0.5)},
571+
{Z(1), Vector1(2.2)}};
572+
HybridValues hv0(vv, DiscreteValues{{M(1), 0}}),
573+
hv1(vv, DiscreteValues{{M(1), 1}});
574+
EXPECT_DOUBLES_EQUAL(gfg.error(hv0) / hbn.error(hv0),
575+
gfg.error(hv1) / hbn.error(hv1), 1e-9);
576+
}
577+
538578
HybridBayesNet::shared_ptr bn = gfg.eliminateSequential();
539579

540580
// Since we have a measurement on z2, we get a definite result

0 commit comments

Comments
 (0)