/ijoc.2023.0255

Primary LanguagePythonMIT LicenseMIT

INFORMS Journal on Computing Logo

A Graph-based Approach for Relating Integer Programs

This archive is distributed in association with the INFORMS Journal on Computing under the MIT License.

The purpose of this repository is to share the data and results reported on in the paper A Graph-based Approach for Relating Integer Programs by Z. Steever, K. Hunt, M. Karwan, J. Yuan, and C. Murray.

Cite

To cite the contents of this repository, please cite both the paper and this repo, using their respective DOIs.

https://doi.org/10.1287/ijoc.2023.0255

https://doi.org/10.1287/ijoc.2023.0255.cd

Below is the BibTex for citing this snapshot of the respoitory.

@article{ILPGraphs,
  author =        {Steever, Zachary and Hunt, Kyle and Karwan, Mark and Yuan, Junsong and Murray, Chase},
  publisher =     {INFORMS Journal on Computing},
  title =         {{A Graph-based Approach for Relating Integer Programs}},
  year =          {2024},
  doi =           {10.1287/ijoc.2023.0255.cd},
  note =          {Available for download at {https://github.com/INFORMSJoC/2023.0255}},
}  

Data

The data directory contains the 950 instances that were used in this research. These 950 instances were originally collected in .lp format from strIPlib in early 2020. Using the instanceformulation_to_instancegraph.py script, each .lp file (i.e., instance) was converted to its graph-based representation (following the methodology outlined in the paper) and stored as a .bin file. In general, the file instanceformulation_to_instancegraph.py in the scripts directory will convert .lp files to their graph-based representation as defined in this research.

Reproducing Results

The results directory contains the trained graph neural network (trained_GCN.pt) and the script to test the model (test_GCN.py). The documents train_set.csv and test_set.csv contain the paths to the instances (in the data directory) that were used for training (760 instances) and testing (190 instances) the GCN. Depending on whether the train set or test set is being scored using the trained GCN, either train_set.csv or test_set.csv will be read into test_GCN.py allowing the script to automatically extract the needed instances from the data directory.