https://github.com/juliafirstorder/proximalalgorithms.jl
Proximal algorithms for nonsmooth optimization in Julia
https://github.com/juliafirstorder/proximalalgorithms.jl
admm julia machine-learning nonlinear-programming nonsmooth-optimization numerical-optimization optimal-control optimization optimization-algorithms proximal-algorithms proximal-gradient-method proximal-operators
Last synced: 3 months ago
JSON representation
Proximal algorithms for nonsmooth optimization in Julia
- Host: GitHub
- URL: https://github.com/juliafirstorder/proximalalgorithms.jl
- Owner: JuliaFirstOrder
- License: other
- Created: 2017-10-19T06:32:05.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-01-05T16:53:28.000Z (6 months ago)
- Last Synced: 2025-03-29T00:07:09.736Z (3 months ago)
- Topics: admm, julia, machine-learning, nonlinear-programming, nonsmooth-optimization, numerical-optimization, optimal-control, optimization, optimization-algorithms, proximal-algorithms, proximal-gradient-method, proximal-operators
- Language: Julia
- Homepage:
- Size: 5.79 MB
- Stars: 133
- Watchers: 10
- Forks: 22
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Citation: CITATION.cff
Awesome Lists containing this project
README
# ProximalAlgorithms.jl
[](https://github.com/JuliaFirstOrder/ProximalAlgorithms.jl/actions?query=workflow%3ACI)
[](https://github.com/JuliaTesting/Aqua.jl)
[](https://juliafirstorder.github.io/ProximalAlgorithms.jl/stable)
[](https://juliafirstorder.github.io/ProximalAlgorithms.jl/dev)A Julia package for non-smooth optimization algorithms.
This package provides algorithms for the minimization of objective functions
that include non-smooth terms, such as constraints or non-differentiable penalties.
Implemented algorithms include:
- (Fast) Proximal gradient methods
- Douglas-Rachford splitting
- Three-term splitting
- Primal-dual splitting algorithms
- Newton-type methodsCheck out [this section](https://juliafirstorder.github.io/ProximalAlgorithms.jl/stable/guide/implemented_algorithms/) for an overview of the available algorithms.
Algorithms rely on:
- [DifferentiationInterface.jl](https://github.com/gdalle/DifferentiationInterface.jl) for automatic differentiation (but you can easily bring your own gradients)
- the [ProximalCore API](https://github.com/JuliaFirstOrder/ProximalCore.jl) for proximal mappings, projections, etc, to handle non-differentiable terms (see for example [ProximalOperators](https://github.com/JuliaFirstOrder/ProximalOperators.jl) for an extensive collection of functions).## Documentation
[Stable version](https://juliafirstorder.github.io/ProximalAlgorithms.jl/stable) (latest release)
[Development version](https://juliafirstorder.github.io/ProximalAlgorithms.jl/dev) (`master` branch)
## Citing
If you use any of the algorithms from ProximalAlgorithms in your research, you are kindly asked to cite the relevant bibliography.
Please check [this section of the manual](https://juliafirstorder.github.io/ProximalAlgorithms.jl/stable/guide/implemented_algorithms/) for algorithm-specific references.## Contributing
Contributions are welcome in the form of [issues notification](https://github.com/JuliaFirstOrder/ProximalAlgorithms.jl/issues) or [pull requests](https://github.com/JuliaFirstOrder/ProximalAlgorithms.jl/pulls). We recommend looking at already implemented algorithms to get inspiration on how to structure new ones.