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

Add parameterized frugal resolvent splitting example #99

Open
wants to merge 11 commits into
base: master
Choose a base branch
from

Conversation

peterbarkley
Copy link

This adds an example which builds a parameterized frugal resolvent splitting for a monotone inclusion problem. The Malitsky-Tam n operator splitting, Ryu's 3 operator splitting, Douglas-Rachford, and a new block splitting algorithm can be written in this parameterized form. It also adds a PEPit use case comparing these algorithms with fixed step size and with optimized step sizes and optimized matrices built using the dual of the PEP as in Ryu, Taylor, Bergeling, et al (2020) Operator splitting performance estimation: Tight contraction factors and optimal parameter selection.

peterbarkley and others added 3 commits August 6, 2024 15:21

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Copy link
Collaborator

@bgoujaud bgoujaud left a comment

Choose a reason for hiding this comment

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

@peterbarkley Thank you for this nice PR.
I suggested a couple of minor modifications to clear things.

In addition, it would be awesome if you could add a test per algorithm in the file test_examples.
Those tests should typically compare the results provided by PEPit with some known bounds.
Since the methods you implemented here extend known algorithms, we can compare PEPit guarantees and theoretical ones for some non-trivial instances of this method.

peterbarkley and others added 4 commits September 19, 2024 22:05

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
…itting
@peterbarkley
Copy link
Author

Thank you for the review and inputs! I will take a look at the test_examples and work on building out per-algorithm tests with theoretical references for a future PR. For the tests, it might make sense for me to generalize the FRS arguments a bit to allow a list of arbitrary operators in order to cover a wider range of theoretical results.

@bgoujaud
Copy link
Collaborator

Thank you for the review and input! I will take a look at the test_examples and work on building out per-algorithm tests with theoretical references for a future PR. For the tests, it might make sense for me to generalize the FRS arguments a bit to allow a list of arbitrary operators in order to cover a wider range of theoretical results.

Thank you for your contribution to PEPit!
If you think it would be better to consider more general operators than gradients, please feel free to modify the example files with Operators instead of Functions.

The tests must be simple sanity checks to ensure we did not miss a mistake in the implementation of the examples. That is why there should be one test per example file (i.e. 2 tests), consisting of running your example with a configuration for which we know the guarantee or an upper bound of it. For instance, setting the right matrices to encode the Douglas-Rachford splitting method would allow us to compare PEPit's output with its theoretical guarantee.

peterbarkley and others added 2 commits September 20, 2024 16:09

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
…itting
…rs. Add FRS tests using Douglas-Rachford matrices.
@peterbarkley
Copy link
Author

Added the operator examples in the docstring and the two tests using the Douglas-Rachford matrices and the same operators and alpha/gamma settings as the existing Douglas-Rachford example.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
…itting
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.

None yet

2 participants