• Stars
    star
    316
  • Rank 132,587 (Top 3 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created about 5 years ago
  • Updated almost 2 years ago

Reviews

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

Repository Details

Extensible Combinatorial Optimization Learning Environments

⚠️ Warning ⚠️

Ecole is looking for a new home. It is not being actively developed, only critical issues will be investigated.

Ecole logo

Ecole

Test and deploy on Github Actions

Ecole (pronounced [ekɔl]) stands for Extensible Combinatorial Optimization Learning Environments and aims to expose a number of control problems arising in combinatorial optimization solvers as Markov Decision Processes (i.e., Reinforcement Learning environments). Rather than trying to predict solutions to combinatorial optimization problems directly, the philosophy behind Ecole is to work in cooperation with a state-of-the-art Mixed Integer Linear Programming solver that acts as a controllable algorithm.

The underlying solver used is SCIP, and the user facing API is meant to mimic the OpenAI Gym API (as much as possible).

import ecole

env = ecole.environment.Branching(
    reward_function=-1.5 * ecole.reward.LpIterations() ** 2,
    observation_function=ecole.observation.NodeBipartite(),
)
instances = ecole.instance.SetCoverGenerator()

for _ in range(10):
    obs, action_set, reward_offset, done, info = env.reset(next(instances))
    while not done:
        obs, action_set, reward, done, info = env.step(action_set[0])

Documentation

Consult the user Documentation for tutorials, examples, and library reference.

Discussions and help

Head to Github Discussions for interaction with the community: give and recieve help, discuss intresting envirnoment, rewards function, and instances generators.

Installation

Conda

Conda-Forge version Conda-Forge platforms
conda install -c conda-forge ecole

All dependencies are resolved by conda, no compiler is required.

Pip wheel (binary)

Currently unavailable.

Pip source

PyPI version
Building from source requires:
pip install ecole

Other Options

Checkout the installation instructions in the documentation for more installation options.

Related Projects

  • OR-Gym is a gym-like library providing gym-like environments to produce feasible solutions directly, without the need for an MILP solver;
  • MIPLearn for learning to configure solvers.

Use It, Cite It

Ecole publication on Arxiv

If you use Ecole in a scientific publication, please cite the Ecole publication

@inproceedings{
    prouvost2020ecole,
    title={Ecole: A Gym-like Library for Machine Learning in Combinatorial Optimization Solvers},
    author={Antoine Prouvost and Justin Dumouchelle and Lara Scavuzzo and Maxime Gasse and Didier Ch{\'e}telat and Andrea Lodi},
    booktitle={Learning Meets Combinatorial Algorithms at NeurIPS2020},
    year={2020},
    url={https://openreview.net/forum?id=IVc9hqgibyB}
}

More Repositories

1

learn2branch

Exact Combinatorial Optimization with Graph Convolutional Neural Networks (NeurIPS 2019)
Python
344
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