Fix and enhance GradientProblemSolver::Summary::FullReport

1. Fix a bug which was causing the cost and gradient evaluation
   time to not be reported.
2. Add the number of times cost and gradients are evaluated to
   the Summary object and to the output of FullReport.

Change-Id: Id0703cd2dafbf437f3e537fbdc30ae81d5f4f540
This commit is contained in:
Sameer Agarwal
2017-06-28 06:26:04 -07:00
parent 62af68d8df
commit a9977da3eb
4 changed files with 30 additions and 9 deletions
+14 -9
View File
@@ -166,10 +166,15 @@ void GradientProblemSolver::Solve(const GradientProblemSolver::Options& options,
const std::map<string, double>& evaluator_time_statistics =
minimizer_options.evaluator->TimeStatistics();
summary->cost_evaluation_time_in_seconds =
FindWithDefault(evaluator_time_statistics, "Evaluator::Residual", 0.0);
FindWithDefault(evaluator_time_statistics, "Evaluator::Cost", 0.0);
summary->gradient_evaluation_time_in_seconds =
FindWithDefault(evaluator_time_statistics, "Evaluator::Jacobian", 0.0);
FindWithDefault(evaluator_time_statistics, "Evaluator::Gradient", 0.0);
const std::map<string, int>& evaluator_call_statistics =
minimizer_options.evaluator->CallStatistics();
summary->num_cost_evaluations =
FindWithDefault(evaluator_call_statistics, "Evaluator::Cost", 0);
summary->num_gradient_evaluations =
FindWithDefault(evaluator_call_statistics, "Evaluator::Gradient", 0);
summary->total_time_in_seconds = WallTimeInSeconds() - start_time;
}
@@ -257,14 +262,14 @@ string GradientProblemSolver::Summary::FullReport() const {
static_cast<int>(iterations.size()));
StringAppendF(&report, "\nTime (in seconds):\n");
StringAppendF(&report, "\n Cost evaluation %23.4f\n",
cost_evaluation_time_in_seconds);
StringAppendF(&report, " Gradient evaluation %23.4f\n",
gradient_evaluation_time_in_seconds);
StringAppendF(&report, "\n Cost evaluation %23.4f(%d)\n",
cost_evaluation_time_in_seconds,
num_cost_evaluations);
StringAppendF(&report, " Gradient evaluation %23.4f(%d)\n",
gradient_evaluation_time_in_seconds,
num_gradient_evaluations);
StringAppendF(&report, " Polynomial minimization %17.4f\n",
line_search_polynomial_minimization_time_in_seconds);
StringAppendF(&report, "Total %25.4f\n\n",
total_time_in_seconds);