InferOpt.jl

Stable Dev Build Status Coverage Code Style: Blue Aqua QA

Overview

InferOpt.jl is a toolbox for using combinatorial optimization algorithms within machine learning pipelines.

It allows you to create differentiable layers from optimization oracles that do not have meaningful derivatives. Typical examples include mixed integer linear programs or graph algorithms.

Getting started

To install the stable version, open a Julia REPL and run the following command:

julia> using Pkg; Pkg.add("InferOpt")

To install the development version, run this command instead:

julia> using Pkg; Pkg.add(url="https://github.com/axelparmentier/InferOpt.jl")

Citing us

If you use our package in your research, please cite the following paper:

Learning with Combinatorial Optimization Layers: a Probabilistic Approach - Guillaume Dalle, Léo Baty, Louis Bouvier and Axel Parmentier (2022)

The following libraries implement similar functionalities:

  • ImplicitDifferentiation.jl: automatic differentiation of implicit functions
  • DiffOpt.jl: differentiating convex optimization programs w.r.t. program parameters
  • JAXopt: hardware accelerated, batchable and differentiable optimizers in JAX