-
Notifications
You must be signed in to change notification settings - Fork 36
Description
Hello,
I am trying to apply the TOS algorithm from your paper https://arxiv.org/pdf/1804.02339.pdf by using the COPT implementation. There is one detail that I do not really catch here.
Based on your article, it seems to me that the steps (lines 2-7) in Algorithm 1 of https://arxiv.org/pdf/1804.02339.pdf do not match the implementation:
Lines 130 to 144 in 28903ab
| x = prox_1(z - step_size * (u + grad_fk), step_size, *args_prox) | |
| incr = x - z | |
| norm_incr = np.linalg.norm(incr) | |
| ls = norm_incr > 1e-7 and line_search | |
| if ls: | |
| for it_ls in range(max_iter_backtracking): | |
| rhs = fk + grad_fk.dot(incr) + (norm_incr ** 2) / (2 * step_size) | |
| ls_tol = f_grad(x, return_gradient=False) - rhs | |
| if ls_tol <= LS_EPS: | |
| # step size found | |
| # if ls_tol > 0: | |
| # ls_tol = 0. | |
| break | |
| else: | |
| step_size *= backtracking_factor |
I might be wrong but shouldn't the line:
(
Line 130 in 28903ab
| x = prox_1(z - step_size * (u + grad_fk), step_size, *args_prox) |
come after the loop begins:
(
Line 135 in 28903ab
| for it_ls in range(max_iter_backtracking): |
so as to match the steps (lines 2-7) in Algorithm 1 of https://arxiv.org/pdf/1804.02339.pdf
As it is, it seems to me that the variable x is never updated during the backtracking. Am I missing something ?
Thank you for the fantastic work !