Skip to content

nathanjcochran/tsp

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

tsp

Includes a variety of heuristic algorithms for solving the Travelling Salesperson Problem: nearest neighbor, 2-opt, simulated anneal, and a hybrid of 2-opt and simumlated anneal.

This program solves cases of the Euclidean TSP. In other words, these algorithms all operate on x and y coordinates that specify the locations of cities in a Euclidean plane. Distances between cities therefore satisfy the triangle inequality, making this a special case of the metric TSP.

Compilation:

make tsp

Usage:

Usage: ./tsp {-n|-t|-a} {-v|-d} {[-f filename] | [input data...]}
Algorithms:
 -Default: Nathan's Hybrid (honestly the best choice)
 -n: Nearest Neighbor (only)
 -t: Two-opt
 -a: Simulated Anneal
Display modes:
 -v: Verbose (minor progress messages)
 -d: Debug (lots of detailed messages)
Input/Output:
 -f: Specify file to use as input/source file
     Note: this will result in a output file named [input file].tour

Input/Output:

Note that input can be provided in a variety of ways:

  1. From stdin (or via a file redirected through stdin)
  2. From a file, as specified with the -f option

In the former case, results will be output directly to stdout. In the latter case, results will be output to a file named after the input file, but with a .tour extension: [input file].tour. However, in this latter case, additional information (such as can be triggered with the -v and -d options) will still be sent to stdout.

Input Format:

Input, whether from stdin or a file, must adhere to the following 3-column format, in which each city is given a unique id number (starting with 0), an x-coordinate, and a y-coordinate:

id x-coordinate y-coordinate

For example, a valid input file might look like the following:

0 779 765
1 717 102
2 628 770
3 555 155
4 146 939
5 967 993
6 113 188
7 51 762
8 367 234
9 971 813
10 12 378

Output Format:

Output, whether to stdout or to a file, will have the following format:

total tour length
1st stop in tour
2nd stop in tour
3rd stop in tour
etc...

A valid solution for the example input given above might therefore look like:

3327
0
5
9
1
3
8
6
10
7
4
2

About

Includes a variety of algorithms for solving the Travelling Salesperson Problem: nearest neighbor, 2-opt, simulated anneal, and a hybrid of 2-opt and simulated anneal

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages