From 5393c306a4ff88f5ae23952174dda9baecbab386 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Mon, 21 Mar 2011 15:49:37 +0000 Subject: [PATCH] made GenericSequentialSolver testable --- .cproject | 276 ++++++++++-------- gtsam/inference/GenericSequentialSolver-inl.h | 22 +- gtsam/inference/GenericSequentialSolver.h | 12 +- .../tests/testSymbolicFactorGraph.cpp | 14 + 4 files changed, 193 insertions(+), 131 deletions(-) diff --git a/.cproject b/.cproject index 5e52e703d..b9903731f 100644 --- a/.cproject +++ b/.cproject @@ -322,6 +322,14 @@ true true + + make + -j2 + testGaussianFactor.run + true + true + true + make -j2 @@ -348,7 +356,6 @@ make - tests/testBayesTree.run true false @@ -356,7 +363,6 @@ make - testBinaryBayesNet.run true false @@ -404,7 +410,6 @@ make - testSymbolicBayesNet.run true false @@ -412,7 +417,6 @@ make - tests/testSymbolicFactor.run true false @@ -420,7 +424,6 @@ make - testSymbolicFactorGraph.run true false @@ -436,20 +439,11 @@ make - tests/testBayesTree true false true - - make - -j2 - testGaussianFactor.run - true - true - true - make -j2 @@ -484,6 +478,7 @@ make + testGraph.run true false @@ -579,6 +574,7 @@ make + testInference.run true false @@ -586,6 +582,7 @@ make + testGaussianBayesNet.run true false @@ -593,6 +590,7 @@ make + testGaussianFactor.run true false @@ -600,6 +598,7 @@ make + testJunctionTree.run true false @@ -607,6 +606,7 @@ make + testSymbolicBayesNet.run true false @@ -614,6 +614,7 @@ make + testSymbolicFactorGraph.run true false @@ -747,6 +748,14 @@ true true + + make + -j2 + check + true + true + true + make -j2 @@ -965,7 +974,6 @@ make - testErrors.run true false @@ -1325,6 +1333,7 @@ make + testSimulated2DOriented.run true false @@ -1364,6 +1373,7 @@ make + testSimulated2D.run true false @@ -1371,6 +1381,7 @@ make + testSimulated3D.run true false @@ -1474,6 +1485,7 @@ make + tests/testGaussianISAM2 true false @@ -1495,46 +1507,6 @@ true true - - make - -j2 - install - true - true - true - - - make - -j2 - clean - true - true - true - - - make - -j2 - check - true - true - true - - - make - -j2 - all - true - true - true - - - make - -j2 - dist - true - true - true - make -j2 @@ -1631,6 +1603,54 @@ true true + + make + -j2 + install + true + true + true + + + make + -j2 + clean + true + true + true + + + make + -j2 + check + true + true + true + + + make + -j2 + all + true + true + true + + + make + -j2 + dist + true + true + true + + + make + -j2 + check + true + true + true + make -j2 @@ -1663,14 +1683,6 @@ true true - - make - -j2 - check - true - true - true - @@ -1993,6 +2005,14 @@ true true + + make + -j2 + testGaussianFactor.run + true + true + true + make -j2 @@ -2019,7 +2039,6 @@ make - tests/testBayesTree.run true false @@ -2027,7 +2046,6 @@ make - testBinaryBayesNet.run true false @@ -2075,7 +2093,6 @@ make - testSymbolicBayesNet.run true false @@ -2083,7 +2100,6 @@ make - tests/testSymbolicFactor.run true false @@ -2091,7 +2107,6 @@ make - testSymbolicFactorGraph.run true false @@ -2107,20 +2122,11 @@ make - tests/testBayesTree true false true - - make - -j2 - testGaussianFactor.run - true - true - true - make -j2 @@ -2155,6 +2161,7 @@ make + testGraph.run true false @@ -2250,6 +2257,7 @@ make + testInference.run true false @@ -2257,6 +2265,7 @@ make + testGaussianBayesNet.run true false @@ -2264,6 +2273,7 @@ make + testGaussianFactor.run true false @@ -2271,6 +2281,7 @@ make + testJunctionTree.run true false @@ -2278,6 +2289,7 @@ make + testSymbolicBayesNet.run true false @@ -2285,6 +2297,7 @@ make + testSymbolicFactorGraph.run true false @@ -2418,6 +2431,14 @@ true true + + make + -j2 + check + true + true + true + make -j2 @@ -2636,7 +2657,6 @@ make - testErrors.run true false @@ -2996,6 +3016,7 @@ make + testSimulated2DOriented.run true false @@ -3035,6 +3056,7 @@ make + testSimulated2D.run true false @@ -3042,6 +3064,7 @@ make + testSimulated3D.run true false @@ -3145,6 +3168,7 @@ make + tests/testGaussianISAM2 true false @@ -3166,46 +3190,6 @@ true true - - make - -j2 - install - true - true - true - - - make - -j2 - clean - true - true - true - - - make - -j2 - check - true - true - true - - - make - -j2 - all - true - true - true - - - make - -j2 - dist - true - true - true - make -j2 @@ -3302,6 +3286,54 @@ true true + + make + -j2 + install + true + true + true + + + make + -j2 + clean + true + true + true + + + make + -j2 + check + true + true + true + + + make + -j2 + all + true + true + true + + + make + -j2 + dist + true + true + true + + + make + -j2 + check + true + true + true + make -j2 @@ -3334,14 +3366,6 @@ true true - - make - -j2 - check - true - true - true - diff --git a/gtsam/inference/GenericSequentialSolver-inl.h b/gtsam/inference/GenericSequentialSolver-inl.h index bd391bf46..8cdd6cb88 100644 --- a/gtsam/inference/GenericSequentialSolver-inl.h +++ b/gtsam/inference/GenericSequentialSolver-inl.h @@ -10,8 +10,8 @@ * -------------------------------------------------------------------------- */ /** - * @file GenericSequentialSolver.cpp - * @brief + * @file GenericSequentialSolver-inl.h + * @brief Implementation for generic sequential solver * @author Richard Roberts * @created Oct 21, 2010 */ @@ -45,6 +45,24 @@ namespace gtsam { EliminationTree::Create(*factors_, *structure_)) { } + /* ************************************************************************* */ + template + void GenericSequentialSolver::print(const std::string& s) const { + this->factors_->print(s+" factors:"); + this->structure_->print(s+" structure:\n"); + this->eliminationTree_->print(s+" etree:"); + } + + /* ************************************************************************* */ + template + bool GenericSequentialSolver::equals( + const GenericSequentialSolver& expected, double tol) const { + if (!this->factors_->equals(*expected.factors_, tol)) return false; + if (!this->structure_->equals(*expected.structure_, tol)) return false; + if (!this->eliminationTree_->equals(*expected.eliminationTree_, tol)) return false; + return true; + } + /* ************************************************************************* */ template void GenericSequentialSolver::replaceFactors( diff --git a/gtsam/inference/GenericSequentialSolver.h b/gtsam/inference/GenericSequentialSolver.h index 4f017e48a..c97a0e162 100644 --- a/gtsam/inference/GenericSequentialSolver.h +++ b/gtsam/inference/GenericSequentialSolver.h @@ -11,23 +11,23 @@ /** * @file GenericSequentialSolver.h - * @brief + * @brief generic sequential elimination * @author Richard Roberts * @created Oct 21, 2010 */ #pragma once +#include #include #include -#include #include namespace gtsam { template - class GenericSequentialSolver { + class GenericSequentialSolver : public Testable > { protected: @@ -57,6 +57,12 @@ namespace gtsam { const typename FactorGraph::shared_ptr& factorGraph, const VariableIndex::shared_ptr& variableIndex); + /** Print to cout */ + void print(const std::string& name = "GenericSequentialSolver: ") const; + + /** Test whether is equal to another */ + bool equals(const GenericSequentialSolver& other, double tol = 1e-9) const; + /** * Replace the factor graph with a new one having the same structure. The * This function can be used if the numerical part of the factors changes, diff --git a/gtsam/inference/tests/testSymbolicFactorGraph.cpp b/gtsam/inference/tests/testSymbolicFactorGraph.cpp index 8c6ef44ce..09bcd9e82 100644 --- a/gtsam/inference/tests/testSymbolicFactorGraph.cpp +++ b/gtsam/inference/tests/testSymbolicFactorGraph.cpp @@ -48,6 +48,20 @@ static const Index vl1 = 2; // CHECK(assert_equal(expected, fg)); //} +/* ************************************************************************* */ +TEST( SymbolicFactorGraph, SymbolicSequentialSolver ) +{ + // create factor graph + SymbolicFactorGraph g; + g.push_factor(vx2, vx1, vl1); + g.push_factor(vx1, vl1); + g.push_factor(vx1); + // test solver is Testable + SymbolicSequentialSolver solver(g); +// GTSAM_PRINT(solver); + EXPECT(assert_equal(solver,solver)); +} + /* ************************************************************************* */ TEST( SymbolicFactorGraph, constructFromBayesNet ) {