24 #include <gtsam/linear/SubgraphSolver.h>
25 #include <boost/optional.hpp>
37 SILENT, TERMINATION, ERROR, VALUES, DELTA, LINEAR
47 maxIterations(100), relativeErrorTol(1e-5), absoluteErrorTol(1e-5), errorTol(
48 0.0), verbosity(SILENT), linearSolverType(MULTIFRONTAL_CHOLESKY) {
53 virtual void print(
const std::string& str =
"")
const;
55 int getMaxIterations()
const {
58 double getRelativeErrorTol()
const {
59 return relativeErrorTol;
61 double getAbsoluteErrorTol()
const {
62 return absoluteErrorTol;
64 double getErrorTol()
const {
67 std::string getVerbosity()
const {
68 return verbosityTranslator(verbosity);
71 void setMaxIterations(
int value) {
72 maxIterations = value;
74 void setRelativeErrorTol(
double value) {
75 relativeErrorTol = value;
77 void setAbsoluteErrorTol(
double value) {
78 absoluteErrorTol = value;
80 void setErrorTol(
double value) {
83 void setVerbosity(
const std::string &src) {
84 verbosity = verbosityTranslator(src);
87 static Verbosity verbosityTranslator(
const std::string &s) ;
88 static std::string verbosityTranslator(Verbosity value) ;
97 MULTIFRONTAL_CHOLESKY,
109 inline bool isMultifrontal()
const {
110 return (linearSolverType == MULTIFRONTAL_CHOLESKY)
111 || (linearSolverType == MULTIFRONTAL_QR);
114 inline bool isSequential()
const {
115 return (linearSolverType == SEQUENTIAL_CHOLESKY)
116 || (linearSolverType == SEQUENTIAL_QR);
119 inline bool isCholmod()
const {
120 return (linearSolverType == CHOLMOD);
123 inline bool isIterative()
const {
124 return (linearSolverType == Iterative);
128 switch (linearSolverType) {
129 case MULTIFRONTAL_CHOLESKY:
130 case SEQUENTIAL_CHOLESKY:
131 return EliminatePreferCholesky;
133 case MULTIFRONTAL_QR:
138 throw std::runtime_error(
139 "Nonlinear optimization parameter \"factorization\" is invalid");
143 std::string getLinearSolverType()
const {
144 return linearSolverTranslator(linearSolverType);
147 void setLinearSolverType(
const std::string& solver) {
148 linearSolverType = linearSolverTranslator(solver);
151 void setIterativeParams(
const boost::shared_ptr<IterativeOptimizationParameters> params);
153 void setOrdering(
const Ordering& ordering) {
154 this->ordering = ordering;
158 std::string linearSolverTranslator(LinearSolverType linearSolverType)
const;
159 LinearSolverType linearSolverTranslator(
160 const std::string& linearSolverType)
const;
164 typedef NonlinearOptimizerParams SuccessiveLinearizationParams;
LinearSolverType
See NonlinearOptimizerParams::linearSolverType.
Definition: NonlinearOptimizerParams.h:96
LinearSolverType linearSolverType
The type of linear solver to use in the nonlinear optimizer.
Definition: NonlinearOptimizerParams.h:105
double errorTol
The maximum total error to stop iterating (default 0.0)
Definition: NonlinearOptimizerParams.h:43
The common parameters for Nonlinear optimizers.
Definition: NonlinearOptimizerParams.h:33
double absoluteErrorTol
The maximum absolute error decrease to stop iterating (default 1e-5)
Definition: NonlinearOptimizerParams.h:42
double relativeErrorTol
The maximum relative error decrease to stop iterating (default 1e-5)
Definition: NonlinearOptimizerParams.h:41
void print(const Matrix &A, const string &s, ostream &stream)
print a matrix
Definition: Matrix.cpp:183
IterativeOptimizationParameters::shared_ptr iterativeParams
The container for iterativeOptimization parameters. used in CG Solvers.
Definition: NonlinearOptimizerParams.h:107
int maxIterations
The maximum iterations to stop iterating (default 100)
Definition: NonlinearOptimizerParams.h:40
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
boost::optional< Ordering > ordering
The variable elimination ordering, or empty to use COLAMD (default: empty)
Definition: NonlinearOptimizerParams.h:106
Verbosity
See NonlinearOptimizerParams::verbosity.
Definition: NonlinearOptimizerParams.h:36
Verbosity verbosity
The printing verbosity during optimization (default SILENT)
Definition: NonlinearOptimizerParams.h:44
Linear Factor Graph where all factors are Gaussians.