From 1d7bcb301a08725b74ebcee5e10a56e71e5741d1 Mon Sep 17 00:00:00 2001 From: Andrew Melim Date: Mon, 20 Oct 2014 18:58:15 -0400 Subject: [PATCH] Ordering type enum --- gtsam/inference/Ordering.h | 6 ++++++ gtsam/nonlinear/NonlinearOptimizerParams.cpp | 17 +++++++++-------- gtsam/nonlinear/NonlinearOptimizerParams.h | 16 ++++++---------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/gtsam/inference/Ordering.h b/gtsam/inference/Ordering.h index 6cf125551..dfb1deb0e 100644 --- a/gtsam/inference/Ordering.h +++ b/gtsam/inference/Ordering.h @@ -37,6 +37,12 @@ namespace gtsam { typedef Ordering This; ///< Typedef to this class typedef boost::shared_ptr shared_ptr; ///< shared_ptr to this class + /** See NonlinearOptimizer::orderingType */ + enum Type { + COLAMD_, METIS_, CUSTOM_ // Add underscores to prevent declaration errors + }; + + /// Create an empty ordering GTSAM_EXPORT Ordering() {} diff --git a/gtsam/nonlinear/NonlinearOptimizerParams.cpp b/gtsam/nonlinear/NonlinearOptimizerParams.cpp index f20a36b5d..1e964a481 100644 --- a/gtsam/nonlinear/NonlinearOptimizerParams.cpp +++ b/gtsam/nonlinear/NonlinearOptimizerParams.cpp @@ -5,6 +5,7 @@ * @author Yong-Dian Jian * @author Richard Roberts * @author Frank Dellaert + * @author Andrew Melim */ #include @@ -108,10 +109,10 @@ void NonlinearOptimizerParams::print(const std::string& str) const { } switch (orderingType){ - case COLAMD: + case Ordering::Type::COLAMD_: std::cout << " ordering: COLAMD\n"; break; - case METIS: + case Ordering::Type::METIS_: std::cout << " ordering: METIS\n"; break; default: @@ -164,12 +165,12 @@ NonlinearOptimizerParams::LinearSolverType NonlinearOptimizerParams::linearSolve } /* ************************************************************************* */ -std::string NonlinearOptimizerParams::orderingTypeTranslator(NonlinearOptimizerParams::OrderingType type) const +std::string NonlinearOptimizerParams::orderingTypeTranslator(Ordering::Type type) const { switch (type) { - case METIS: + case Ordering::Type::METIS_: return "METIS"; - case COLAMD: + case Ordering::Type::COLAMD_: return "COLAMD"; default: if (ordering) @@ -181,12 +182,12 @@ std::string NonlinearOptimizerParams::orderingTypeTranslator(NonlinearOptimizerP } /* ************************************************************************* */ -NonlinearOptimizerParams::OrderingType NonlinearOptimizerParams::orderingTypeTranslator(const std::string& type) const +Ordering::Type NonlinearOptimizerParams::orderingTypeTranslator(const std::string& type) const { if (type == "METIS") - return METIS; + return Ordering::Type::METIS_; if (type == "COLAMD") - return COLAMD; + return Ordering::Type::COLAMD_; throw std::invalid_argument( "Invalid ordering type: You must provide an ordering for a custom ordering type. See setOrdering"); } diff --git a/gtsam/nonlinear/NonlinearOptimizerParams.h b/gtsam/nonlinear/NonlinearOptimizerParams.h index a390555e2..04877c72e 100644 --- a/gtsam/nonlinear/NonlinearOptimizerParams.h +++ b/gtsam/nonlinear/NonlinearOptimizerParams.h @@ -15,6 +15,7 @@ * @author Yong-Dian Jian * @author Richard Roberts * @author Frank Dellaert + * @author Andrew Melim * @date Apr 1, 2012 */ @@ -37,21 +38,16 @@ public: SILENT, TERMINATION, ERROR, VALUES, DELTA, LINEAR }; - /** See NonlinearOptimizer::orderingType */ - enum OrderingType { - COLAMD, METIS, CUSTOM - }; - int maxIterations; ///< The maximum iterations to stop iterating (default 100) double relativeErrorTol; ///< The maximum relative error decrease to stop iterating (default 1e-5) double absoluteErrorTol; ///< The maximum absolute error decrease to stop iterating (default 1e-5) double errorTol; ///< The maximum total error to stop iterating (default 0.0) Verbosity verbosity; ///< The printing verbosity during optimization (default SILENT) - OrderingType orderingType; ///< The method of ordering use during variable elimination (default COLAMD) + Ordering::Type orderingType; ///< The method of ordering use during variable elimination (default COLAMD) NonlinearOptimizerParams() : maxIterations(100), relativeErrorTol(1e-5), absoluteErrorTol(1e-5), errorTol( - 0.0), verbosity(SILENT), linearSolverType(MULTIFRONTAL_CHOLESKY), orderingType(COLAMD) { + 0.0), verbosity(SILENT), linearSolverType(MULTIFRONTAL_CHOLESKY), orderingType(Ordering::Type::COLAMD_) { } virtual ~NonlinearOptimizerParams() { @@ -158,7 +154,7 @@ public: void setOrdering(const Ordering& ordering) { this->ordering = ordering; - this->orderingType = CUSTOM; + this->orderingType = Ordering::Type::CUSTOM_; } std::string getOrderingType() const { @@ -175,9 +171,9 @@ private: LinearSolverType linearSolverTranslator(const std::string& linearSolverType) const; - std::string orderingTypeTranslator(OrderingType type) const; + std::string orderingTypeTranslator(Ordering::Type type) const; - OrderingType orderingTypeTranslator(const std::string& type) const; + Ordering::Type orderingTypeTranslator(const std::string& type) const; };