A toolbox for constrained structured optimization in Julia.
This package contains optimization algorithms designed to find (local) minimizers of mathematical problems of the form
minimize f(x) + g(x)
over x ∈ Rⁿ
subject to c(x) ∈ D
where f
and c
have locally Lipschitz-continuous gradient, g
is proper and lower semi-continuous, and D
is a nonempty closed set.
All these terms can be nonconvex, but g
and D
should be prox-friendly.
The problem terms are accessed through some oracles:
f
: function value f(x) and gradient ∇f(x)g
: proximal mapping prox_g(x) and function value at proximal point g(z)c
: function value c(x) and Jacobian-vector product ∇c(x)ᵀvD
: projection mapping proj_D(v)
ProximalOperators.jl provides first-order primitives (gradient and proximal mapping) for modelling problems and giving access to the oracles of interest. The PANOCplus
solver offered by ProximalAlgorithms.jl is adopted as default to solve subproblems arising in the augmented Lagrangian framework.
If you are using Bazinga for your work or research, we encourage you to cite our research papers, where you can find more details on the mathematical background.
@article{demarchi2023constrained,
author = {De~Marchi, Alberto and Jia, Xiaoxi and Kanzow, Christian and Mehlitz, Patrick},
title = {Constrained composite optimization and augmented {L}agrangian methods},
journal = {Mathematical Programming},
year = {2023},
month = {9},
volume = {201},
number = {1},
pages = {863--896},
doi = {10.1007/s10107-022-01922-4},
}
@article{demarchi2024implicit,
author = {De~Marchi, Alberto},
title = {Implicit augmented {L}agrangian and generalized optimization},
journal = {Journal of Applied and Numerical Optimization},
year = {2024},
pages = {291--320},
volume = {6},
number = {2},
doi = {10.23952/jano.6.2024.2.08},
}
We are looking forward to hearing your success stories with Bazinga! Please share them with us.
Please report any issues via the Github issue tracker. All types of issues are welcome including bug reports, typos, feature requests and so on.