DM877: Constraint-programmering
Kommentar
Indgangskrav
Faglige forudsætninger
Studerende, der følger kurset, forventes at kunne:
- anvende algoritmer og data strukturer
- vurdere kompleksitet af algoritmer, med hensyn til såvel køretid som pladsforbrug
- programmere
Stoffet fra DM550 Introduktion til Programmering og DM507 Algoritmer og Datastrukturer skal være kendt.
Kurset bygger oven på den viden, der er erhvervet i kurserne DM550 Introduktion til Programmering og DM507 Algoritmer og datastrukturer. Kurset giver et fagligt grundlag for at lave et speciale, hvor algoritmer til diskret optimering skal designes, analyseres og implementeres.
Formål
Kurset har til formål at sætte den studerende i stand til at anvende constraint-programmering systemer, hvilket er vigtigt i forhold til at kunne løse beregningsmæssigt ikke-triviale problemer på en alligevel i praksis tit effektiv måde. Eksempler af disse problemer er diskrete optimeringsproblemer som skedulering, logistik, energiplanlægning, sportsplanlægning og ressourcallokering. For at hjælpe at løse disse problemer, programmeringsparadigmer til generelle formål blevet udviklet. Dette kursus giver en introduktion til en af disse: Constraint-programmering.
Constraint-programmering er et programmeringssprogsparadigme, hvor variabler og betingelser mellem variabler udtrykkes i en deklarativ form. En løsning søges ved forsøgsvis at tildele en værdi valgt fra et gyldigt domæne til en variabel og derefter ved at filtrere værdier fra domænerne af de øvrige variabler, hvis disse ikke kunne være del af en løsning i følge de givet betingelser.
Man kan simpelthen ikke lære at takle de udfordringer man står over for i diskret optimering uden at forsøge at løse reelle problemer. Kurset sigter mod at give første hånds erfaring gennem programmeringsopgaver, der omfatter brug af værktøj, som illustrerer mange af de grundlæggende begreber, der er omfattet i forelæsningerne.
Målbeskrivelse
For at opnå kursets formål er det læringsmålet for kurset, at den studerende demonstrerer evne til at:
- modellere et problem der i natur minder om dem, der ses i kurset, inden for rammerne af constraint-programmering
- argumentere vedrørende de forskellige modellerings valg med hensyn til teorien bag komponenterne af constraint-programmering, herunder globale betingelser, propagators, søgning og forgreningsordninger.
- udvikle en løsningsprototype ved hjælp af et constraint-programmeringssystem
- foretage en eksperimentel analyse, rapportere resultaterne og drage fornuftige konklusioner ud fra disse.
- beskrive det udførte arbejde i et passende sprog.
Indhold
Kurset indeholder følgende faglige hovedområder:
- constraint-tilfredshedmodel
- lokal konsistens og propagation
- globale betingelser
- søgning og træ-baserede søgeheuristikker
- symmetribrud
- tilfældig genstart strategi og stor skala nabolag
- Constraint-programmeringssystemer
- anvendelser: puslespil, kombinatorisk design, ruteplanlægning, skemalægning.
Litteratur
Eksamensbestemmelser
Eksamenselement a)
Tidsmæssig placering
Udprøvninger
Obligatoriske opgaver
EKA
Censur
Bedømmelse
Identifikation
Sprog
Hjælpemidler
Alle almindelige hjælpemidler tilladt
ECTS-point
Uddybende information
Vejledende antal undervisningstimer
Undervisningsform
Skemalagte undervisningstimer:
Antal undervisningstimer i alt: 44
Heraf:
Fællestimer i klasselokale/auditorium: 44
I fællestimer introduceres og perspektiveres begreber, teorier og modeller. I disse timer er der mulighed for spørgsmål og diskussion. Derudover arbejdes der i små grupper med anvendelser fra den virkelige verden, regneopgaver og diskussionsemner, som relaterer sig til indholdet i de forudgående forelæsninger. I disse timer er der mulighed for at arbejde specifikt med særligt vanskelige emner.
Andre planlagte undervisningsaktiviteter:
- Løsning af ugentlige opgaver med henblik på diskussion af disse ved eksaminatorierne
- Løsning af projektopgaverne
- Selvstudium af visse emner fra lærebogen
- Selvstændig opsamling på intro og træningsfasen
Ansvarlig underviser
Skemaoplysninger
Administrationsenhed
Team hos Registratur
Udbudssteder
Anbefalede studieforløb
Overgangsordninger
Se overgangsordninger for alle kurser på Det Naturvidenskabelige Fakultet.