Skip to main content

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; HGS (Hybrid Genetic Search); Iterated Search; Karp-Steele Patching; Large Neighborhood Search; LKH (Lin-Kernighan-Helsgaun); Multifragment Heuristic; Nearest Insertion; Nearest Neighbour; POPMUSIC (Partial OPtimization Metaheuristic Under Special Intensification Conditions); 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

Release files for pycombinatorial 2.2.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pycombinatorial 2.2.7
File Size Uploaded
pycombinatorial-2.2.7.tar.gz 185.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pycombinatorial 2.2.7
File Interpreter ABI Platform
pycombinatorial-2.2.7-py3-none-any.whl Python 3 none any Details

Total release size: 470.4 kB

Release files / pycombinatorial-2.2.7.tar.gz

Download URL pycombinatorial-2.2.7.tar.gz
Size 185.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2ab07aa25afffac5bd8fb5e3a0743e2f6ce7326e820abc171e4ecda1f89bcf7e
BLAKE2b-256 checksum
How to use checksums
e0e793ce979da020a6912337849b4eeb7d2da70fe43d9b9a05afa5cff61abea9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.9

Release files / pycombinatorial-2.2.7-py3-none-any.whl

Download URL pycombinatorial-2.2.7-py3-none-any.whl
Size 285.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
93ea79f97b3fe9439c6b58a5698ad72954af2edae38fc3c4e351a1923bae8b3b
BLAKE2b-256 checksum
How to use checksums
89d5396586a35ce680f254fe59fdb3943ac1be8d7c947d1b1bb7972e2f9d3a77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.9

Release history Release notifications | RSS feed

This release

2.2.7 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page