gtsam
Loading...
Searching...
No Matches
gtsam::LevenbergMarquardtOptimizer Class Reference

Detailed Description

This class performs Levenberg-Marquardt nonlinear optimization.

Inheritance diagram for gtsam::LevenbergMarquardtOptimizer:

Public Member Functions

Constructors/Destructor
 LevenbergMarquardtOptimizer (const NonlinearFactorGraph &graph, const Values &initialValues, const LevenbergMarquardtParams &params=LevenbergMarquardtParams())
 Standard constructor, requires a nonlinear factor graph, initial variable assignments, and optimization parameters.
 LevenbergMarquardtOptimizer (const NonlinearFactorGraph &graph, const Values &initialValues, const Ordering &ordering, const LevenbergMarquardtParams &params=LevenbergMarquardtParams())
 Standard constructor, requires a nonlinear factor graph, initial variable assignments, and optimization parameters.
 ~LevenbergMarquardtOptimizer () override
 Virtual destructor.
Standard interface
double lambda () const
 Access the current damping value.
int getInnerIterations () const
 Access the current number of inner iterations.
void print (const std::string &str="") const
 print
Advanced interface
GaussianFactorGraph::shared_ptr iterate () override
 Perform a single iteration, returning GaussianFactorGraph corresponding to the linearized factor graph.
const LevenbergMarquardtParamsparams () const
 Read-only access the parameters.
void writeLogFile (double currentError)
virtual GaussianFactorGraph::shared_ptr linearize () const
 linearize, can be overwritten
virtual GaussianFactorGraph buildDampedSystem (const GaussianFactorGraph &linear, const VectorValues &sqrtHessianDiagonal) const
 Build the damped linear system for the current lambda.
bool tryLambda (const GaussianFactorGraph &linear, const VectorValues &sqrtHessianDiagonal)
 Inner loop, changes state, returns true if successful or giving up.
Public Member Functions inherited from gtsam::NonlinearOptimizer
virtual const Valuesoptimize ()
 Optimize for the maximum-likelihood estimate, returning a the optimized variable assignments.
const ValuesoptimizeSafely ()
 Optimize, but return empty result if any uncaught exception is thrown Intended for MATLAB.
double error () const
 return error in current optimizer state
size_t iterations () const
 return number of iterations in current optimizer state
const Valuesvalues () const
 return values in current optimizer state
const NonlinearFactorGraphgraph () const
 return the graph with nonlinear factors
virtual ~NonlinearOptimizer ()
 Virtual destructor.
virtual VectorValues solve (const GaussianFactorGraph &gfg, const NonlinearOptimizerParams &params) const
 Default function to do linear solve, i.e.

Public Types

typedef std::shared_ptr< LevenbergMarquardtOptimizershared_ptr
Public Types inherited from gtsam::NonlinearOptimizer
using shared_ptr = std::shared_ptr<const NonlinearOptimizer>
 A shared pointer to this class.

Protected Member Functions

void initTime ()
virtual double linearDeltaError (const GaussianFactorGraph &linear, const VectorValues &delta, double *oldError, double *newError) const
 Evaluate the linear-model error change used for LM step quality.
const NonlinearOptimizerParams_params () const override
 Access the parameters (base class version).
Protected Member Functions inherited from gtsam::NonlinearOptimizer
void defaultOptimize ()
 A default implementation of the optimization loop, which calls iterate() until checkConvergence returns true.
virtual bool ensureMultifrontalSolver (const NonlinearOptimizerParams &params, const Values &values) const
 Ensure that the nonlinearMultifrontalSolver_ is populated if (and only if) the params request the multifrontal Cholesky solver type (e.g., MULTIFRONTAL_SOLVER).
 NonlinearOptimizer (const NonlinearFactorGraph &graph, std::unique_ptr< internal::NonlinearOptimizerState > state)
 Constructor for initial construction of base classes.

Protected Attributes

const LevenbergMarquardtParams params_
 LM parameters.
std::chrono::time_point< std::chrono::high_resolution_clock > startTime_
 time when optimization started
std::chrono::time_point< std::chrono::high_resolution_clock > iterationStart_
double lastLinearizeTime_ {0.0}
double lastSolveTime_ {0.0}
Protected Attributes inherited from gtsam::NonlinearOptimizer
std::shared_ptr< const NonlinearFactorGraphgraph_
 The graph with nonlinear factors.
std::unique_ptr< internal::NonlinearOptimizerState > state_
 PIMPL'd state.
std::unique_ptr< NonlinearMultifrontalSolvernonlinearMultifrontalSolver_
 Solver for multifrontal Cholesky, lazily created.
std::unique_ptr< internal::CholmodSolver > cholmodSolver_
 Optional reusable CHOLMOD numerical and symbolic session.

Constructor & Destructor Documentation

◆ LevenbergMarquardtOptimizer() [1/2]

gtsam::LevenbergMarquardtOptimizer::LevenbergMarquardtOptimizer ( const NonlinearFactorGraph & graph,
const Values & initialValues,
const LevenbergMarquardtParams & params = LevenbergMarquardtParams() )

Standard constructor, requires a nonlinear factor graph, initial variable assignments, and optimization parameters.

For convenience this version takes plain objects instead of shared pointers, but internally copies the objects.

Parameters
graphThe nonlinear factor graph to optimize
initialValuesThe initial variable assignments
paramsThe optimization parameters

◆ LevenbergMarquardtOptimizer() [2/2]

gtsam::LevenbergMarquardtOptimizer::LevenbergMarquardtOptimizer ( const NonlinearFactorGraph & graph,
const Values & initialValues,
const Ordering & ordering,
const LevenbergMarquardtParams & params = LevenbergMarquardtParams() )

Standard constructor, requires a nonlinear factor graph, initial variable assignments, and optimization parameters.

For convenience this version takes plain objects instead of shared pointers, but internally copies the objects.

Parameters
graphThe nonlinear factor graph to optimize
initialValuesThe initial variable assignments

Member Function Documentation

◆ _params()

const NonlinearOptimizerParams & gtsam::LevenbergMarquardtOptimizer::_params ( ) const
inlineoverrideprotectedvirtual

Access the parameters (base class version).

Implements gtsam::NonlinearOptimizer.

◆ iterate()

GaussianFactorGraph::shared_ptr gtsam::LevenbergMarquardtOptimizer::iterate ( void )
overridevirtual

Perform a single iteration, returning GaussianFactorGraph corresponding to the linearized factor graph.

Implements gtsam::NonlinearOptimizer.


The documentation for this class was generated from the following files: