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, and load
Investigating TSP.ipynb
.- Either launch
Anaconda
through AppsAnywhere, or if you are working on your machine then I recommend installing Anaconda.
- Either launch
-
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):
-
Study
Investigating TSP.ipynb
.- Can you improve any of the functions implemented in
Investigating TSP.ipynb
to make them mor efficient? - See how large you can make
$n$ while testingexhaustive_search()
. - Check that
greedy_nearest_neighbours()
is correct. If not then fix it!
- Can you improve any of the functions implemented in
-
Read the Wikipedia article on TSP. Pay attention to th Computing a solution section, and especially to the
2-opt
and3-opt
techniques for defininf 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 (x1,y1) and (x2,y2) is sqrt[(x1-x2)2+(y1-y2)2].
- 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.