Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 6 days 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 (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-10-01T10:02:55.000Z (3 months ago)
- Last Synced: 2024-12-22T22:54:00.894Z (11 days 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.7 MB
- Stars: 130
- Watchers: 11
- Forks: 21
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Citation: CITATION.cff
Awesome Lists containing this project
README
# ProximalAlgorithms.jl
[![Build status](https://github.com/JuliaFirstOrder/ProximalAlgorithms.jl/workflows/CI/badge.svg)](https://github.com/JuliaFirstOrder/ProximalAlgorithms.jl/actions?query=workflow%3ACI)
[![Aqua QA](https://raw.githubusercontent.com/JuliaTesting/Aqua.jl/master/badge.svg)](https://github.com/JuliaTesting/Aqua.jl)
[![](https://img.shields.io/badge/docs-stable-blue.svg)](https://juliafirstorder.github.io/ProximalAlgorithms.jl/stable)
[![](https://img.shields.io/badge/docs-dev-blue.svg)](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.