# Meta-heuristics¶

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.

NB.

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.

### Introduction and Overview¶

### TSP Concepts¶

### Exact Approaches¶

### Metaheuristics¶

Ready for the lab 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.

### Local minima vs global minima & Local Search¶

### 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!