Skip to content
Snippets Groups Projects

Branch-screening tests for the L0-penalized least-square problem

This repository contains numerical procedures linked to the paper

Théo Guyard, Cédric Herzet, Clément Elvira, Node-screening tests for L0-penalized least-squares problem with supplementary material

available here. If you encounter a bug or something unexpected, please let me know by raising an issue on the project page or by contacting me by mail.

Requirements

This repository works with Julia v1.5+. Please refer to the Julia download page for install instructions.

Dependencies : JuMP.jl, CPLEX.jl, Distributions.jl, StatsBase.jl

Our code works with the CPLEX solver through CPLEX.jl. You cannot use CPLEX without having purchased and installed a copy of CPLEX Optimization Studio from IBM. However, CPLEX is available for free to academics and students. We recommend you to follow carefully the install instructions described at CPLEX.jl to install the package.

Install instructions

  1. Clone the repository
git clone https://gitlab.insa-rennes.fr/Theo.Guyard/bnb-screening.git
  1. Enter in the project root folder
cd bnb-screening
  1. Ensure that Julia v1.5+ is installed
julia -v
> julia version 1.5.3 (or higher)
  1. Install dependencies using Julia's Pkg in REPL mode
(@v1.5) pkg> activate .
(bnb-screening) pkg> instantiate

It is possible that you also have to build CPLEX.jl manually with the command

(bnb-screening) pkg> build CPLEX

ICASSP experiments

Experiments presented in the paper submitted to ICASSP 2022 are located in the folder bnb-screening/exp/ICASSP/. The available experiments are

  • performances.jl corresponding to results of table 1

Run experiments directly from the project root folder as follows.

julia --project=. -t 1 exp/ICASSP/performances.jl

The --project=. flag installs and builds dependencies if needed. The -t 1 flag restricts computations to only 1 CPU core in order to avoid bias due to parallelization capabilities. Logs of the experiment are saved in the same folder as performances.jl. You can edit the experimental setup directly in the script, which is well commented.

Running demo examples

The bnb-screening/examples/ folder contains portions of code explaining how to use our package. You can run these scripts as follows.

julia --project=. examples/solve_bnb.jl
julia --project=. examples/solve_mip.jl

Licence

This software is distributed under the MIT Licence.

Cite this work

If you use this package for your own work, please consider citing it as :

@article{guyard2021node,
  title={Node-screening tests for L0-penalized least-squares problem with supplementary material},
  author={Guyard, Th{\'e}o and Herzet, C{\'e}dric and Elvira, Cl{\'e}ment},
  journal={arXiv preprint arXiv:2110.07308},
  year={2021}
}