This repository provides a comprehensive framework for benchmarking Predict-then-Optimize (PtO) problems using Decision-Focused Learning (DFL) approaches. PtO problems involve making predictions that are used as input to downstream optimization tasks, where traditional two-stage methods often lead to suboptimal solutions. DFL addresses this by training machine learning models that directly optimize for the downstream decision-making objectives.
This repository contains the implementation for the paper (Accepted to Journal of Artificial Intelligence Research (JAIR)):
Mandi, J., Kotary, J., Berden, S., Mulamba, M., Bucarey, V., Guns, T., & Fioretto, F. (2024). Decision-focused learning: Foundations, state of the art, benchmark and future opportunities. Journal of Artificial Intelligence Research, 80, 1623-1701. DOI: 10.1613/jair.1.15320
If you use this code in your research, please cite:
@article{mandi2024decision,
title={Decision-focused learning: Foundations, state of the art, benchmark and future opportunities},
author={Mandi, Jayanta and Kotary, James and Berden, Senne and Mulamba, Maxime and Bucarey, Victor and Guns, Tias and Fioretto, Ferdinando},
journal={Journal of Artificial Intelligence Research},
volume={80},
pages={1623--1701},
year={2024},
doi={10.1613/jair.1.15320}
}- Python 3.7.3 (recommended)
- pip or conda package manager
- Create and activate a virtual environment:
python3 -m venv benchmarking_env
source benchmarking_env/bin/activate- Upgrade pip:
pip install --upgrade pip- Install required packages:
pip install -r requirements.txt-
Install Conda by following the official installation guide
-
Create and activate the environment:
# Create environment
conda env create -n benchmarking_env --file environment.yml
# Activate on Linux/macOS
conda activate benchmarking_env
# Activate on Windows
source activate benchmarking_envNavigate to the corresponding experiment directory to run specific benchmarks.
Feel free to open issues or submit pull requests if you find any problems or have suggestions for improvements.