Skip to content
Browse files
  • Loading branch information
ab3735 committed Mar 23, 2022
1 parent 47f1c3c commit 7147cabff1d35c79dea0dafb5f7ab6d1cc96efed
Showing 1 changed file with 49 additions and 1 deletion.
@@ -1 +1,49 @@
# TSP-Guidance
# Guide for the 380CT Assignment on TSP

The actual part you need to submit is the **Metaheuristics section**.
The rest is meant to introduce you to the basics.


- Ensure you have **Jupyter**.
- Either install [Jupyter]( alone or [Anaconda](
- Familiarise yourself with Jupyter functionaility. Consider taking **LinkedIn Learning courses** (free through the university) or any suitable alternatives. Here is a recommended set (e.g. each member of the group takes one):

- [Introducing Jupyter](
- [Get Ready for Your Coding Interview](
- [Python for Data Visualization](
- [Python: Programming Efficiently](
- [Python Statistics Essential Training](

- Load and study `Investigating TSP.ipynb`.
- Can you improve any of the functions to make them more efficient?
- See how large you can make _n_ while testing `exhaustive_search()`.
- Check that `greedy_nearest_neighbours()` is correct. If not then fix it!

- Read the [Wikipedia article on TSP]( Pay attention to th **Computing a solution** section, and especially to the `2-opt` and `3-opt` techniques for defining neighbourhoods.

- Experiment with generating your own graph families. For example:
- **Euclidean graphs**: generate points using _(x,y)_ coordinates, then generate the adjacency matrix by calculating all the required distances. Recall that the distance between two points _(x<sub>1</sub>,y<sub>1</sub>)_ and _(x<sub>2</sub>,y<sub>2</sub>)_ is _sqrt[(x<sub>1</sub>-x<sub>2</sub>)<sup>2</sup>+(y<sub>1</sub>-y<sub>2</sub>)<sup>2</sup>]_.
- **Graphs with obvious shortest cycle**: think of a graph where all the distances are 2 except for the edges on a predefined cycle, where the distance is 1. Such a graph would be useful for testing/debugging the *nearest neighbours greedy search*.


- You can use `Template.ipynb` to start writing the part you need to submit (about meta-heuristics).
- I propose you work as follows (You don't have to follow this though!):
* Ensure you are familiar with the TSP problem, 2-opt and 3-opt local search techniques. (See this [Wikipedia article](
* Decide which meta-heuristics you want to try. Watch the [guest lecture videos]( and check the literature related to TSP and the meta-heuristics you are thinking of.
- You may try Google Colab and/or Microsoft Azure if that helps you work better, but please be aware that I am not sure about their GDPR compliance.

I should emphasise here that "exhaustive search" and "greedy" are **not* meta-heuristics, nor are 2-opt and 3-opt. Ensure this is clear to you.

## Bibliography

- Applegate, DL, Bixby, RE, Chvátal, V, Cook, WJ, 2007, [The Traveling Salesman Problem: A Computational Study](, Princeton University Press, Princeton.
- Cook, WJ 2012, [In Pursuit of the Traveling Salesman: Mathematics at the Limit of Computation](, Princeton University Press, Princeton.
- Glover, F, & Kochenberger, GA (eds) 2002, [Handbook of Metaheuristics](, Kluwer Academic Publishers, Secaucus.
- Gutin, G, & Punnen, AP (eds) 2002, [The Traveling Salesman Problem and Its Variations](, Springer, New York, NY.
- Pintea, C.-M., 2014. [Advances in Bio-inspired Computing for Combinatorial Optimization Problems]( 1st ed. 2014.
- Steven, SS 2008, [The Algorithm Design Manual](, Springer, England.
- You may also find its [companion website]( useful.
- Talbi, E.-G., 2009. [Metaheuristics from design to implementation](, Hoboken, NJ: John Wiley & Sons.

0 comments on commit 7147cab

Please sign in to comment.