|Year of offer||Not available in 2019|
|Subject level||Graduate coursework|
|Fees||Subject EFTSL, Level, Discipline & Census Date|
Many discrete optimisation problems encountered in practice are too difficult to solve exactly in a reasonable time frame. Approximation algorithms and heuristics are the most widely used approaches for obtaining reasonably accurate solutions to such hard problems. This subject introduces the basic concepts and techniques underlying these “inexact” approaches. We will address the following fundamental questions in the subject: How difficult is the problem under consideration? How closely can an optimal solution be approximated? And how can we go about finding near-optimal solutions in an efficient way? We will discuss methodologies for analysing the complexity and approximability of some important optimisation problems, including the travelling salesman problem, knapsack problem, bin packing, scheduling, network design, covering problems and facility location. We will also learn about various metaheuristics (simulated annealing, Tabu search, GRASP, genetic algorithms) and matheuristics (relax-and-fix, fix-and-optimise, local branching) that are widely used in solving real-world optimisation problems.
Intended learning outcomes
After completing this subject, students will:
• understand the fundamental concepts and techniques underlying the design of inexact algorithms for discrete optimisation;
• have developed the skills needed to design and analyse approximation algorithms;
• know how to apply some commonly used metaheuristics to complex optimisation problems;
• have gained experience in implementing approximation algorithms and heuristics in Python.
In addition to learning specific skills that will assist students in their future careers in science, they will have the opportunity to develop generic skills that will assist them in any future career path. These include:
- problem-solving skills: the ability to engage with unfamiliar problems and identify relevant solution strategies;
- analytical skills: the ability to construct and express logical arguments and to work in abstract or general terms to increase the clarity and efficiency of analysis;
- collaborative skills: the ability to work in a team;
- time-management skills: the ability to meet regular deadlines while balancing competing commitments.