https://github.com/niklasmohrin/gtsp-project
Meta Heuristics for GTSP
https://github.com/niklasmohrin/gtsp-project
gtsp localsearch tabusearch
Last synced: 22 days ago
JSON representation
Meta Heuristics for GTSP
- Host: GitHub
- URL: https://github.com/niklasmohrin/gtsp-project
- Owner: niklasmohrin
- Created: 2024-06-26T17:16:34.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-26T13:04:46.000Z (about 1 year ago)
- Last Synced: 2025-09-20T05:51:03.060Z (22 days ago)
- Topics: gtsp, localsearch, tabusearch
- Language: Rust
- Homepage:
- Size: 78.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Meta Heuristics for GTSP
This repository contains the code for my final project of the "Automated Decision Making" course of the summer term 2024 at Unimore.
The goal is to compare different neighborhoods for the Generalized Traveling Salesperson Problem (GTSP) for the Localsearch and Tabusearch meta heuristics. The neighborhood definitions are taken from _Gutin and Karapetyan (2009)_ where they are used as part of a GTSP-specific algorithm. Since their algorithm uses a cycling scheme with multiple neighborhoods and the additional step of _Cluster Optimization_, these two techniques are also investigated.
A secondary goal is to program the meta heuristics as generic algorithms using Rust traits. These traits are defined in `src/lib.rs`. The details for GTSP and the neighborhoods are located in the `src/gtsp` subdirectory.
## Running
The following will assume that you have downloaded the instances and solutions from the [GTSP instances library](https://www.cs.nott.ac.uk/~pszdk/gtsp.html) in the text format and placed them in the `instances/` and `solutions/` subdirectory.
To build the code, either `nix` or a Rust installation is needed. The experiment runner can then be built using `nix build .#runner` or `cargo build --release --bin runner` respectively. To run the experiment, substitute "build" with "run" and add the path to each input instance you would like to include as an argument (example: `nix run .#runner -- instances/11berlin52.txt instances/26bier127.txt`). The results will be printed to the terminal as CSV.
To generate plots of the results, either `nix` or an R installation with some libraries is needed (see `plots.R`). Build the plots using `nix run .#plots-script results.csv plots.pdf` or `./plots.R solutions/ results.csv plots.pdf` respectively.
## Bibliography
- Gutin, G., Karapetyan, D. (2009). A memetic algorithm for the generalized traveling salesman problem. Natural Computing, 9(1), 47-60.