Metadata-Version: 2.4
Name: boundml
Version: 0.1.2
Summary: BoundML is a toolbox that helps with the development and evaluation of machine learning approach for the branch and bound algorithm.
Author-email: Simon Renard <simon.renard@ulb.be>
License: MIT License
        
        Copyright (c) 2025 Renard Simon
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/sirenard/BoundML
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: ecole-fork
Requires-Dist: pyscipopt==5.0.1
Requires-Dist: torch
Requires-Dist: torchvision
Requires-Dist: torchaudio
Requires-Dist: torch_geometric
Requires-Dist: matplotlib
Requires-Dist: latextable
Dynamic: license-file

# BoundML

BoundML is a wrapper around a [fork of ecole](https://github.com/sirenard/ecole). 
It allows to easily develop new machine learning based branching strategies based for the Branch and Bound.

## Installation

`pip install boundml`

### Troubleshooting

### Libraries not found

You need to have the following librarires installed
- SCIP 9.1.0
- fmt
- range-v3
- pybind11

It is possible to install it in a conda environment:
```
conda install scip==9.1.0 fmt pybind11

export CMAKE_PREFIX_PATH="${CONDA_PREFIX}"      
export CPLUS_INCLUDE_PATH="${CONDA_PREFIX}/include/"
export LIBRARY_PATH=${CONDA_PREFIX}/lib
export LD_LIBRARY_PATH=${CONDA_PREFIX}/lib
```

The exports commands allow the compiler to find SCIP.

To install range-v3 for a ubuntu ditribution:
```
sudo apt install librange-v3-dev librange-v3-doc
```

## Example

The file [gnn_pipeline](example/gnn_pipeline.py) shows how tu use this library to reproduce easily the work of
[Gasse et al.](http://arxiv.org/abs/1906.01629). It consists of training a GCNN to learn to imitate strong branching.
