ProximalAlgorithms.jl
ProximalAlgorithms.jl copied to clipboard
Proximal algorithms for nonsmooth optimization in Julia
If you don't want questions in your issues, please just delete. We have complicated constraints that can not (or at least it is not obvious how to) be enforced via...
I managed to get most algorithms running on the Sparse regression example, but not the DRLS algorithm. I guess it should be applicable to sparse regression, but what needs to...
Hi there! I was wondering if you'd be interested in a PR that abstracts away the Zygote dependency by adopting the formalism from [AbstractDifferentiation](https://github.com/JuliaDiff/AbstractDifferentiation.jl)?
Right now the package falls back to Zygote for computing gradients using automatic differentiation. It would be nice to add support for multiple AD backends (ReverseDiff, Enzyme, Yota, Nabla, Diffractor…...
Some algorithms code may be improved (and maybe sped up?) by using the 5-arguments version of `mul!` (requires Julia 1.3), see https://docs.julialang.org/en/v1/stdlib/LinearAlgebra/#LinearAlgebra.mul! For example, the code here could probably use...
Some things that could improve about verbose mode: * Currently, verbose execution of algorithms displays a sequence of unspecified values. Verbose mode should either display a “table header” at the...
Some of the methods which are usually implemented for Julia iterators are not yet defined on the algorithms iterator types: - `IteratorEltype` - `eltype`
Some quantities computed in [FBS](https://github.com/kul-forbes/ProximalAlgorithms.jl/blob/master/src/algorithms/forwardbackward.jl#L63) and [PANOC](https://github.com/kul-forbes/ProximalAlgorithms.jl/blob/master/src/algorithms/panoc.jl#L86) could probably be pre-allocated. We should consider doing this in case significant performance improvement is obtained.
Currently, the step size `gamma` parameter can only decrease, eg at https://github.com/JuliaFirstOrder/ProximalAlgorithms.jl/blob/dc0342ca6fa3f6730168b3dcad9a1bd64187d875/src/algorithms/fast_forward_backward.jl#L92 However, sometimes larger step sizes can be performed at some point during iteration. I tried doing `state.gamma *=...
This PR adds the possibility to run algorithms with a linesearch procedure in a nonmonotone variant. In particular, - this feature addresses algorithms such as `PANOC`, `PANOCplus`, `ZeroFPR` and `DRLS`;...