This repo implements the Large Neighborhood Search based on Neural Construction Heuristics of the corresponding paper.
It is evaluated on the DIMACS VRP-TW track and is a
- reworked and improved version of the original JAMPR model
- using the JAMPR model as a neural construction heuristic
- in combination with simple destruction heuristics and an additional local search routine
- in a Large Neighborhood Search framework.
Please cite us:
@article{falkner2022large,
title={Large Neighborhood Search based on Neural Construction Heuristics},
author={Falkner, Jonas K and Thyssens, Daniela and Schmidt-Thieme, Lars},
journal={arXiv preprint arXiv:2205.00772},
year={2022}
}
Install the requirements as conda environment
conda env create -f requirements.yml
Train the JAMPR model for type 1 instances with low TW frequency
python run_jampr.py meta=train env=all_1_low
Train the JAMPR model for type 2 instances with high TW frequency
python run_jampr.py meta=train env=all_2_high
Run the LNS on the Solomon instance c103 with a time limit of 60s
python run_lns.py data_path=./data/solomon_txt/c1/c103.txt time_limit=60
All runs are configured via hydra through the config files in the config and config_lns directories. A configuration summary can also be found via
python run_jampr.py -h
and
python run_lns.py -h
Run the controller with LNS for instance R101 (override time limit for testing). Requires a corresponding customized controller from the DIMACS challenge!
python run_controller.py --id R101 --time_limit_override 20