- Tuesday, room SAWB423, at 12 o'clock and then at 3 o'clock (hands on from 4 o'clock).
What's with that picture on the right? Who are those groovy guys? Well, the one on the right is the lecturer (actually, one of the lecturers, as we
hope Ciaran McCreesh will help us out). The cool cat on the left is Emmanuel Hebrard. Emmanuel
developed the constraint program that was used to schedule and control the Rosetta/Philae mission, a rendezvous with a comet
and that's Emmanuel encouraging you to take this course (picture taken by Helmut Simonis
at CP2015 in Cork). So, yes, constraint programming is rocket science.
This course is about solving optimisation problems. Some of these problems you will be familiar with, such as timetabling (lectures, exams, trains, buses),
transportation problems (delivering shopping to your house, routing engineers to tasks, pick up and delivery), resource allocation (who does what),
sports timetables (football, tennis, sailing, baseball, ...),
production scheduling (in a factory),
workforce management (allocating staff to call centres), nurse rostering, meeting scheduling (when do we meet, and where?),
product configuration, crew scheduling (aircraft, trains, ships), trying to land a space craft on an asteroid, ... the list really is endless.
In this course we will look at some of these problems and we will model them and solve them.
Mostly, we will be using constraint programming (CP), but we will also look at local search
(sexy stuff, like genetic algorithms, tabu search, guided local search, swarm algorithms, ...).
We will use the constraint programming toolkit choco3
and the modelling toolkit MiniZinc. Choco is a java toolkit, so you write your programs in java and
use classes and methods in the choco library. So, if you have used java before, it will be easy to get going. We will start by getting you to
model and solve problems, and as we progress, we will reveal more and more about the underlying technology, but the emphasis will mostly
be on how do we model and solve a problem. So, that's why (new for 2018) we start with MiniZinc! This is a cool new modelling language, and is a quick
route to "thinking like a constraint programmer"!
By the way ... you can get less information about this course on moodle.