-
Notifications
You must be signed in to change notification settings - Fork 24
StructuredOptimization-related changes + new algorithms #100
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
base: master
Are you sure you want to change the base?
Conversation
- separate default_iteration_summary function from default_display function and allow overriding them separately through general IterativeAlgorithm interface - improve default display function by showing header and automatically figuring out optimal column width - add override_parameters function - get_addumptions function return AssumptionGroup instead of a Tuple - improve ADMM type stability - fix errors in CG - introduce CGNR algorithm as a variation of CG algorithm - preallocate more in DavisYin, DouglasRachford, and FastForwardBackward - minor fixes in docstrings
|
@hakkelt I see that you're attempting various changes in different packages, all motivated by StructuredOptimization. I think it might be fine to move some core definitions to ProximalCore, but I would encourage you to:
|
|
Thanks for the feedback, and sorry for the messy PRs. Would it help if I discard this PR and break the changes included in it into multiple smaller pull requests, submitting them one by one? Concerning |
|
Instead of this large PR, I'll make multiple smaller, more focused PRs, starting with #101 |
|
Thanks @hakkelt, I’ll take a look at it asap |
This PR is part of the effort to make StructuredOptimization as general as possible (see the PR on OperatorCore: JuliaFirstOrder/ProximalCore.jl#5).
Changes:
get_assumptionsfunction defined for all algorithms that allows querying the requirements for the algorithm's parameters (e.g.,fmust beis_smooth,gmust beis_proximable). The function returns a dict-like object that has the names of the parameters as keys and a tuple of functions that are expected to returntruefor all allowed inputs as values. The concept is to enable automatic decisions on how to feed functions of the ProximalOperators package and operators of AbstractOperators to the algorithms.default_iteration_summaryfunction fromdefault_displayfunction and allow overriding them separately through the generalIterativeAlgorithminterface.override_parametersfunction that allows overwriting values of fields inIterativeAlgorithmstruct by creating a copy with changed values. I use this in a high-level package to inject defaultmaxitandatolvalues into the user-provided algorithm.This PR contains no breaking changes (as far as I know), only introduces new features.