DM865: Heuristikker og approximationsalgoritmer (10 ECTS)

STADS: 15020201

Niveau
Kandidatkursus

Undervisningsperiode
Kurset er placeret i forårssemesteret.

Ansvarlige undervisere
Email: marco@imada.sdu.dk

Yderligere undervisere
lenem@imada.sdu.dk

Skemaoplysninger
Hold Type Dag Tidsrum Lokale Uger Kommentar
Fælles I Mandag 10-12 IMADA semi 23
Fælles I Tirsdag 08-10 IMADA semi 6-8,12,14,16-18,20-21
Fælles I Tirsdag 08-10 U152 9
Fælles I Tirsdag 08-10 U153 11
Fælles I Onsdag 08-10 IMADA semi 19
Fælles I Torsdag 14-16 U141 5,16
Fælles I Fredag 08-10 IMADA semi 5-6,8,11,18,20
Fælles I Fredag 12-14 U146 14 DM865
H1 TE Mandag 16-18 IMADA semi 6-8,11-12,16-20
H1 TE Tirsdag 08-10 U152 10,15
H1 TE Tirsdag 08-10 IMADA semi 19
H1 TE Onsdag 16-18 U142 17
H1 TE Fredag 08-10 IMADA semi 7,9-10,12
H1 TE Fredag 08-10 U153 14-15
Vis hele skemaet
Vis personligt skema for dette kursus.

Kommentar:
Ubegrænset deltagerantal

Indgangskrav:
Kurset kan ikke følges af studerende, der har bestået DM811, DM833 eller DM841.

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 DM507 Algoritmer og Datastrukturer og DM550 Introduktion til Programmering skal være kendt. Det er en fordel at kende stoffet fra DM553 Kompleksitet og beregnelighed eller DM508 Algoritmer og Kompleksitet og stoffet fra DM559 Lineær og heltals-programmering.



Formål
Mange optimeringsproblemer fra industrielle anvendelser som skedulering, logistik, energiplanlægning, sportsplanlægning, mm kan formuleres som diskrete optimeringsproblemer, men de kan ikke løses optimalt inden for en rimelig tid. Her spiller heuristikker, meta-heuristikker og approksimations-algoritmer en væsentlig rolle. Generelle heuristikker og metaheuristikker er løst definerede regler for at finde nær-optimale løsninger. De er ofte inspireret af naturen. For eksempel er de lokale søgeteknikker baseret på princippet om trial and error, hvilket er en mulig måde, hvorpå mennesker intuitivt løser et problem. Succesen af specifikke heuristikker til at løse konkrete problemer på en tilfredsstillende måde afhænger af indsigt i strukturen af problemet og af muligheden for en effektiv implementering. I modsætning til heuristikker har approksimations-algoritmer en garanteret køretid og løsningskvalitet. For eksempel gennemgår vi en simpel og hurtig algoritme, som garanterer at finde en TSP-tur, som er højst en halv gang længere end den optimale. I dette kursus vil vi studere heuristikker og approksimationsalgoritmer med en række konkrete NP-fuldstændige problemer som eksempel.

Kurset bygger oven på den viden, der er erhvervet i kurserne DM550 Introduktion til Programmering og DM507 Algoritmer og datastrukturer. Referencer til koncepter fra DM554 Lineær og heltalsprogrammering samt DM553 Kompleksitet og beregnelighed eller DM508 Algoritmer og Kompleksitet kan finde sted i kursusforløbet. Kurset giver et fagligt grundlag for at lave et speciale, hvor algoritmer til diskret optimering skal designes, analyseres og implementeres.

I forhold til uddannelsens kompetenceprofil har kurset eksplicit fokus på at:

  • Give kompetence til at planlægge og udføre videnskabelige projekter på højt fagligt niveau herunder styre arbejds- og udviklingssituationer, der er komplekse, uforudsigelige og forudsætter nye løsningsmodeller
  • Give færdigheder i at beskrive, analysere og løse avancerede datalogiske problemstillinger ved hjælp af de lærte modeller
  • Give færdigheder i at analysere fordele og ulemper ved forskellige algoritmer, specielt med hensyn til ressourceforbrug
  • Give færdigheder i at belyse fremsatte hypoteser på kvalificeret teoretisk baggrund og forholde sig kritisk til egne og andres forskningsresultater og videnskabelige modeller
  • Give færdigheder i at udvikle nye varianter af de lærte metoder, hvor det konkrete problem kræver det
  • Give færdigheder i at formidle gennem en skriftlig rapport forskningsbaseret viden og diskutere professionelle og videnskabelige problemstillinger med fagfæller
  • Give ekspertviden om diskret optimering og løsning metoder fra fagets internationale forskningsfront


Målbeskrivelse
For at opnå kursets formål er det læringsmålet for kurset, at den studerende demonstrerer evnen til at:
  • designe specialiserede versioner af generelle heuristikker, greedy og lokal søgning og metaheuristikker for problemer, der i natur minder om dem, der ses i kurset.
  • udvikle en løsningsprototype baseret på lokal-søgning og metaheuristikker.
  • foretage en eksperimentel analyse, rapportere resultaterne og drage fornuftige konklusioner ud fra disse.
  • beskrive det udførte arbejde i et passende sprog, evt. med brug af pseudokode.
  • give et overblik over de problemer og teknikker, vi har studeret i kurset
  • give en præcis beskrivelse og analyse af hver af de algoritmer, vi har studeret i kurset.
Indhold
Kurset indeholder følgende teknikker:
Kombinatoriske algoritmer, LP-baserede algoritmer, grådige algoritmer, (stokastiske) lokal-søgnings-algoritmer, meta-heuristikker. Teknikkerne anvendes bl.a. på følgende konkrete problemer: set cover, traveling salesman, satisfiability, scheduling, bin-packing, knapsack.

Litteratur
    Meddeles ved kursets start


Kursets hjemmeside
Dette kursus benytter e-learn (blackboard).

Forudsætningsprøver
Ingen

Eksamen- og censurform:
  1. Mundtlig eksamen på baggrund af: den teoretiske del og to praktiske projektopgaver tidligere afleveret. (10 ECTS). Bedømt efter 7 trins-skalaen, ekstern censur. Hjælpemidler tilladt, nærmere beskrivelse af eksamensreglerne vil blive offentliggjort under 'Course Information' på kursets side i Blackboard. (15020202).
Vejledende timetal
På naturvidenskab er undervisningen tilrettelagt efter trefasemodellen dvs. intro, trænings- og studiefasen.
Introfase: 42 timer
Træningsfase: 42 timer, heraf:
 - Eksaminatorie: 42 timer

Aktiviteter i studiefasen
Implementering af nogle af algoritmerne gennemgået i kurset.Undervisningsform
Der vil være forelæsninger, opgave-regning og programmering. I forelæsningerne gennemgås teorien, delvis via dialog med de studerende. Gennem opgave-regning udvikles bedre forståelse af teorien, og gennem implementering gives erfaring med udfordringerne i og fordelene ved de forskellige teknikker og algoritme-typer.

Sprog
Dette kursus undervises på dansk eller engelsk, afhængigt af underviseren. Dog altid på Engelsk ved deltagelse af internationale studerende.

Kursustilmelding
Se tilmeldingsfrister.

Pris for åben uddannelse
Se priser for enkeltkurser.

Denne kursusbeskrivelse var gyldig fra 1. februar 2018 til 31. januar 2019.