Skip to main content

An optimization package for the traveling salesman problem

Project description

tspy: An optimization package for the traveling salesman problem.

The tspy package gives a Python framework in which to study the famous Traveling Salesman Problem (TSP). In this package, one can work on specific instances of the TSP. Approximation methods and lower bounds are included by default. The structure of the package makes it easy to create and include your own methods.

Installation

The tspy package can be installed using pip:

pip install tspy

How to use tspy

Creating an instance

To create an instance of the TSP, use:

from tspy import TSP
tsp = TSP()

Currently, data can be given to the instance in two ways: by giving it the NxN distance matrix D or, in the case of an Euclidian TSP, a NxP data matrix X and a distance function.

# Using the distance matrix
tsp.read_mat(D)

# Using the data matrix and a distance function
tsp.read_data(X, dist)

Computing approximate solutions

The module tsp.solvers contains several algorithms providing approximate solutions of TSP instances. For example, the 2-opt algorithm gives good solutions rather quickly. Here is how it can be used in the tspy package:

from tspy.solvers import TwoOpt_solver
two_opt = TwoOpt_solver(initial_tour='NN', iter_num=100)
two_opt_tour = tsp.get_approx_solution(two_opt)

Other solvers are used similarly.

Current solutions are stored in the dictionary tsp.tours. If a data matrix has been provided to the instance, a plot of the solution can be shown:

tsp.plot_solution('TwoOpt_solver')

alt text

At any point, the best solution that has been computed can be retrieved:

best_tour = tsp.get_best_solution()

Computing lower bounds

The TSP being NP-hard, it is difficult to get exact solutions for large instances. However, by computing lower bounds we can know how good our approximations are. The tspy package provides several lower bounds methods. One example is given by the Simple_LP_bound which gives the optimal solution of the LP relaxation of the TSP:

from tspy.lower_bounds import Simple_LP_bound
lower_bound = tsp.get_lower_bound(Simple_LP_bound())

At any point, the best lower bound that has been computed can be retrieved:

best_lower_bound = tsp.get_best_lower_bound()

Future

The following features will be added soon:

  • Genetic programming
  • Ant colony optimization
  • Lin–Kernighan heuristic
  • Better LP lower bounds

Feel free to contact me if you would like to contribute.

Author

tspy was written by William Borgeaud (williamborgeaud[at]gmail.com).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tspy-0.1.1.1.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tspy-0.1.1.1-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file tspy-0.1.1.1.tar.gz.

File metadata

  • Download URL: tspy-0.1.1.1.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.5.4

File hashes

Hashes for tspy-0.1.1.1.tar.gz
Algorithm Hash digest
SHA256 d15cc1f4f00a530565183a356ab21b489dc587be0382abe9d7dbb53380735976
MD5 78d452d5676c8589ffdc599ca516f43b
BLAKE2b-256 32a2b0a18fbfad43dc2adae262566d74af1dcbf7c2ac6da30856f88eb2021909

See more details on using hashes here.

File details

Details for the file tspy-0.1.1.1-py3-none-any.whl.

File metadata

  • Download URL: tspy-0.1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.5.4

File hashes

Hashes for tspy-0.1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c349dc86412190698698e40b8e843ead0f42b3ab8be6a7c91d78bff4ea32e219
MD5 eca8e934a633ae62ba3657134e9e2606
BLAKE2b-256 1ab5a2fc6445dd39dd32946854f9cebbb25527286de5293e464e6d971ef04e81

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page