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.
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/JuliaDecisionFocusedLearning/InferOpt.jl")
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