From 859bd16fd5c7c23125cf5265a88f358b7d08d1d6 Mon Sep 17 00:00:00 2001 From: Richard Roberts Date: Sun, 2 Jan 2011 04:57:48 +0000 Subject: [PATCH] Made NonlinearOptimizer::try_lambda public to allow the linear system to be modified at every LM iteration, this needs to be done somehow to implement Gaussian mixture EM, but this isn't an ideal solution. Also added a missing 'const' to the linear graph argument. --- gtsam/nonlinear/NonlinearOptimizer-inl.h | 2 +- gtsam/nonlinear/NonlinearOptimizer.h | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/gtsam/nonlinear/NonlinearOptimizer-inl.h b/gtsam/nonlinear/NonlinearOptimizer-inl.h index 33f8d7cd4..b1e1132f7 100644 --- a/gtsam/nonlinear/NonlinearOptimizer-inl.h +++ b/gtsam/nonlinear/NonlinearOptimizer-inl.h @@ -140,7 +140,7 @@ namespace gtsam { // TODO: in theory we can't infinitely recurse, but maybe we should put a max. /* ************************************************************************* */ template - NonlinearOptimizer NonlinearOptimizer::try_lambda(L& linear) { + NonlinearOptimizer NonlinearOptimizer::try_lambda(const L& linear) { const Parameters::verbosityLevel verbosity = parameters_->verbosity_ ; double lambda = parameters_->lambda_ ; diff --git a/gtsam/nonlinear/NonlinearOptimizer.h b/gtsam/nonlinear/NonlinearOptimizer.h index 3b088d8a6..17d7ec044 100644 --- a/gtsam/nonlinear/NonlinearOptimizer.h +++ b/gtsam/nonlinear/NonlinearOptimizer.h @@ -107,11 +107,6 @@ namespace gtsam { // The dimensions of each linearized variable const shared_dimensions dimensions_; - // Recursively try to do tempered Gauss-Newton steps until we succeed -// NonlinearOptimizer try_lambda(const L& linear, -// Parameters::verbosityLevel verbosity, double factor, Parameters::LambdaMode lambdaMode) const; - NonlinearOptimizer try_lambda(L& linear); - /** * Constructor that does not do any computation */ @@ -250,6 +245,9 @@ namespace gtsam { // suggested interface NonlinearOptimizer gaussNewton() const; + /** Recursively try to do tempered Gauss-Newton steps until we succeed */ + NonlinearOptimizer try_lambda(const L& linear); + /** * One iteration of Levenberg Marquardt */