g2o
Loading...
Searching...
No Matches
g2o::OptimizationAlgorithmLevenberg Class Reference

Implementation of the Levenberg Algorithm. More...

#include <optimization_algorithm_levenberg.h>

Inheritance diagram for g2o::OptimizationAlgorithmLevenberg:
Collaboration diagram for g2o::OptimizationAlgorithmLevenberg:

Public Member Functions

 OptimizationAlgorithmLevenberg (std::unique_ptr< Solver > solver)
virtual ~OptimizationAlgorithmLevenberg ()
virtual SolverResult solve (int iteration, bool online=false)
virtual void printVerbose (std::ostream &os) const
double currentLambda () const
 return the currently used damping factor
void setMaxTrialsAfterFailure (int max_trials)
int maxTrialsAfterFailure () const
 get the number of inner iterations for Levenberg-Marquardt
double userLambdaInit ()
void setUserLambdaInit (double lambda)
int levenbergIteration ()
 return the number of levenberg iterations performed in the last round
Public Member Functions inherited from g2o::OptimizationAlgorithmWithHessian
 OptimizationAlgorithmWithHessian (Solver &solver)
virtual ~OptimizationAlgorithmWithHessian ()
virtual bool init (bool online=false)
virtual bool computeMarginals (SparseBlockMatrix< MatrixX > &spinv, const std::vector< std::pair< int, int > > &blockIndices)
virtual bool buildLinearStructure ()
virtual void updateLinearSystem ()
virtual bool updateStructure (const std::vector< HyperGraph::Vertex * > &vset, const HyperGraph::EdgeSet &edges)
Solver & solver ()
 return the underlying solver used to solve the linear system
virtual void setWriteDebug (bool writeDebug)
virtual bool writeDebug () const
Public Member Functions inherited from g2o::OptimizationAlgorithm
 OptimizationAlgorithm ()
virtual ~OptimizationAlgorithm ()
const SparseOptimizer * optimizer () const
 return the optimizer operating on
SparseOptimizer * optimizer ()
void setOptimizer (SparseOptimizer *optimizer)
const PropertyMap & properties () const
 return the properties of the solver
bool updatePropertiesFromString (const std::string &propString)
void printProperties (std::ostream &os) const

Protected Member Functions

double computeLambdaInit () const
double computeScale () const

Protected Attributes

Property< int > * _maxTrialsAfterFailure
Property< double > * _userLambdaInit
double _currentLambda
double _tau
double _goodStepLowerScale
double _goodStepUpperScale
double _ni
int _levenbergIterations
Protected Attributes inherited from g2o::OptimizationAlgorithmWithHessian
Solver & _solver
Property< bool > * _writeDebug
Protected Attributes inherited from g2o::OptimizationAlgorithm
SparseOptimizer * _optimizer
 the optimizer the solver is working on
PropertyMap _properties

Private Attributes

std::unique_ptr< Solver > m_solver

Detailed Description

Implementation of the Levenberg Algorithm.

Definition at line 40 of file optimization_algorithm_levenberg.h.

Constructor & Destructor Documentation

◆ OptimizationAlgorithmLevenberg()

g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg ( std::unique_ptr< Solver > solver)
explicit

◆ ~OptimizationAlgorithmLevenberg()

g2o::OptimizationAlgorithmLevenberg::~OptimizationAlgorithmLevenberg ( )
virtual

Definition at line 57 of file optimization_algorithm_levenberg.cpp.

Member Function Documentation

◆ computeLambdaInit()

double g2o::OptimizationAlgorithmLevenberg::computeLambdaInit ( ) const
protected

helper for Levenberg, this function computes the initial damping factor, if the user did not specify an own value, see setUserLambdaInit()

Definition at line 154 of file optimization_algorithm_levenberg.cpp.

References g2o::OptimizationAlgorithm::_optimizer, _tau, _userLambdaInit, g2o::OptimizableGraph::Vertex::dimension(), and g2o::OptimizableGraph::Vertex::hessian().

Referenced by solve().

◆ computeScale()

double g2o::OptimizationAlgorithmLevenberg::computeScale ( ) const
protected

◆ currentLambda()

double g2o::OptimizationAlgorithmLevenberg::currentLambda ( ) const
inline

return the currently used damping factor

Definition at line 55 of file optimization_algorithm_levenberg.h.

References _currentLambda.

◆ levenbergIteration()

int g2o::OptimizationAlgorithmLevenberg::levenbergIteration ( )
inline

return the number of levenberg iterations performed in the last round

Definition at line 72 of file optimization_algorithm_levenberg.h.

References _levenbergIterations.

◆ maxTrialsAfterFailure()

int g2o::OptimizationAlgorithmLevenberg::maxTrialsAfterFailure ( ) const
inline

get the number of inner iterations for Levenberg-Marquardt

Definition at line 62 of file optimization_algorithm_levenberg.h.

References _maxTrialsAfterFailure.

◆ printVerbose()

void g2o::OptimizationAlgorithmLevenberg::printVerbose ( std::ostream & os) const
virtual

called by the optimizer if verbose. re-implement, if you want to print something

Reimplemented from g2o::OptimizationAlgorithm.

Definition at line 185 of file optimization_algorithm_levenberg.cpp.

References _currentLambda, _levenbergIterations, and g2o::OptimizationAlgorithmWithHessian::_solver.

◆ setMaxTrialsAfterFailure()

void g2o::OptimizationAlgorithmLevenberg::setMaxTrialsAfterFailure ( int max_trials)

the number of internal iteration if an update step increases chi^2 within Levenberg-Marquardt

Definition at line 177 of file optimization_algorithm_levenberg.cpp.

References _maxTrialsAfterFailure.

◆ setUserLambdaInit()

void g2o::OptimizationAlgorithmLevenberg::setUserLambdaInit ( double lambda)

specify the initial lambda used for the first iteraion, if not given the SparseOptimizer tries to compute a suitable value

Definition at line 181 of file optimization_algorithm_levenberg.cpp.

References _userLambdaInit.

◆ solve()

◆ userLambdaInit()

double g2o::OptimizationAlgorithmLevenberg::userLambdaInit ( )
inline

return the lambda set by the user, if < 0 the SparseOptimizer will compute the initial lambda

Definition at line 66 of file optimization_algorithm_levenberg.h.

References _userLambdaInit.

Member Data Documentation

◆ _currentLambda

double g2o::OptimizationAlgorithmLevenberg::_currentLambda
protected

◆ _goodStepLowerScale

double g2o::OptimizationAlgorithmLevenberg::_goodStepLowerScale
protected

lower bound for lambda decrease if a good LM step

Definition at line 80 of file optimization_algorithm_levenberg.h.

Referenced by OptimizationAlgorithmLevenberg(), and solve().

◆ _goodStepUpperScale

double g2o::OptimizationAlgorithmLevenberg::_goodStepUpperScale
protected

upper bound for lambda decrease if a good LM step

Definition at line 82 of file optimization_algorithm_levenberg.h.

Referenced by OptimizationAlgorithmLevenberg(), and solve().

◆ _levenbergIterations

int g2o::OptimizationAlgorithmLevenberg::_levenbergIterations
protected

the number of levenberg iterations performed to accept the last step

Definition at line 85 of file optimization_algorithm_levenberg.h.

Referenced by levenbergIteration(), OptimizationAlgorithmLevenberg(), printVerbose(), and solve().

◆ _maxTrialsAfterFailure

Property<int>* g2o::OptimizationAlgorithmLevenberg::_maxTrialsAfterFailure
protected

◆ _ni

double g2o::OptimizationAlgorithmLevenberg::_ni
protected

Definition at line 84 of file optimization_algorithm_levenberg.h.

Referenced by OptimizationAlgorithmLevenberg(), and solve().

◆ _tau

double g2o::OptimizationAlgorithmLevenberg::_tau
protected

◆ _userLambdaInit

Property<double>* g2o::OptimizationAlgorithmLevenberg::_userLambdaInit
protected

◆ m_solver

std::unique_ptr<Solver> g2o::OptimizationAlgorithmLevenberg::m_solver
private

Definition at line 96 of file optimization_algorithm_levenberg.h.

Referenced by OptimizationAlgorithmLevenberg().


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