Skip to content

Commit f842fd4

Browse files
committed
rescale grad norm tol in line search
1 parent a24aa73 commit f842fd4

File tree

4 files changed

+4
-3
lines changed

4 files changed

+4
-3
lines changed

src/polysolve/nonlinear/Solver.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,9 +246,8 @@ namespace polysolve::nonlinear
246246
m_line_search = line_search::LineSearch::create(params, m_logger);
247247
solver_info["line_search"] = params["line_search"]["method"];
248248
m_line_search->use_grad_norm_tol = params["line_search"]["use_grad_norm_tol"];
249-
m_line_search->use_grad_norm_tol *= characteristic_length;
250249
m_line_search->rel_interpolation_accuracy_tol = params["rel_grad_norm_tol"];
251-
m_line_search->rel_interpolation_accuracy_tol *= 1e2;
250+
// m_line_search->rel_interpolation_accuracy_tol *= 1e2;
252251
m_line_search->norm_type = params["norm_type"];
253252
}
254253

src/polysolve/nonlinear/Solver.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ namespace polysolve::nonlinear
117117
m_stop_rescaled.relGradNorm = m_stop.relGradNorm;
118118
m_stop_rescaled.relXDelta = m_stop.relXDelta;
119119
m_stop_rescaled.newtonDecrement = m_stop.newtonDecrement * objFunc.energy_norm_rescaling(norm_type);
120+
m_line_search->grad_norm_rescaling = objFunc.grad_norm_rescaling(norm_type);
120121
}
121122

122123
/// @brief Stopping criteria

src/polysolve/nonlinear/line_search/LineSearch.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ namespace polysolve::nonlinear::line_search
138138
return step_size;
139139

140140
// TODO: Fix this
141-
const bool use_grad_norm = objFunc.grad_norm(initial_grad, norm_type) < use_grad_norm_tol;
141+
const bool use_grad_norm = objFunc.grad_norm(initial_grad, norm_type) < use_grad_norm_tol * grad_norm_rescaling;
142142
const double starting_step_size = step_size;
143143

144144
// ----------------------

src/polysolve/nonlinear/line_search/LineSearch.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ namespace polysolve::nonlinear::line_search
7474
double classical_line_search_time;
7575

7676
double use_grad_norm_tol = -1;
77+
double grad_norm_rescaling = 1;
7778
bool try_interpolating_step;
7879
double rel_interpolation_accuracy_tol = 0;
7980
std::string norm_type = "Euclidean";

0 commit comments

Comments
 (0)