Skip to main content

A library to solve TSP (Travelling Salesman Problem) using Exact Algorithms, Heuristics, Metaheuristics and Reinforcement Learning

Project description

pyCombinatorial

New to Python or prefer a graphical interface? The pyCombinatorial Web App lets you run your analysis in clicks, not lines of code.

import pyCombinatorial

# Start the web service using:
pyCombinatorial.web_app()

# Terminate the web service using:
pyCombinatorial.web_stop()

Lab

This Google Colab Demo is intended for quick demos only. For the best experience, run the Web UI locally or open it directly in a full browser.

Introduction

pyCombinatorial is a Python-based library designed to tackle the classic Traveling Salesman Problem (TSP) through a diverse set of Exact Algorithms, Heuristics, Metaheuristics, and Reinforcement Learning. It brings together well-established and cutting-edge methodologies, offering end users a flexible toolkit to generate high-quality solutions for TSP instances of varying sizes and complexities.

Techniques: 2-opt; 2.5-opt; 3-opt; 4-opt; 5-opt; Or-opt; 2-opt Stochastic; 2.5-opt Stochastic; 3-opt Stochastic; 4-opt Stochastic; 5-opt Stochastic; Ant Colony Optimization; Adaptive Large Neighborhood Search; Bellman-Held-Karp Exact Algorithm; Bitonic Tour; Branch & Bound; BRKGA (Biased Random Key Genetic Algorithm); Brute Force; Cheapest Insertion; Christofides Algorithm; Clarke & Wright (Savings Heuristic); Concave Hull Algorithm; Convex Hull Algorithm; Elastic Net; Extremal Optimization; Farthest Insertion; FRNN (Fixed Radius Near Neighbor); Genetic Algorithm; GA-EAX (Genetic Algorithm with Edge Assembly Crossover); GRASP (Greedy Randomized Adaptive Search Procedure); Greedy Karp-Steele Patching; Guided Search; Hopfield Network; Iterated Search; Karp-Steele Patching; Large Neighborhood Search; Multifragment Heuristic; Nearest Insertion; Nearest Neighbour; Random Insertion; Random Tour; Randomized Spectral Seriation; RL Q-Learning; RL Double Q-Learning; RL S.A.R.S.A (State Action Reward State Action); Ruin & Recreate; Scatter Search; Simulated Annealing; SOM (Self Organizing Maps); Space Filling Curve (Hilbert); Space Filling Curve (Morton); Space Filling Curve (Sierpinski); Spectral Seriation Initializer; Stochastic Hill Climbing; Sweep; Tabu Search; Truncated Branch & Bound; Twice-Around the Tree Algorithm (Double Tree Algorithm); Variable Neighborhood Search; Zero Suffix Method.

Usage

  1. Install
pip install pycombinatorial
  1. Import
# Required Libraries
import pandas as pd

# GA
from pyCombinatorial.algorithm import genetic_algorithm
from pyCombinatorial.utils import graphs, util

# Loading Coordinates # Berlin 52 (Minimum Distance = 7544.3659)
coordinates = pd.read_csv('https://bit.ly/3Oyn3hN', sep = '\t') 
coordinates = coordinates.values

# Obtaining the Distance Matrix
distance_matrix = util.build_distance_matrix(coordinates)

# GA - Parameters
parameters = {
            'population_size': 15,
            'elite': 1,
            'mutation_rate': 0.1,
            'mutation_search': 8,
            'generations': 1000,
            'verbose': True
             }

# GA - Algorithm
route, distance = genetic_algorithm(distance_matrix, **parameters)

# Plot Locations and Tour
graphs.plot_tour(coordinates, city_tour = route, view = 'browser', size = 10)
print('Total Distance: ', round(distance, 2))
  1. Try it in Colab

3.1 Lat Long Datasets

3.2 Algorithms

Single Objective Optimization

For Single Objective Optimization, try pyMetaheuristic

Multiobjective Optimization or Many Objectives Optimization

For Multiobjective Optimization or Many Objectives Optimization, try pyMultiobjective

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

pycombinatorial-2.2.3.tar.gz (149.1 kB view details)

Uploaded Source

Built Distribution

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

pycombinatorial-2.2.3-py3-none-any.whl (247.0 kB view details)

Uploaded Python 3

File details

Details for the file pycombinatorial-2.2.3.tar.gz.

File metadata

  • Download URL: pycombinatorial-2.2.3.tar.gz
  • Upload date:
  • Size: 149.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.9

File hashes

Hashes for pycombinatorial-2.2.3.tar.gz
Algorithm Hash digest
SHA256 75bd474bec8585e8364032b8c029254c52c0b1dcb5b15b03618508debce21d4d
MD5 41cf587e8764a51c0d8a70d43d9c0cf7
BLAKE2b-256 34c3bc3b846c711935838f1ad6e9eba90149eecf291cd54330ef7c4af508c07b

See more details on using hashes here.

File details

Details for the file pycombinatorial-2.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for pycombinatorial-2.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c9974ba19df8eddf776540831f365cdc7c3fe7a120ea9fb6afb92ea0e9816828
MD5 64679308c1bf029b690d28440bda6e04
BLAKE2b-256 ee594b4df1e4a17f52fd9f5b21cf1d2e9e9d8afa35120d21494209802c39df9b

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