Add GradientProblemSolver::Options::parameter_tolerance. Support for parameter tolerance was added to the line search minimizer was added a while ago, and calling Solve on a non-linear least squares problem supported it but for some reason the GradientProblemSolver::Options struct was missing this option even though the documentation suggested that it was present! Thanks to Noah Snavely for reporting this bug. Change-Id: I57cf4ab396bc822c19fa298529e113b89664a349
diff --git a/include/ceres/gradient_problem_solver.h b/include/ceres/gradient_problem_solver.h index a7d0121..546dc34 100644 --- a/include/ceres/gradient_problem_solver.h +++ b/include/ceres/gradient_problem_solver.h
@@ -74,6 +74,7 @@ max_solver_time_in_seconds = 1e9; function_tolerance = 1e-6; gradient_tolerance = 1e-10; + parameter_tolerance = 1e-8; logging_type = PER_MINIMIZER_ITERATION; minimizer_progress_to_stdout = false; } @@ -236,6 +237,12 @@ // This value should typically be 1e-4 * function_tolerance. double gradient_tolerance; + // Minimizer terminates when + // + // |step|_2 <= parameter_tolerance * ( |x|_2 + parameter_tolerance) + // + double parameter_tolerance; + // Logging options --------------------------------------------------------- LoggingType logging_type;
diff --git a/internal/ceres/gradient_problem_solver.cc b/internal/ceres/gradient_problem_solver.cc index 8709f8f..018401d 100644 --- a/internal/ceres/gradient_problem_solver.cc +++ b/internal/ceres/gradient_problem_solver.cc
@@ -72,6 +72,7 @@ COPY_OPTION(max_line_search_step_expansion); COPY_OPTION(max_num_iterations); COPY_OPTION(max_solver_time_in_seconds); + COPY_OPTION(parameter_tolerance); COPY_OPTION(function_tolerance); COPY_OPTION(gradient_tolerance); COPY_OPTION(logging_type);