This is the implementation of our work, H-TSP: Hierarchically Solving the Large-Scale Traveling Salesman Problem (AAAI 2023)
Currently only Linux system is supported.
- python >= 3.8
- pytorch == 1.10.0
- cuda == 11.3
- pytorch-lightning == 1.5.2
- pytorch_geometric
- dgl
- numba
- wandb
- hydra-core
- tensorboardX
- scikit-learn
- tensor-sensor[torch]
- LKH-3
- tsplib95
- lkh
- word2vec
Note that LKH-3 is a TSP/VRP solver written in C language, and lkh is its Python wrapper, please refer to lkh for more detail about the installation.
You can use the conda package management system to build the development environment:
conda create --name htsp --file requirements.txt
And use
conda activate htsp
to activate this environment.
Note that LKH-3 still needs to be installed manully.
Docker and nvidia-docker is required.
You can build a development environment for the H-TSP
by using Docker with the Dockerfile
:
docker build -t htsp .
Or use the existing docker image:
docker pull neopan97/htsp:v0.3
# add a tag for consistency
docker tag neopan97/htsp:v0.3 htsp
After the htsp docker image is built or pulled from dockerhub, start the docker container with:
docker run -it --runtime=nvidia --mount type=bind,source=/path/to/source/code,target=/workspace htsp
The main code of the upper-level model structure and the TSP environment locate in h_tsp.py
.
Details about the neural networks and other miscellaneous are in rl_models.py
and rl_utils.py
.
The deep reinforcement learning training is in train.py
, while the code for evaluation is in evaluate.py
.
The experiment hyperparameters are in config_ppo.yaml
.
Codes of the lower model are in the rl4cop
folder. Refer to README
in the folder for more details.
To train a model, firstly you need to modify the config file config_ppo.yaml
, then run
python train.py
To test trained model, run
python evaluate.py --help
This will show you the parameters that need to be set.
The trained model checkpoints and datasets can be downloaded from: model and data.
For more details about the parameters, please refer to the source code and our paper.
If you find this work helpful, please consider cite our paper:
@inproceedings{pan2023h-tsp,
author = {Pan, Xuanhao and Jin, Yan and Ding, Yuandong and Feng, Mingxiao and Zhao, Li and Song, Lei and Bian, Jiang},
title = {H-TSP: Hierarchically Solving the Large-Scale Traveling Salesman Problem},
booktitle = {AAAI 2023},
year = {2023},
month = {February},
url = {https://www.microsoft.com/en-us/research/publication/h-tsp-hierarchically-solving-the-large-scale-traveling-salesman-problem/},
}