Homogenize convergence operators in docs and code Change-Id: Iec7c12e971b331d1847f9aa91349317eb6524856
diff --git a/docs/source/gradient_solver.rst b/docs/source/gradient_solver.rst index cf06530..1ef1515 100644 --- a/docs/source/gradient_solver.rst +++ b/docs/source/gradient_solver.rst
@@ -327,11 +327,10 @@ Solver terminates if - .. math:: \frac{|\Delta \text{cost}|}{\text{cost}} < \text{function_tolerance} + .. math:: \frac{|\Delta \text{cost}|}{\text{cost}} <= \text{function_tolerance} where, :math:`\Delta \text{cost}` is the change in objective - function value (up or down) in the current iteration of - Levenberg-Marquardt. + function value (up or down) in the current iteration of the line search. .. member:: double GradientProblemSolver::Options::gradient_tolerance @@ -339,13 +338,24 @@ Solver terminates if - .. math:: \|x - \Pi \boxplus(x, -g(x))\|_\infty < \text{gradient_tolerance} + .. math:: \|x - \Pi \boxplus(x, -g(x))\|_\infty <= \text{gradient_tolerance} where :math:`\|\cdot\|_\infty` refers to the max norm, :math:`\Pi` is projection onto the bounds constraints and :math:`\boxplus` is Plus operation for the overall local parameterization associated with the parameter vector. +.. member:: double GradientProblemSolver::Options::parameter_tolerance + + Default: ``1e-8`` + + Solver terminates if + + .. math:: \|\Delta x\| <= (\|x\| + \text{parameter_tolerance}) * \text{parameter_tolerance} + + where :math:`\Delta x` is the step computed by the linear solver in + the current iteration of the line search. + .. member:: LoggingType GradientProblemSolver::Options::logging_type Default: ``PER_MINIMIZER_ITERATION``
diff --git a/docs/source/nnls_solving.rst b/docs/source/nnls_solving.rst index 95f1a36..d3a6479 100644 --- a/docs/source/nnls_solving.rst +++ b/docs/source/nnls_solving.rst
@@ -1156,7 +1156,7 @@ Solver terminates if - .. math:: \frac{|\Delta \text{cost}|}{\text{cost}} < \text{function_tolerance} + .. math:: \frac{|\Delta \text{cost}|}{\text{cost}} <= \text{function_tolerance} where, :math:`\Delta \text{cost}` is the change in objective function value (up or down) in the current iteration of @@ -1168,7 +1168,7 @@ Solver terminates if - .. math:: \|x - \Pi \boxplus(x, -g(x))\|_\infty < \text{gradient_tolerance} + .. math:: \|x - \Pi \boxplus(x, -g(x))\|_\infty <= \text{gradient_tolerance} where :math:`\|\cdot\|_\infty` refers to the max norm, :math:`\Pi` is projection onto the bounds constraints and :math:`\boxplus` is @@ -1181,10 +1181,10 @@ Solver terminates if - .. math:: \|\Delta x\| < (\|x\| + \text{parameter_tolerance}) * \text{parameter_tolerance} + .. math:: \|\Delta x\| <= (\|x\| + \text{parameter_tolerance}) * \text{parameter_tolerance} where :math:`\Delta x` is the step computed by the linear solver in - the current iteration of Levenberg-Marquardt. + the current iteration. .. member:: LinearSolverType Solver::Options::linear_solver_type
diff --git a/internal/ceres/line_search_minimizer.cc b/internal/ceres/line_search_minimizer.cc index 0d29b3e..62264fb 100644 --- a/internal/ceres/line_search_minimizer.cc +++ b/internal/ceres/line_search_minimizer.cc
@@ -412,7 +412,7 @@ const double absolute_function_tolerance = options.function_tolerance * previous_state.cost; - if (fabs(iteration_summary.cost_change) < absolute_function_tolerance) { + if (fabs(iteration_summary.cost_change) <= absolute_function_tolerance) { summary->message = StringPrintf("Function tolerance reached. " "|cost_change|/cost: %e <= %e",
diff --git a/internal/ceres/trust_region_minimizer.cc b/internal/ceres/trust_region_minimizer.cc index e490768..d654d08 100644 --- a/internal/ceres/trust_region_minimizer.cc +++ b/internal/ceres/trust_region_minimizer.cc
@@ -489,7 +489,7 @@ iteration_summary.cost_change = cost - new_cost; const double absolute_function_tolerance = options_.function_tolerance * cost; - if (fabs(iteration_summary.cost_change) < absolute_function_tolerance) { + if (fabs(iteration_summary.cost_change) <= absolute_function_tolerance) { summary->message = StringPrintf("Function tolerance reached. " "|cost_change|/cost: %e <= %e",