26 #include <boost/optional.hpp> 38 SILENT, TERMINATION, ERROR, VALUES, DELTA, LINEAR
49 maxIterations(100), relativeErrorTol(1e-5), absoluteErrorTol(1e-5), errorTol(
50 0.0), verbosity(SILENT), orderingType(
Ordering::COLAMD),
51 linearSolverType(MULTIFRONTAL_CHOLESKY) {}
55 virtual void print(
const std::string& str =
"")
const;
57 size_t getMaxIterations()
const {
60 double getRelativeErrorTol()
const {
61 return relativeErrorTol;
63 double getAbsoluteErrorTol()
const {
64 return absoluteErrorTol;
66 double getErrorTol()
const {
69 std::string getVerbosity()
const {
70 return verbosityTranslator(verbosity);
73 void setMaxIterations(
int value) {
74 maxIterations = value;
76 void setRelativeErrorTol(
double value) {
77 relativeErrorTol = value;
79 void setAbsoluteErrorTol(
double value) {
80 absoluteErrorTol = value;
82 void setErrorTol(
double value) {
85 void setVerbosity(
const std::string &src) {
86 verbosity = verbosityTranslator(src);
89 static Verbosity verbosityTranslator(
const std::string &s) ;
90 static std::string verbosityTranslator(
Verbosity value) ;
99 MULTIFRONTAL_CHOLESKY,
111 inline bool isMultifrontal()
const {
112 return (linearSolverType == MULTIFRONTAL_CHOLESKY)
113 || (linearSolverType == MULTIFRONTAL_QR);
116 inline bool isSequential()
const {
117 return (linearSolverType == SEQUENTIAL_CHOLESKY)
118 || (linearSolverType == SEQUENTIAL_QR);
121 inline bool isCholmod()
const {
122 return (linearSolverType == CHOLMOD);
125 inline bool isIterative()
const {
126 return (linearSolverType == Iterative);
130 switch (linearSolverType) {
131 case MULTIFRONTAL_CHOLESKY:
132 case SEQUENTIAL_CHOLESKY:
133 return EliminatePreferCholesky;
135 case MULTIFRONTAL_QR:
140 throw std::runtime_error(
141 "Nonlinear optimization parameter \"factorization\" is invalid");
145 std::string getLinearSolverType()
const {
146 return linearSolverTranslator(linearSolverType);
149 void setLinearSolverType(
const std::string& solver) {
150 linearSolverType = linearSolverTranslator(solver);
153 void setIterativeParams(
const boost::shared_ptr<IterativeOptimizationParameters> params);
155 void setOrdering(
const Ordering& ordering) {
156 this->ordering = ordering;
157 this->orderingType = Ordering::CUSTOM;
160 std::string getOrderingType()
const {
161 return orderingTypeTranslator(orderingType);
165 void setOrderingType(
const std::string& ordering){
166 orderingType = orderingTypeTranslator(ordering);
170 std::string linearSolverTranslator(
LinearSolverType linearSolverType)
const;
172 LinearSolverType linearSolverTranslator(
const std::string& linearSolverType)
const;
Verbosity verbosity
The printing verbosity during optimization (default SILENT)
Definition: NonlinearOptimizerParams.h:45
LinearSolverType linearSolverType
The type of linear solver to use in the nonlinear optimizer.
Definition: NonlinearOptimizerParams.h:107
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:140
Subgraph Solver from IROS 2010.
size_t maxIterations
The maximum iterations to stop iterating (default 100)
Definition: NonlinearOptimizerParams.h:41
OrderingType
Type of ordering to use.
Definition: Ordering.h:40
LinearSolverType
See NonlinearOptimizerParams::linearSolverType.
Definition: NonlinearOptimizerParams.h:98
double absoluteErrorTol
The maximum absolute error decrease to stop iterating (default 1e-5)
Definition: NonlinearOptimizerParams.h:43
IterativeOptimizationParameters::shared_ptr iterativeParams
The container for iterativeOptimization parameters. used in CG Solvers.
Definition: NonlinearOptimizerParams.h:109
Definition: Ordering.h:33
std::pair< GaussianConditional::shared_ptr, JacobianFactor::shared_ptr > EliminateQR(const GaussianFactorGraph &factors, const Ordering &keys)
Multiply all factors and eliminate the given keys from the resulting factor using a QR variant that h...
Definition: JacobianFactor.cpp:712
double relativeErrorTol
The maximum relative error decrease to stop iterating (default 1e-5)
Definition: NonlinearOptimizerParams.h:42
The common parameters for Nonlinear optimizers.
Definition: NonlinearOptimizerParams.h:34
Verbosity
See NonlinearOptimizerParams::verbosity.
Definition: NonlinearOptimizerParams.h:37
boost::function< EliminationResult(const FactorGraphType &, const Ordering &)> Eliminate
The function type that does a single dense elimination step on a subgraph.
Definition: EliminateableFactorGraph.h:89
Linear Factor Graph where all factors are Gaussians.
double errorTol
The maximum total error to stop iterating (default 0.0)
Definition: NonlinearOptimizerParams.h:44
boost::optional< Ordering > ordering
The variable elimination ordering, or empty to use COLAMD (default: empty)
Definition: NonlinearOptimizerParams.h:108
Ordering::OrderingType orderingType
The method of ordering use during variable elimination (default COLAMD)
Definition: NonlinearOptimizerParams.h:46
Global functions in a separate testing namespace.
Definition: chartTesting.h:28