Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fomo nonmonotone extension #267

Merged
merged 18 commits into from
Apr 13, 2024
Merged

Conversation

d-monnet
Copy link
Contributor

@d-monnet d-monnet commented Apr 5, 2024

Add non-monotone strategy to fomo solver.
Modifies conditions on momentum contribution.

Related paper can be shared upon request.

@d-monnet d-monnet requested review from dpo and tmigot April 5, 2024 16:52
Copy link

codecov bot commented Apr 5, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 86.66%. Comparing base (3d05513) to head (1e1368e).
Report is 4 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #267      +/-   ##
==========================================
- Coverage   88.33%   86.66%   -1.67%     
==========================================
  Files           7        7              
  Lines        1106     1125      +19     
==========================================
- Hits          977      975       -2     
- Misses        129      150      +21     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

github-actions bot commented Apr 5, 2024

Package name latest stable
FletcherPenaltySolver.jl
Percival.jl

tmigot and others added 4 commits April 9, 2024 07:28
* add unbounded below obj test. Fix unbounded test in fomo.

* add unbounded below obj test. Fix unbounded test in fomo.

* standardize fomo :unbounded condition,
add objective value test in unbounded tests.

* rename: fk -> f0
Copy link
Member

@tmigot tmigot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @d-monnet for the PR! I made a first batch of comments.
You should also add unit tests for this variant.

src/fomo.jl Outdated Show resolved Hide resolved
src/fomo.jl Outdated Show resolved Hide resolved
src/fomo.jl Outdated Show resolved Hide resolved
src/fomo.jl Outdated Show resolved Hide resolved
src/fomo.jl Outdated Show resolved Hide resolved
src/fomo.jl Outdated Show resolved Hide resolved
src/fomo.jl Outdated Show resolved Hide resolved
src/fomo.jl Outdated Show resolved Hide resolved
src/fomo.jl Outdated Show resolved Hide resolved
src/fomo.jl Outdated Show resolved Hide resolved
Copy link
Member

@tmigot tmigot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@d-monnet Would you have a simple example or an illustration of the nonmonotone vs. monotone?

src/fomo.jl Outdated Show resolved Hide resolved
@d-monnet
Copy link
Contributor Author

d-monnet commented Apr 11, 2024

@d-monnet Would you have a simple example or an illustration of the nonmonotone vs. monotone?

Not a simple example, but here are the perf profile (iterations) for R2, TR, and fomo with r2 and tr steps.
Profiles were obtained on 74 unconstrained problems of ADNLPProblems, run with Float64 with atol=rtol = 1e-4 and default parameters.

Looks like we have a bug with the labels when using label kwargs with profile_solvers by the way: 2 by 2 comparison labels are wrong.

FOMO(R2)_1000
FOMO(TR)_1000
R2_1000
TR_1000

@tmigot
Copy link
Member

tmigot commented Apr 12, 2024

@d-monnet Would you have a simple example or an illustration of the nonmonotone vs. monotone?

Not a simple example, but here are the perf profile (iterations) for R2, TR, and fomo with r2 and tr steps. Profiles were obtained on 74 unconstrained problems of ADNLPProblems, run with Float64 with atol=rtol = 1e-4 and default parameters.

Looks like we have a bug with the labels when using label kwargs with profile_solvers by the way: 2 by 2 comparison labels are wrong.

FOMO(R2)_1000 FOMO(TR)_1000 R2_1000 TR_1000

That's awesome! In case, you still have the result of this benchmark, maybe you can find an example of a problem that has been solved by nonmonotone that has not been solved by monotone?
I think we should plan a relatively short tutorial on this 1D methods and such an example would be really great.

Copy link
Member

@tmigot tmigot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @d-monnet it looks good to me! Just one last typo.

When updating your branch to the current code, in JSO, we use git rebase instead of git merge. This would avoid duplicating the changes in your PR.

src/fomo.jl Outdated Show resolved Hide resolved
Co-authored-by: Tangi Migot <[email protected]>
@d-monnet
Copy link
Contributor Author

Thanks @d-monnet it looks good to me! Just one last typo.

When updating your branch to the current code, in JSO, we use git rebase instead of git merge. This would avoid duplicating the changes in your PR.

That's what I was planning to do, but I messed something up with VS Code interface...

@d-monnet
Copy link
Contributor Author

@d-monnet Would you have a simple example or an illustration of the nonmonotone vs. monotone?

Not a simple example, but here are the perf profile (iterations) for R2, TR, and fomo with r2 and tr steps. Profiles were obtained on 74 unconstrained problems of ADNLPProblems, run with Float64 with atol=rtol = 1e-4 and default parameters.
Looks like we have a bug with the labels when using label kwargs with profile_solvers by the way: 2 by 2 comparison labels are wrong.
FOMO(R2)_1000 FOMO(TR)_1000 R2_1000 TR_1000

That's awesome! In case, you still have the result of this benchmark, maybe you can find an example of a problem that has been solved by nonmonotone that has not been solved by monotone? I think we should plan a relatively short tutorial on this 1D methods and such an example would be really great.

I'll look into it and start working on a tutorial.

@d-monnet d-monnet merged commit 866492f into JuliaSmoothOptimizers:main Apr 13, 2024
20 of 21 checks passed
@d-monnet d-monnet deleted the fomo-nonmono branch April 13, 2024 19:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants