Use reuse_diagonal_ with step policy to save computation time (same as Ceres).
parent
037ed7b931
commit
6b215ea8d9
|
|
@ -91,8 +91,8 @@ void LevenbergMarquardtOptimizer::increaseLambda(double stepQuality){
|
|||
}else{
|
||||
state_.lambda *= params_.lambdaFactor;
|
||||
params_.lambdaFactor *= 2.0;
|
||||
// reuse_diagonal_ = true;
|
||||
}
|
||||
params_.reuse_diagonal_ = true;
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
|
|
@ -104,9 +104,10 @@ void LevenbergMarquardtOptimizer::decreaseLambda(double stepQuality){
|
|||
// CHECK_GT(step_quality, 0.0);
|
||||
state_.lambda *= std::max(1.0 / 3.0, 1.0 - pow(2.0 * stepQuality - 1.0, 3));
|
||||
params_.lambdaFactor = 2.0;
|
||||
// reuse_diagonal_ = false;
|
||||
}
|
||||
state_.lambda = std::max(params_.lambdaLowerBound, state_.lambda);
|
||||
params_.reuse_diagonal_ = false;
|
||||
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
|
|
@ -195,6 +196,8 @@ void LevenbergMarquardtOptimizer::iterate() {
|
|||
// Solve Damped Gaussian Factor Graph
|
||||
const VectorValues delta = solve(dampedSystem, state_.values, params_);
|
||||
|
||||
params_.reuse_diagonal_ = true;
|
||||
|
||||
if (lmVerbosity >= LevenbergMarquardtParams::TRYLAMBDA) cout << "linear delta norm = " << delta.norm() << endl;
|
||||
if (lmVerbosity >= LevenbergMarquardtParams::TRYDELTA) delta.print("delta");
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue