automatically formulate and embed ML models into MIPs with SCIP
Project description
PySCIPOpt-ML
PySCIPOpt-ML is a python interface to automatically formulate Machine Learning (ML) models into Mixed-Integer Programs (MIPs). PySCIPOPT-ML allows users to easily optimise MIPs with embedded ML constraints.
The package currently supports various ML objects from Scikit-Learn, XGBoost, LightGBM, PyTorch, and Keras
Documentation
The latest user manual is available on readthedocs.
Contact us
For reporting bugs, issues and feature requests please open an issue.
Installation
Dependencies
pyscipopt-ml
requires the following:
The current version supports the following ML packages:
Installing these packages is only required if the predictor you want to insert uses them
(i.e. to insert a XGBoost based predictor you need to have xgboost
installed).
Pip installation
The easiest way to install PySCIPOpt-ML
is using pip
.
It is recommended to always install packages in a virtual environment:
(venv) pip install pyscipopt-ml
This will also install the numpy
, pyscipopt
dependencies.
Installation from source
An alternative way to install PySCIPOpt-ML
is from source. First this repository
needs to be cloned. This can be achieved via HTTPS with:
git clone https://github.com/Opt-Mucca/PySCIPOpt-ML/
and SHH with
git clone git@github.com:Opt-Mucca/PySCIPOpt-ML.git
After cloning the repository entering the directory where it was cloned, one can run the command:
(venv) python -m pip install .
Development
This project is completely open to any contributions. Feel free to implement your own functionalities.
Before committing anything, please install pytest, pre-commit, and all ML frameworks:
pip install pytest
pip install scikit-learn
pip install torch
pip install tensorflow
pip install xgboost
pip install lightgbm
pip install pre-commit
pre-commit install
Source code
You can clone the latest sources with the command:
git clone git@github.com:Opt-Mucca/PySCIPOpt-ML.git
Documentation
You can build the documentation locally with the command
pip install -r docs/requirements.txt
sphinx-build docs docs/_build
Às the documentation requires additional python packages, one should run the following command before building the documentation for the first time:
(venv) pip install -r docs/requirements.txt
Testing
After cloning the project, you can run the tests by invoking pytest
. For this, you will need to create a virtual
environment and activate it. Please also make sure to append your python path:
python -m venv venv
source venv/bin/activate
export PYTHONPATH="$(pwd):${PYTHONPATH}"
Then, you can install pytest
and run a few basic tests:
(venv) pip install pytest
(venv) pytest
How to cite this work
If this software was used for academic purposes, please cite our paper with the below information:
@article{turner2023pyscipopt,
title={PySCIPOpt-ML: Embedding Trained Machine Learning Models into Mixed-Integer Programs},
author={Turner, Mark and Chmiela, Antonia and Koch, Thorsten and Winkler, Michael},
journal={arXiv preprint arXiv:2312.08074},
year={2023}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for PySCIPOpt_ML-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6efde825b368cef23dae46443378c5843f5262758882710685bb2dfdcb89e08 |
|
MD5 | df9fd37edcf2ede195d5b22503f6da7c |
|
BLAKE2b-256 | 6514805b0dd3342234f0e4894ffda2371139595c223d63ba0a6bb719e2e6056d |