Kursen handlar om att modellera och lösa kombinatoriska (optimerings)problem med hjälp av villkorsprogrammering (constraint programming). Kombinatoriska problem finns överallt, exempelvis att tilldela och schemalägga resurser, designa instruktioner för processorer, samt optimera instruktionsschemaläggning vid kompilering. Den här kursen lär ut de grundläggande begreppen inom villkorsprogrammering, tillämpningar, utökningar, samt dess relation till andra tekniker för kombinatorisk optimering.
- Att modellera med villkorsprogrammering.
- Grundläggande lösningsmetoder: propagering och sökning.
- Tekniker för modellering, förfining av modeller, heuristiska sökmetoder, tillämpning på problem av industristorlek.
- Grundläggande principer för villkorsprogrammering: modeller för propagering och sökning samt deras väsentliga egenskaper; olika nivåer av propagering; olika villkorsdomäner; starka algoritmiska metoder för propagering.
- Förhållande till andra tekniker för att lösa kombinatoriska problem (heltalsprogrammering, lokalsökning), diskussion om förtjänster och begränsingar, hybridvarianter.