diff --git a/gtsam/inference/Ordering.cpp b/gtsam/inference/Ordering.cpp index 4f4b14bb5..7d3d7cc0b 100644 --- a/gtsam/inference/Ordering.cpp +++ b/gtsam/inference/Ordering.cpp @@ -22,6 +22,7 @@ #include #include +#include using namespace std; @@ -196,6 +197,12 @@ namespace gtsam { return Ordering::COLAMDConstrained(variableIndex, cmember); } + /* ************************************************************************* */ + Ordering Ordering::METIS(const VariableIndex& variableIndex) + { + gttic(Ordering_METIS); + } + /* ************************************************************************* */ void Ordering::print(const std::string& str, const KeyFormatter& keyFormatter) const { diff --git a/gtsam/inference/Ordering.h b/gtsam/inference/Ordering.h index 7b1a2bb2e..1260c15fb 100644 --- a/gtsam/inference/Ordering.h +++ b/gtsam/inference/Ordering.h @@ -146,6 +146,14 @@ namespace gtsam { return Ordering(keys); } + + /// Compute an ordering determined by METIS from a VariableIndex + static GTSAM_EXPORT Ordering METIS(const VariableIndex& variableIndex); + + template + static Ordering METIS(const FactorGraph& graph){ + return METIS(VariableIndex(graph)); } + /// @} /// @name Testable @{ diff --git a/gtsam/inference/tests/testOrdering.cpp b/gtsam/inference/tests/testOrdering.cpp index 3bf6f7ca0..5fcac15b4 100644 --- a/gtsam/inference/tests/testOrdering.cpp +++ b/gtsam/inference/tests/testOrdering.cpp @@ -77,6 +77,11 @@ TEST(Ordering, grouped_constrained_ordering) { EXPECT(assert_equal(expConstrained, actConstrained)); } +/* ************************************************************************* */ +TEST(Ordering, metis_ordering) { + +} + /* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); } /* ************************************************************************* */