Various comments
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
Research direction
Start by reviewing the current LineSearch.jl API and comparing the questions raised about Hager-Zhang in NonlinearSolve.jl, inner products in Optim.jl, and manifold step limits in Manopt.jl. No file or test is named, so the scope must first be narrowed to a specific proposal; done would require an agreed design, implementation target, and corresponding validation.
Written by the indexing model from the issue text.
Description
A few comments about line searches, potentially relevant to the work here.
- Hager-Zhang line search is in my experience a very good method for gradient-based line searches but it seems to be absent from NonlinearSolve.jl , other than through
LineSearchesJL. Is it planned to be re-implemented here? - Nonlinear gradient-based line searches actually need to compute inner products between gradient at a point and vector-transported descent direction. See here for example: https://arxiv.org/pdf/2207.01855.pdf . It means that for constrained optimization we need to do the transport (projection would often be fine but not necessarily always the best choice).
- The inner product actually doesn't require the full gradient. Optim.jl currently doesn't exploit it but it's something that crossed my mind when analyzing the code. We should sometimes be able to compute such products faster than the full gradient +
dot. For example forward mode AD would handle this perfectly fine. Maybe that's something you could consider. - Default max stepsize: I've encountered some problems in which the stepsize found by line search greatly exceeded (by orders of magnitude) the injectivity radius of exponential map. Manopt.jl patches it by using a manifold-dependent max stepsize (for example $\pi$ for a sphere). LineSearches.jl always defaults to
Inf.
- Dominant language
- Julia
- Stars
- 5
- Forks
- 7
- Avg merge
- 1h 51m
- Merged PRs (30d)
- 12
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from SciML/LineSearch.jl
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
SciML/LineSearch.jl#47 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 38/100
SciML/LineSearch.jl#38 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 35/100
SciML/LineSearch.jl#32 · 1 comment ·
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
SciML/LineSearch.jl#31 ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 45/100
SciML/LineSearch.jl#19 ·
All issues in SciML/LineSearch.jl
Similar issues
-
tagbot-manual
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Sienna-Platform/PowerSystems.jl#1800 ·
-
enhancement good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100