Skip to main content

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

Project description

pyCombinatorial

Introduction

A library to solve the TSP (Travelling Salesman Problem) using Exact Algorithms, Heuristics and Metaheuristics : 2-opt; 2.5-opt; 3-opt; 4-opt; 5-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; 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; Genetic Algorithm; 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; Scatter Search; Simulated Annealing; SOM (Self Organizing Maps); Space Filling Curve (Hilbert); Space Filling Curve (Morton); Space Filling Curve (Sierpinski); Stochastic Hill Climbing; Sweep; Tabu Search; Truncated Branch & Bound; Twice-Around the Tree Algorithm (Double Tree Algorithm); Variable Neighborhood Search.

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

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-1.8.1.tar.gz (44.5 kB view details)

Uploaded Source

Built Distribution

pyCombinatorial-1.8.1-py3-none-any.whl (86.7 kB view details)

Uploaded Python 3

File details

Details for the file pyCombinatorial-1.8.1.tar.gz.

File metadata

  • Download URL: pyCombinatorial-1.8.1.tar.gz
  • Upload date:
  • Size: 44.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.10.9

File hashes

Hashes for pyCombinatorial-1.8.1.tar.gz
Algorithm Hash digest
SHA256 bda9c0df2866e5960d7857a66ace82ce7f868a33ad78587dd0637f42114b9f56
MD5 0b73210c1d441ec9f413573e889eec5c
BLAKE2b-256 637229c1ceac2fb4e2364bfb536f1bffe65ec6ba292d4406e9aae5b4633d65ed

See more details on using hashes here.

File details

Details for the file pyCombinatorial-1.8.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pyCombinatorial-1.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 755b8b0bd4bdd6a832f9a02d28b8ac73c68823ad8d6f0d870c3736691d6bee33
MD5 c48c93151ef413cfdd6ccbe5e2904115
BLAKE2b-256 d30f9aab73f84085303ee5b8b0656b1104c6ac961dc639d64256b4a71905574b

See more details on using hashes here.

Supported by

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