/El0ps.jl

An Exact L0-penalized Problem Solver.

Primary LanguageJuliaGNU Affero General Public License v3.0AGPL-3.0

El0ps.jl

An Exact L0-penalized Problem Solver.

Build Status Coverage Code Style: Blue

Summary

This package provides solution methods to address L0-penalized problems of the form

$$\min_{\mathbf{x}} \ f(\mathbf{A}\mathbf{x}) + \lambda \big(||\mathbf{x}||_0 + h(\mathbf{x})\big)$$

where $f(\cdot)$ is a convex and differentiable function, where $h(\cdot)$ is a convex and seprable function and where $\lambda>0$ is an hyper-parameter.

Features

🖥 Interfaces

  • Simple problem instantiation

  • Allows user-defined functions $f(\cdot)$ and $h(\cdot)$

  • Popular choices of $f(\cdot)$ and $h(\cdot)$ already implemented

  • Regularization path fitting

🚀 Solution methods

  • Branch-and-Bound algorithm
  • Specialized exploration strategies
  • Specialized branching strategies
  • Efficient bounding solver
  • Structure-exploiting acceleration methods
  • Robust to dimensionality scaling

Installation

Our package can be installed through Julia's Pkg manager as follows:

pkg> add "https://github.com/TheoGuyard/El0ps.jl"

Project status

The package is still in beta version and is not accessible through Julia's general registry yet. An alpha version will be released soon. The current version is tested against Julia 1.7 and 1.8 on Linux architectures. Please report any problem on the issue page. Feel free to suggest improvements via a pull request !

License

This software is distributed under the GNU AGPL-3 license.

Citation

To cite this package, please refer to the following paper (in french):

@inproceedings{guyard2023solveur,
  title={Un solveur efficace pour la r{\'e}solution de probl{\`e}mes parcimonieux avec p{\'e}nalit{\'e} L0},
  author={Guyard, Theo},
  booktitle={24{\`e}me {\'e}dition du congr{\`e}s annuel de la Soci{\'e}t{\'e} Fran{\c{c}}aise de Recherche Op{\'e}rationnelle et d'Aide {\`a} la D{\'e}cision},
  year={2023}
}