37class GTSAM_EXPORT NonlinearOptimizerParams {
41 SILENT, TERMINATION, ERROR, VALUES, DELTA, LINEAR
52 double getRelativeErrorTol()
const {
return relativeErrorTol; }
53 double getAbsoluteErrorTol()
const {
return absoluteErrorTol; }
54 double getErrorTol()
const {
return errorTol; }
55 std::string getVerbosity()
const {
return verbosityTranslator(verbosity); }
57 void setMaxIterations(
int value) { maxIterations = value; }
58 void setRelativeErrorTol(
double value) { relativeErrorTol = value; }
59 void setAbsoluteErrorTol(
double value) { absoluteErrorTol = value; }
60 void setErrorTol(
double value) { errorTol = value; }
61 void setVerbosity(
const std::string& src) {
62 verbosity = verbosityTranslator(src);
65 static Verbosity verbosityTranslator(
const std::string &s) ;
66 static std::string verbosityTranslator(Verbosity value) ;
71 void(
size_t ,
double,
double)>;
102 MULTIFRONTAL_CHOLESKY,
119 NonlinearOptimizerParams() =
default;
120 virtual ~NonlinearOptimizerParams() {
123 virtual void print(
const std::string& str =
"")
const;
127 inline bool isMultifrontal()
const {
128 return (linearSolverType == MULTIFRONTAL_SOLVER)
129 || (linearSolverType == MULTIFRONTAL_CHOLESKY)
130 || (linearSolverType == MULTIFRONTAL_QR);
133 inline bool isSequential()
const {
134 return (linearSolverType == SEQUENTIAL_CHOLESKY)
135 || (linearSolverType == SEQUENTIAL_QR);
138 inline bool isCholmod()
const {
139 return (linearSolverType == CHOLMOD);
142 inline bool isIterative()
const {
143 return (linearSolverType == Iterative);
148 if (!isIterative())
return true;
149 return std::dynamic_pointer_cast<SubgraphSolverParameters>(
154 switch (linearSolverType) {
155 case MULTIFRONTAL_SOLVER:
156 case MULTIFRONTAL_CHOLESKY:
157 case SEQUENTIAL_CHOLESKY:
160 case MULTIFRONTAL_QR:
165 throw std::runtime_error(
166 "Nonlinear optimization parameter \"factorization\" is invalid");
170 std::string getLinearSolverType()
const {
171 return linearSolverTranslator(linearSolverType);
177 void setLinearSolverType(
const std::string& solver) {
178 linearSolverType = linearSolverTranslator(solver);
184 void setIterativeParams(
const std::shared_ptr<IterativeOptimizationParameters> params);
186 void setOrdering(
const Ordering& ordering) {
187 this->ordering = ordering;
188 this->orderingType = Ordering::CUSTOM;
191 std::string getOrderingType()
const {
192 return orderingTypeTranslator(orderingType);
196 void setOrderingType(
const std::string& ordering){
197 orderingType = orderingTypeTranslator(ordering);
201 std::string linearSolverTranslator(LinearSolverType linearSolverType)
const;
202 LinearSolverType linearSolverTranslator(
const std::string& linearSolverType)
const;
203 std::string orderingTypeTranslator(Ordering::OrderingType type)
const;
204 Ordering::OrderingType orderingTypeTranslator(
const std::string& type)
const;
Subgraph Solver from IROS 2010.
Linear Factor Graph where all factors are Gaussians.
Parameters for the imperative multifrontal solver.
std::pair< std::shared_ptr< GaussianConditional >, std::shared_ptr< GaussianFactor > > EliminatePreferCholesky(const GaussianFactorGraph &factors, const Ordering &keys)
Densely partially eliminate with Cholesky factorization.
Definition HessianFactor.cpp:646
Global functions in a separate testing namespace.
Definition chartTesting.h:28
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:143
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:976
Template to create a binary predicate.
Definition Testable.h:112
std::function< EliminationResult(const FactorGraphType &, const Ordering &)> Eliminate
Definition EliminateableFactorGraph.h:91
OrderingType
Type of ordering to use.
Definition Ordering.h:40
Parameters for gtsam::MultifrontalSolver.
Definition MultifrontalParameters.h:37
The common parameters for Nonlinear optimizers.
Definition NonlinearOptimizerParams.h:37
double absoluteErrorTol
The maximum absolute error decrease to stop iterating (default 1e-5).
Definition NonlinearOptimizerParams.h:46
IterationHook iterationHook
Optional user-provided iteration hook to be called after each optimization iteration (Default: none).
Definition NonlinearOptimizerParams.h:97
size_t maxIterations
The maximum iterations to stop iterating (default 100).
Definition NonlinearOptimizerParams.h:44
Verbosity verbosity
The printing verbosity during optimization (default SILENT).
Definition NonlinearOptimizerParams.h:48
IterativeOptimizationParameters::shared_ptr iterativeParams
The container for iterativeOptimization parameters.
Definition NonlinearOptimizerParams.h:111
Verbosity
See NonlinearOptimizerParams::verbosity.
Definition NonlinearOptimizerParams.h:40
std::optional< Ordering > ordering
The optional variable elimination ordering, or empty to use COLAMD (default: empty).
Definition NonlinearOptimizerParams.h:110
LinearSolverType getLinearSolver() const
Return the selected linear solver as a strongly typed value.
Definition NonlinearOptimizerParams.h:175
LinearSolverType linearSolverType
Parameters for gtsam::MultifrontalSolver when using MULTIFRONTAL_SOLVER.
Definition NonlinearOptimizerParams.h:115
std::function< void(size_t, double, double)> IterationHook
Type for an optional user-provided hook to be called after each internal optimizer iteration.
Definition NonlinearOptimizerParams.h:70
bool requiresOrdering() const
Return whether this solver needs a variable-elimination ordering.
Definition NonlinearOptimizerParams.h:147
LinearSolverType
See NonlinearOptimizerParams::linearSolverType.
Definition NonlinearOptimizerParams.h:100
double relativeErrorTol
The maximum relative error decrease to stop iterating (default 1e-5).
Definition NonlinearOptimizerParams.h:45
Ordering::OrderingType orderingType
The method of ordering use during variable elimination (default COLAMD).
Definition NonlinearOptimizerParams.h:49
double errorTol
The maximum total error to stop iterating (default 0.0).
Definition NonlinearOptimizerParams.h:47
void setLinearSolver(LinearSolverType solver)
Select the linear solver using the public enum.
Definition NonlinearOptimizerParams.h:182