Moved reuse_diagnal_ to reuseDiagonal in state

release/4.3a0
dellaert 2015-06-17 09:20:46 -07:00
parent 6efc708c5e
commit d71e66ea48
2 changed files with 14 additions and 14 deletions

View File

@ -125,7 +125,7 @@ void LevenbergMarquardtOptimizer::increaseLambda() {
state_.lambda *= params_.lambdaFactor;
params_.lambdaFactor *= 2.0;
}
params_.reuse_diagonal_ = true;
state_.reuseDiagonal = true;
}
/* ************************************************************************* */
@ -139,7 +139,7 @@ void LevenbergMarquardtOptimizer::decreaseLambda(double stepQuality) {
params_.lambdaFactor = 2.0;
}
state_.lambda = std::max(params_.lambdaLowerBound, state_.lambda);
params_.reuse_diagonal_ = false;
state_.reuseDiagonal = false;
}
@ -152,7 +152,7 @@ GaussianFactorGraph::shared_ptr LevenbergMarquardtOptimizer::buildDampedSystem(
cout << "building damped system with lambda " << state_.lambda << endl;
// Only retrieve diagonal vector when reuse_diagonal = false
if (params_.diagonalDamping && params_.reuse_diagonal_ == false) {
if (params_.diagonalDamping && state_.reuseDiagonal == false) {
state_.hessianDiagonal = linear.hessianDiagonal();
BOOST_FOREACH(Vector& v, state_.hessianDiagonal | map_values) {
for (int aa = 0; aa < v.size(); aa++) {
@ -263,7 +263,7 @@ void LevenbergMarquardtOptimizer::iterate() {
double linearizedCostChange = 0,
newlinearizedError = 0;
if (systemSolvedSuccessfully) {
params_.reuse_diagonal_ = true;
state_.reuseDiagonal = true;
if (lmVerbosity >= LevenbergMarquardtParams::TRYLAMBDA)
cout << "linear delta norm = " << delta.norm() << endl;

View File

@ -54,7 +54,6 @@ public:
double minModelFidelity; ///< Lower bound for the modelFidelity to accept the result of an LM iteration
std::string logFile; ///< an optional CSV log file, with [iteration, time, error, labda]
bool diagonalDamping; ///< if true, use diagonal of Hessian
bool reuse_diagonal_; ///< an additional option in Ceres for diagonalDamping (TODO: should be in state?)
bool useFixedLambdaFactor; ///< if true applies constant increase (or decrease) to lambda according to lambdaFactor
double min_diagonal; ///< when using diagonal damping saturates the minimum diagonal entries (default: 1e-6)
double max_diagonal; ///< when using diagonal damping saturates the maximum diagonal entries (default: 1e32)
@ -67,7 +66,6 @@ public:
verbosityLM(SILENT),
minModelFidelity(1e-3),
diagonalDamping(false),
reuse_diagonal_(false),
useFixedLambdaFactor(true),
min_diagonal(1e-6),
max_diagonal(1e32) {}
@ -133,11 +131,13 @@ class GTSAM_EXPORT LevenbergMarquardtState: public NonlinearOptimizerState {
public:
double lambda;
int totalNumberInnerIterations; // The total number of inner iterations in the optimization (for each iteration, LM may try multiple iterations with different lambdas)
boost::posix_time::ptime startTime;
VectorValues hessianDiagonal; //only update hessianDiagonal when reuse_diagonal_ = false
int totalNumberInnerIterations; //< The total number of inner iterations in the optimization (for each iteration, LM may try multiple iterations with different lambdas)
VectorValues hessianDiagonal; //< we only update hessianDiagonal when reuseDiagonal = false
bool reuseDiagonal; ///< an additional option in Ceres for diagonalDamping
LevenbergMarquardtState() {
LevenbergMarquardtState() :
reuseDiagonal(false) {
initTime();
}