Ordering type enum

release/4.3a0
Andrew Melim 2014-10-20 18:58:15 -04:00
parent 8cd17f6a30
commit 1d7bcb301a
3 changed files with 21 additions and 18 deletions

View File

@ -37,6 +37,12 @@ namespace gtsam {
typedef Ordering This; ///< Typedef to this class typedef Ordering This; ///< Typedef to this class
typedef boost::shared_ptr<This> shared_ptr; ///< shared_ptr to this class typedef boost::shared_ptr<This> 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 /// Create an empty ordering
GTSAM_EXPORT Ordering() {} GTSAM_EXPORT Ordering() {}

View File

@ -5,6 +5,7 @@
* @author Yong-Dian Jian * @author Yong-Dian Jian
* @author Richard Roberts * @author Richard Roberts
* @author Frank Dellaert * @author Frank Dellaert
* @author Andrew Melim
*/ */
#include <gtsam/nonlinear/NonlinearOptimizerParams.h> #include <gtsam/nonlinear/NonlinearOptimizerParams.h>
@ -108,10 +109,10 @@ void NonlinearOptimizerParams::print(const std::string& str) const {
} }
switch (orderingType){ switch (orderingType){
case COLAMD: case Ordering::Type::COLAMD_:
std::cout << " ordering: COLAMD\n"; std::cout << " ordering: COLAMD\n";
break; break;
case METIS: case Ordering::Type::METIS_:
std::cout << " ordering: METIS\n"; std::cout << " ordering: METIS\n";
break; break;
default: 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) { switch (type) {
case METIS: case Ordering::Type::METIS_:
return "METIS"; return "METIS";
case COLAMD: case Ordering::Type::COLAMD_:
return "COLAMD"; return "COLAMD";
default: default:
if (ordering) 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") if (type == "METIS")
return METIS; return Ordering::Type::METIS_;
if (type == "COLAMD") if (type == "COLAMD")
return COLAMD; return Ordering::Type::COLAMD_;
throw std::invalid_argument( throw std::invalid_argument(
"Invalid ordering type: You must provide an ordering for a custom ordering type. See setOrdering"); "Invalid ordering type: You must provide an ordering for a custom ordering type. See setOrdering");
} }

View File

@ -15,6 +15,7 @@
* @author Yong-Dian Jian * @author Yong-Dian Jian
* @author Richard Roberts * @author Richard Roberts
* @author Frank Dellaert * @author Frank Dellaert
* @author Andrew Melim
* @date Apr 1, 2012 * @date Apr 1, 2012
*/ */
@ -37,21 +38,16 @@ public:
SILENT, TERMINATION, ERROR, VALUES, DELTA, LINEAR SILENT, TERMINATION, ERROR, VALUES, DELTA, LINEAR
}; };
/** See NonlinearOptimizer::orderingType */
enum OrderingType {
COLAMD, METIS, CUSTOM
};
int maxIterations; ///< The maximum iterations to stop iterating (default 100) int maxIterations; ///< The maximum iterations to stop iterating (default 100)
double relativeErrorTol; ///< The maximum relative error decrease to stop iterating (default 1e-5) 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 absoluteErrorTol; ///< The maximum absolute error decrease to stop iterating (default 1e-5)
double errorTol; ///< The maximum total error to stop iterating (default 0.0) double errorTol; ///< The maximum total error to stop iterating (default 0.0)
Verbosity verbosity; ///< The printing verbosity during optimization (default SILENT) 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() : NonlinearOptimizerParams() :
maxIterations(100), relativeErrorTol(1e-5), absoluteErrorTol(1e-5), errorTol( 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() { virtual ~NonlinearOptimizerParams() {
@ -158,7 +154,7 @@ public:
void setOrdering(const Ordering& ordering) { void setOrdering(const Ordering& ordering) {
this->ordering = ordering; this->ordering = ordering;
this->orderingType = CUSTOM; this->orderingType = Ordering::Type::CUSTOM_;
} }
std::string getOrderingType() const { std::string getOrderingType() const {
@ -175,9 +171,9 @@ private:
LinearSolverType linearSolverTranslator(const std::string& linearSolverType) const; 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;
}; };