Heuristic algorithms (2025/26)

Schedule and classroom


The lessons take place

  • on Wednesday, from 13.30 to 16.30, in classroom Alfa (Computer Science department)
  • on Thursday, from 09.30 to 12.30, in classroom Alfa (Computer Science department)

Exam


The exam is written, usually composed of five parts:

  1. combinatorial optimization problems: ground sets, objective function and feasibility
  2. performance evaluation: quality and time, a priori and a posteriori
  3. constructive heuristics and metaheuristics
  4. exchange heuristics and metaheuristics
  5. recombination heuristics and metaheuristics
that include theoretical questions and numerical exercises.

The dates expected for the exams are (but please check on the official site):

  • on 20/03/2026, from 14.30 to 17.00
  • on 10/04/2026, from 14.30 to 17.00
  • on 22/06/2026, from 10.30 to 13.00
  • on 20/07/2026, from 10.30 to 13.00

Notice: The June and July calls overlap with those of Decision methods and models. Please, let me know in advance if you plan to take both exams (probably, one will be moved to the afternoon).

Lessons

Lecture notes in English are available. The students are welcome to report mistakes and obscurities.

Additional lecture notes for the Italian version of the course have been provided by another former student.

Lessons 1 (14th January 2026)

Introduction: basics and classification of heuristic algorithms

Lesson 2 (14th January 2026)

Combinatorial Optimization: problems on sets, logical functions, matrices and graphs

Lesson 3 (15th January 2026)

A priori evaluation of algorithm efficiency: parameterized complexity and average-case complexity

Lesson 4 (21st January 2026)

A priori evaluation of algorithm effectiveness: deterministic and randomized approximation

Lesson 5 (21st January 2026)

A posteriori evaluation of heuristic algorithms (1)

Lesson 6 (22nd January 2026)

A posteriori evaluation of heuristic algorithms (2)

Lesson 7 (28th January 2026)

Constructive heuristics: basic definitions and exact algorithms

Lesson 8 (28th January 2026)

Constructive heuristics: nonexact algorithms

Lesson 9 (29th January 2026)

Constructive heuristics: extensions of the basic scheme

Lesson 10 (4th February 2026)

Laboratory on constructive and destructive heuristics

Lesson 11 (4th February 2026)

Constructive metaheuristics: Tabu Greedy, GRASP and Ant System

Lessons 12 (5th February 2026)

Laboratory on constructive metaheuristics

Lesson 13 (11th February 2026)

Exchange heuristics: neighbourhood definition

Lessons 14 (11th February 2026)

Exchange heuristics: exploration complexity

Lesson 15 (12th February 2026)

Very Large Neighbourhood Search

Lesson 16 (18th February 2026)

Laboratory on exchange heuristics

Lesson 17 (18th February 2026)

Exchange metaheuristics: Multi-start, Iterated Local Search and Variable Neighbourhood Search

Lesson 18 (19th February 2026)

Exchange metaheuristics: Variable Neighbourhood Descent and Dynamic Local Search

Lesson 19 (25th February 2026)

Exchange metaheuristics: Simulated Annealing and Tabu Search

Lesson 20 (25th February 2026)

Laboratory on exchange metaheuristics

Lesson 21 (26th February 2026)

Recombination metaheuristics: Scatter search and Path Relinking

Lessons 22 (4th March 2026)

Recombination metaheuristics: genetic algorithms (1)

Lesson 23 (4th March 2026)

Recombination metaheuristics: genetic algorithms (2)

Lesson 24 (5th March 2026)

Laboratory on recombination metaheuristics