An open API service indexing awesome lists of open source software.

https://github.com/kaydvc/traveling-salesman-problem

A solution to the Travelling Salesman Problem using the Genetic Algorithm.
https://github.com/kaydvc/traveling-salesman-problem

ai genetic-algorithm python travelling-salesman-problem

Last synced: 4 months ago
JSON representation

A solution to the Travelling Salesman Problem using the Genetic Algorithm.

Awesome Lists containing this project

README

          

## Table of Contents
1. [Objective](#objective)
2. [Requirements](#requirements)
3. [Use](#use)

## Objective

The objective of this project is to develop a working solution to the [Traveling Salesman Problem](https://en.wikipedia.org/wiki/Travelling_salesman_problem) using a genetic algorithm.

In addition to implementing a solution, I also wanted to develop a deep understanding of the genetic algorithm – its methods, use-cases, advantages, and disadvantages.

## Requirements

The project has the following baseline requirements derived from the problem description:
1. The solution must generate a list of cities.
2. The solution must generate a list of distances between each city and all others.
3. The solution must find the shortest path between all cities.
* All cities, except the origin city, must be visited exactly once.
* The solution must start and end at the origin city.

In addition to the baseline requirements, the following requirements assist in creating a good testing environment for the genetic algorithm :
* At least 25 cities must be generated.
* All cities must reside within a 200\*200 unit plane. The units can be interpreted as kilometers.
* All cities must be generated at random coordinates (overlap possible, but highly improbable).

Lastly, each design choice is explained within the context of the problem.

"If you can't explain it to a six-year-old, then you don't understand it yourself" (Einstein).

## Use
The project requires [Jupyter Notebook](https://jupyter.org/) to *modify*.

Python Version: `<= 3.11`

See requirements.txt for full requirement list.

---

If used as "inspiration," please link back to this repo.

Thanks,

\- Kay