StructuredOptimization.jl is a high-level modeling language that utilizes a syntax that is very close to the mathematical formulation of an optimization problem.

This user-friendly interface acts as a parser to utilize three different packages:

  • ProximalOperators.jl provides proximal mappings of functions that are frequently used in signal processing and optimization.

  • AbstractOperators.jl provides algorithms for the evaluation and combination of forward and (Jacobian) adjoint of linear and nonlinear mappings.

  • ProximalAlgorithms.jl is a library of proximal algorithms (aka splitting algorithms) solvers.

StructuredOptimization.jl can handle large-scale convex and nonconvex problems with nonsmooth cost functions. It supports complex variables as well. See the Quick tutorial guide and the Demos.


To install the package, hit ] from the Julia command line to enter the package manager, then

pkg> add StructuredOptimization


If you use StructuredOptimization.jl for published work, we encourage you to cite:

  • N. Antonello, L. Stella, P. Patrinos, T. van Waterschoot, “Proximal Gradient Algorithms: Applications in Signal Processing,” arXiv:1803.01621 (2018).


StructuredOptimization.jl is developed by Lorenzo Stella and Niccolò Antonello at KU Leuven, ESAT/Stadius.