Skip to content
Guide for the 380CT Assignment on TSP
Branch: master
Clone or download
Latest commit 3d862b6 Feb 21, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
Feedback - Common mistakes from Add files via upload Feb 11, 2020
Investigating 3SAT.ipynb Add files via upload Feb 11, 2020
Investigating TSP.ipynb Friday lecture demo Feb 21, 2020 TeX notation does not work in GitHub markdown :( Feb 20, 2020

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.

Lab 5

  • 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.
  • 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 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 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.
You can’t perform that action at this time.