Decision Diagram Suite
Our DD-suite code provides a versatile implementation of Decision Diagrams (DDs) in Python and C++ for solving optimization problems: Knapsack, Independent Set, Set Cover, SOC Knapsack and Sequencing. The following guide will help you set-up the code and use it.
Requisites
Make sure you have in your system
-
python > 3.11
-
Gurobi Python Api version > 11.0.0
-
bitarray > 3.0.0
-
c++ > 17
-
cmake > 3.27
-
Boost version > 1.86.0_2
-
Gurobi C++ API version > 13.0.2
-
Google Test > 1.15.2 (for unittest)
For a complete use of the program, it is recommended to have a tool that can read documents with a .gmlextension. Our code exports the DD graph using such a file format that can be visualized using, for instance, the free software yED.
Installation
Clone this repository and navigate to the directory of the language you want to use. The Python implementation lives in DD_python/ and the C++ implementation in DD_c_plusplus/.
Paper and Citation
We have a preprint associated with DD-suite available both in arXiv and Optimization Online. Remeber to cite our paper if you use DD-suite in your research project:
@misc{blanco2026ddsuite,
title={DD-suite: A cross-platform package to build Decision Diagrams for optimization purposes},
author={Antonia F. Blanco and Margarita Castro and Rodrigo Toro Icarte},
year={2026},
eprint={2608.10957},
archivePrefix={arXiv},
primaryClass={math.OC},
url={https://arxiv.org/abs/2608.10957},
}
Links
Here is a list of useful links to get started.