• Stars
    star
    344
  • Rank 123,066 (Top 3 %)
  • Language
    Python
  • License
    MIT License
  • Created over 5 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Exact Combinatorial Optimization with Graph Convolutional Neural Networks (NeurIPS 2019)

Update: check out library Ecole, which reimplements everything you'll need for learning to branch, in a nice and clean Python package (paper here).

Exact Combinatorial Optimization with Graph Convolutional Neural Networks

Maxime Gasse, Didier Chételat, Nicola Ferroni, Laurent Charlin, Andrea Lodi

This is the official implementation of our NeurIPS 2019 paper.

Installation

See installation instructions here.

Running the experiments

Set Covering

# Generate MILP instances
python 01_generate_instances.py setcover
# Generate supervised learning datasets
python 02_generate_samples.py setcover -j 4  # number of available CPUs
# Training
for i in {0..4}
do
    python 03_train_gcnn.py setcover -m baseline -s $i
    python 03_train_gcnn.py setcover -m mean_convolution -s $i
    python 03_train_gcnn.py setcover -m no_prenorm -s $i
    python 03_train_competitor.py setcover -m extratrees -s $i
    python 03_train_competitor.py setcover -m svmrank -s $i
    python 03_train_competitor.py setcover -m lambdamart -s $i
done
# Test
python 04_test.py setcover
# Evaluation
python 05_evaluate.py setcover

Combinatorial Auction

# Generate MILP instances
python 01_generate_instances.py cauctions
# Generate supervised learning datasets
python 02_generate_samples.py cauctions -j 4  # number of available CPUs
# Training
for i in {0..4}
do
    python 03_train_gcnn.py cauctions -m baseline -s $i
    python 03_train_competitor.py cauctions -m extratrees -s $i
    python 03_train_competitor.py cauctions -m svmrank -s $i
    python 03_train_competitor.py cauctions -m lambdamart -s $i
done
# Test
python 04_test.py cauctions
# Evaluation
python 05_evaluate.py cauctions

Capacitated Facility Location

# Generate MILP instances
python 01_generate_instances.py facilities
# Generate supervised learning datasets
python 02_generate_samples.py facilities -j 4  # number of available CPUs
# Training
for i in {0..4}
do
    python 03_train_gcnn.py facilities -m baseline -s $i
    python 03_train_competitor.py facilities -m extratrees -s $i
    python 03_train_competitor.py facilities -m svmrank -s $i
    python 03_train_competitor.py facilities -m lambdamart -s $i
done
# Test
python 04_test.py facilities
# Evaluation
python 05_evaluate.py facilities

Maximum Independent Set

# Generate MILP instances
python 01_generate_instances.py indset
# Generate supervised learning datasets
python 02_generate_samples.py indset -j 4  # number of available CPUs
# Training
for i in {0..4}
do
    python 03_train_gcnn.py indset -m baseline -s $i
    python 03_train_competitor.py indset -m extratrees -s $i
    python 03_train_competitor.py indset -m svmrank -s $i
    python 03_train_competitor.py indset -m lambdamart -s $i
done
# Test
python 04_test.py indset
# Evaluation
python 05_evaluate.py indset

Citation

Please cite our paper if you use this code in your work.

@inproceedings{conf/nips/GasseCFCL19,
  title={Exact Combinatorial Optimization with Graph Convolutional Neural Networks},
  author={Gasse, Maxime and Chételat, Didier and Ferroni, Nicola and Charlin, Laurent and Lodi, Andrea},
  booktitle={Advances in Neural Information Processing Systems 32},
  year={2019}
}

Questions / Bugs

Please feel free to submit a Github issue if you have any questions or find any bugs. We do not guarantee any support, but will do our best if we can help.

More Repositories

1

ecole

Extensible Combinatorial Optimization Learning Environments
C++
316
star
2

Tulip.jl

Interior-point solver in pure Julia
Julia
154
star
3

ml4co-competition

Machine Learning for Combinatorial Optimization - NeurIPS'21 competition
Python
125
star
4

branch-search-trees

Parameterizing Branch-and-Bound Search Trees to Learn Branching Policies (AAAI 2021)
Python
64
star
5

learn2branch-ecole

Reimplementation of "Exact Combinatorial Optimization with Graph Convolutional Neural Networks" (NeurIPS 2019)
Python
32
star
6

learn2comparenodes

Learning to Compare Nodes in Branch and Bound with Graph Neural Networks (NeurIPS 2022)
Jupyter Notebook
18
star
7

sparse-gcn

Sparse graph attention
Python
17
star
8

Bliss

Fork of Bliss
C++
12
star
9

ZERO

ZERO is a modular C++ library interfacing Mathematical Programming and Game Theory.
C++
9
star
10

singularity-conda

A Singularity recipe that properly initialize a conda environment
Shell
8
star
11

EPECInstances

An Instance generator for NASPs (Nash Games among Stackelberg Players)
Python
8
star
12

PySVMRank

Python API for SVMrank (http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html)
Python
7
star
13

nectar

Codebase for "A learning-based algorithm to quickly compute good primal solutions for Stochastic Integer Programs"
Python
4
star
14

tipsntricks

Tips, tricks and setup information at the chair
HTML
3
star
15

milp-outcome

Jupyter Notebook
3
star
16

miqp-clf2lin

Python
3
star
17

ml4co-competition-hidden

Machine Learning for Combinatorial Optimization - NeurIPS'21 competition (hidden code)
Python
3
star
18

CNG-Instances

Instances and results for the Critical Node Game
2
star
19

ecole-paper

Compare Ecole and Gasse et al. 2019 implementations
Jupyter Notebook
1
star
20

amcts-cplex

Asynchronous Monte-Carlo Tree Search (AMCTS) implementation for learning to branch in CPLEX.
Jupyter Notebook
1
star
21

GraphRL

Python
1
star
22

IrratDCM

"On the estimation of discrete choice models to capture irrational customer behaviors" by Jena et al. (2021)
1
star