Skip to content


Welcome to Week 7!

This week we will focus on getting started on your Assignment.

I have contacted Dr Mike Morgan, who is an expert on meta-heuristics (and is the father of 380CT), to give a lecture on meta-heuristics. He has kindly agreed, and recorded a set of videos which you can watch below.


Some concepts like NP-hardness and NP-completeness have not yet been introduced, but will be introduced in Lecture 10. (TSP is NP-hard.)

For now, assume that these terms mean that there are no known efficient algorithms that can solve the problem "quickly".

We will continue with the theoretical studies next week, but we need to bring this forward to allow you enough time to work on your Assignment.

Learning Objectives for this week

  • Recognise the difference between algorithms and heuristics.
  • Recognise that meta-heuristics are heuristics that work well practically on a wide family of problems.
  • List and outline the general principles behind popular meta-heuristics.
  • Specify and implement meta-heuristics to estimate solutions to intractable problems.
  • Specify algorithms using pseudo-code. (Formal notation.)

Pre-class Activity

Read the Wikipedia article on TSP. Pay attention to the Computing a solution section, and especially to the 2-opt and 3-opt techniques for defining "neighbourhoods".

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.

Lecture videos

The PDF slides are available for download below.

Download Slides

Introduction and Overview

TSP Concepts

Exact Approaches


Ready for the lab exercises?

Attempt Lab 7 exercises

Further details

Local Search and Neighbourhoods

I was gripped by a strong desire to "see" the neighbourhoods defined by the 2-opt operation... I have completed an informal Jupyter notebook to visualise these, and have made a video recording to explain some important ideas that I feel should help you understand local search and meta-heuristics better.

Here is the accompanying Jupyter notebook:

View the accompanying Jupyter notebook

You need Gephi​ to visualise the neighbourhood graphs. My code is not polished, so sorry if any bugs are still there.

Pseudocode's detail level

Ask & Answer Questions

Don't forget: you can use Teams or the Aula's feed to raise questions for me and the rest of the class.

Add your questions to the Community Feed and take a look at others' questions. If you see a question which you'd like to answer then just go ahead and participate in the discussion!