skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · resume: i dette...

61
Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009. Skemalægning med genetiske algoritmer Datalogisk speciale, RUC 2/6/2009 Skrevet af: Flemming R.P. Rasch Vejleder: Henning Christiansen

Upload: others

Post on 05-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

Skemalægning med genetiske algoritmer

Datalogisk speciale, RUC 2/6/2009 Skrevet af: Flemming R.P. Rasch Vejleder: Henning Christiansen

Page 2: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

2

Resume:

I dette speciale præsenteres skemalægning som et data-

logisk problem. Der gennemgås forskellige løsningsme-

toder fra litteraturen, med speciel fokus på genetiske

algoritmer. Det demonstreres herefter med et problem

taget fra praksis samt til lejligheden fremstillet program-

mel hvordan skemalægningsproblemer kan løses ved

hjælp af genetiske algoritmer. Løsningen diskuteres og

sammenlignes med andre løsninger.

Building timetables with genetic algorithms

Abstract:

In this thesis automated timetabling as a computer sci-

ence field of study is presented. Various methods for

solving timetabling problems are shown, with special

focus on genetic algorithms. A real timetabling problem

is then solved with genetic algorithm software made for

this thesis and the solution is evaluated and compared to

other solutions.

Page 3: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

3

Indhold

1 Indledning ..........................................................................................................4

1.1 Skemalægning...........................................................................................4

1.2 Genetiske algoritmer.................................................................................4

1.3 Målet med dette speciale...........................................................................4

2 Skemalægning....................................................................................................5

2.1 Typer af skemalægningsproblemer...........................................................5

2.1.1 Skoleskemaer ...................................................................................5

2.1.2 Lektionsplaner..................................................................................6

2.1.3 Eksamensplaner ...............................................................................6

2.1.4 Andre................................................................................................7

2.2 Skemalægning i folkeskoler/gymnasier ....................................................7

2.2.1 Skemaets parametre .........................................................................7

2.3 Karakteristik af skemalægning som datalogisk problem..........................8

2.3.1 Finde løsninger.................................................................................8

2.3.2 Optimering .......................................................................................8

2.3.3 Kompleksitet og eksistens af løsning...............................................8

3 Metoder til automatisk skemalægning .............................................................10

3.1 Simple heurestikker ................................................................................10

3.2 Tabu search .............................................................................................10

3.3 Simulated annealing................................................................................10

3.4 Constraint logic programming ................................................................11

3.5 Genetiske algortimer...............................................................................11

3.5.1 Hollands skemateorem og byggeklodshypotesen.........................12

3.6 Memetiske algoritmer .............................................................................12

3.7 Andre metoder ........................................................................................13

4 GenetiskSkema - en genetisk algoritme til skemalægning ..............................14

4.1 Designovervejelser..................................................................................14

4.1.1 Genomer og gener.........................................................................14

4.1.2 Hard constraints ............................................................................14

4.1.3 Fitness ...........................................................................................15

4.2 Implementerede hard constraints ............................................................15

4.3 Implementerede soft constraints .............................................................15

4.4 Beskrivelse af programmel .....................................................................16

4.4.1 Java klasser ...................................................................................16

4.5 Kalibrering ..............................................................................................17

4.6 En praktisk test........................................................................................18

4.6.1 Præsentation af test-problem..........................................................18

4.6.2 Vurdering af programmellets praktiske anvendelighed .................18

4.6.3 Analyse af testdata .........................................................................19

4.6.4 Sammenligning med et færdigudviklet skemalægningsprogram...21

4.7 Test af den genetiske algoritme ..............................................................25

4.8 Konklusion på test...................................................................................26

5 Konklusion.......................................................................................................27

5.1 Forskningsfeltet skemalægning nu og i fremtiden..................................27

6 Litteratur ..........................................................................................................28

Appendiks A: Programkode............................................................................... 30

Appendiks B: Beskrivelse af parametre og inddata........................................... 46

Appendiks C: Inddata og uddata for praktisk test.............................................. 48

Appendiks D: Inddata og uddata for test af den genetiske algoritme ................ 58

Page 4: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

4

1 Indledning

Datalogiske problemer er ofte ganske praktiske problemer, som lader sig løse til en hvis grad

uden brug af maskiner, men hvor computere vil muliggøre en hurtigere og/eller bedre løs-

ning. Et eksempel på dette er hvordan man lægger et skema for undervisningen på en skole.

Indenfor området kunstig intelligens, et område af datalogien der udsprang af ønsket om at

lave en computer der efterlignede en menneskehjerne, findes der nu en lang række teknolo-

gier, som er inspireret af studier af naturen, men som i stedet for at bruges i forsøg på at ef-

tergøre naturen, anvendes som praktiske løsninger på veldefinerede problemer. En af disse

teknologier er genetiske algoritmer og et af de praktiske problemer, der ofte søges løst ved

hjælp af genetiske algoritmer, er netop skemalægning.

1.2 Skemalægning

Ved skemalægning forstås tidsplanlægning af aktiviteter for en større mængde personer over

et længere tidsrum. Det forudsættes at aktiviteternes tidsforbrug og fordeling på personer er

bestemt på forhånd, så problemet består i at fordele personernes aktiviteter indenfor nogle

givne rammer.

1.2 Genetiske algoritmer

Genetiske algoritmer er algoritmer som er baseret på principper fra genetikken, nærmere be-

stemt hvordan en population af individer udvikler sig over tid. Begreberne tilpasning, re-

kombination af DNA og mutation bruges til at lade en række løsninger til et problem udvikle

sig frem mod en stigende grad af anvendelighed, på samme måde som individer i en popula-

tion i naturen bliver tilpasset deres omgivelser.

1.3 Målet med dette speciale

I det følgende vil problemet skemalægning blive kortlagt og forskellige måder det er løst på i

litteraturen bliver gennemgået, med særlig fokus på genetiske algoritmer og relaterede meto-

der. Dernæst vil en konkret implementering af en genetisk algoritme til løsning af problemet

blive præsenteret og vurderet.

Page 5: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

5

2 Skemalægning

Givet et antal personer der skal deltage, som oftest elever, E, et antal hold eller klasser de er

delt op i, K, et antal aktiviteter eller fag de skal deltage i / undervises i, F, og et antal perso-

ner der skal stå for disse aktiviteter, som oftest lærere der skal undervise, U. Med notation

fra relationsdatabaser har vi da følgende funktionelle afhængigheder:

E → K

K → F

U → KF

Problemet består da i at der er givet en række tidsintervaller, T, og et antal lokaler, L, der er

til rådighed indenfor hvert tidsinterval. Aktiviteterne, hvert bestående af et hold(klasse) K og

en aktivitet (fag) F, skal da fordeles på tidsintervallerne og lokalerne:

KF → TL

Fordelingen skal dels ske under overholdelse af nogle regler for hvad der skal lade sig gøre, i

det følgende kaldet hard constraints (da de er ufravigelige begrænsninger), dels skal der ske

en optimering af fordelingen i forhold til en lang række ønsker som skemalæggeren har til

skemaet, der ofte præsenteres som soft constraints (ønskelige, men ikke ufravigelige krav).

En typisk hard constraint er at en underviser ikke kan være to steder på en gang. En typisk

soft constraint er at der ikke må være utildelte tidsintervaller tilhørende den samme klasse

den samme dag, som er omkranset af tildelte tidsintervaller (også kaldet mellemtimer).

2.1 Typer af skemalægningsproblemer

Skemalægningsproblemer er i virkeligheden en række forskelligartede problemer, som dog

har så meget til fælles at metoderne til at løse dem i høj grad er de samme. Men programmel-

let til løsning af problemerne vil have meget forskellige krav til f.eks. konkret udformning af

algoritmer og brugerinterface, så det er ofte kun på det teoretiske plan der kan udveksles vi-

den.

2.1.1 Skoleskemaer

I en skole – folkeskole, gymnasium og lignende - har man typisk et identisk skema uge for

en uge gennem et helt skoleår eller en længere periode. Tidsintervallerne lader sig derfor

nemt sætte op på skemaform:

Som regel er det sådan med skoleskemaer at der er lokaler nok til at samtlige klasser kan un-

dervises samtidig. Det vil derfor kun være specielle lokaler som fysiklokaler, IT-lokaler og

gymnastiksale, som der skal tages hensyn til ved skemalægningen. Problemet bliver da redu-

ceret til:

Mandag Tirsdag …

Kl. 8-9 Tii Tji …

Kl. 9-10 Tij Tjj …

Kl. 11-12 Tik Tkk …

... … … …

Page 6: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

6

KF → T

Undervisere på en skole bruger tid på andet end undervisning – forberedelse til undervis-

ning, møder, kurser m.m. – så set fra en undervisers side vil der generelt være meget færre

tidsintervaller at udfylde med undervisning i løbet af en uge end set fra en elevs side.

En anden karakteristisk egenskab, i forhold til nogle af de andre skemalægningsproblemer,

er at det sjældent forekommer at elever følger flere hold/klasser. Der forekommer dog hold

på tværs af de faste klasser, men som regel vil det kun være et mindre antal af fagene det fo-

rekommer i, og ske på en af disse måder:

1. Elever i samme klasse splittes op og undervises hver for sig i to eller flere hold.

2. Elever fra to eller flere klasser slås sammen og undervises samtidigt.

3. En kombination af ovenstående.

Det første tilfælde kan f.eks. repræsenteres ved at indføre to nye klasser, med den hard

constraint at disse klasser ikke kan undervises samtidigt med den klasse de stammer fra. I det

andet tilfælde kan man f.eks. slække på hard constraints om at en lærer ikke kan være to ste-

der på en gang og sørge for at klasse/fag-kombinationen bliver tildelt de samme tidsinterval-

ler for alle klasserne.

2.1.2 Lektionsplaner

På universiteter er elever (studerende) ikke delt op i grupper i nær samme grad. I princippet

er alle fag åbne for alle studerende, når forudsætninger opfyldes. Hvis der laves en lektions-

plan, hvori alle fag på det pågældende universitet optræder, er man derfor interesseret i at

optimere mængden af mulige studieforløb for de enkelte studerende, så visse anbefalede stu-

dieforløb altid er mulige, mens muligheden for andre kombinationer af fag der kan passe

sammen er størst mulig. Det vil sige det er

E´K → T

hvor E´ er eksempler på elever der følger forskellige anbefalede studieforløb som skal være

mulige. Det er således ikke er krav, som med f.eks. skoleskemaer, at alle studerende skal ha-

ve et skema hvor det er muligt at følge alle fag på alle tidspunkter, da det er muligt at vælge

andre end de anbefalede forløb.

Når tilmeldingerne er sket, skal der så lægges et nye skema for lokalefordelingen, da man

først på dette tidspunkt kender antal studerende pr. hold.

2.1.3 Eksamensplaner

At planlægge eksamen minder en del om at lave et skoleskema, men der er her ikke tale om

et skema for en uge som genbruges. Der skal tages hensyn til andre ting end ved skoleske-

maet, så som at der skal være et vist mellemrum mellem at de samme elever skal til eksamen

og at mundtlige eksameners tidsforbrug afhænger af antal elver der skal til eksamen. Tidspe-

rioderne vil ofte være meget forskellige fra fag til fag, og med hensyn til optimering (soft

constraints) gælder det om at få fordelt eksamenerne jævnt ud over hele eksamenstiden for

hver klasse og elev, hvilket er det omvendte af optimering af skoleskemaet, hvor det som

regel gælder om at undgå for lange pauser mellem fagene.

Page 7: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

7

2.1.4 Andre

Planlægning af større arrangementer, koordinering af kalendere og planlægning af større

sportsbegivenheder har problemstillinger der minder om skemalægning.

2.2 Skemalægning i folkeskoler/gymnasier

En gang eller et par gange om året skal der på de fleste skoler lægges et skema. Det sker ef-

ter det er klart hvilke klasser der bliver i den kommende periode, hvilke fag de skal have

samt hvordan lærerne skal fordeles på fag og klasser. Som regel afleverer lærerne nogle øn-

sker til den del af skemaet der vedrører dem, som skemalæggeren kan tage hensyn til. Heref-

ter lægges et skema en gang for alle, der sjældent laves om i løbet af den periode det gælder

for.

2.2.1 Skemaets parametre

Næsten al undervisning på traditionelle skoler er opdelt i et antal lektioner pr. dag der falder

på ganske bestemte tidsintervaller og har en varighed af 45 minutter, og der er næsten altid

fem ugedages undervisning. Den uge gentages da gennem hele perioden. Det forekommer at

der er undervisning som ikke følger disse regler, men det er som regel et langt mindre pro-

blem at håndtere dette end at lægge selve det store skema, så det bliver normalt lavet manu-

elt.

Typisk er der op til 8-10 lektioner på en dag og skemaet gælder for et halvt år eller et helt

skoleår.

En klasse har i størrelsesorden 10 forskellige fag, hvert fag med typisk 2-4 lektioner pr. uge.

Antal klasser på en skole varier fra nede omkring 6-8 klasser for et lille gymnasium eller en

lille handelsskole, op til måske 40-50 klasser for en stor folkeskole.

Antal fag en skole udbyder vil være noget større end antallet af fag en enkelt klasse har, da

fagene veksler med årgang og for eksempel studieretning for klassen. Størrelsesorden 20-30

fag.

Antal lærere vil naturligvis afhænge af antallet af elever, da antal elever pr. klasse er nogen-

lunde det samme for store og små skoler. Da lærere generelt har færre timer undervisning pr.

uge end elever på grund af forberedelse, mødeaktivitet m.m., vil antallet at lærere være i

størrelsesorden det dobbelte af antal klasser.

De fleste steder har klasserne et klasseværelse hvor det meste af undervisningen foregår.

Derfor er det ikke nødvendigt at lave lokalefordeling, på nær for speciallokaler.

Page 8: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

8

2.3 Karakteristik af skemalægning som datalogisk problem

Skemalægning handler grundlæggende om at finde en løsning på et problem med at få nogle

ressourcer - tid og lærere - fordelt på nogle ressource-forbrugere - klasser og elever - kombi-

neret med et problem med at finde frem til den af disse løsninger der er mest optimal ud fra

nogle andre kriterier.

2.3.1 Finde løsninger

Blot at finde en løsning der overholder et antal hard constraints er et problem der kan løses

rent logisk: Der kan være ingen, mange eller eventuelt en enkelt løsning på problemet. I

praksis vil der næsten altid være mange løsninger på problemet, da man inden skemaet skal

lægges sørger for at for eksempel ingen lærere har flere timer end der er plads til i et skema.

Men det kunne være relevant at lave en undersøgelse af eksistens af en løsning inden selve

skemalægningen går i gang.

2.3.2 Optimering

Ved optimering er der et antal ønsker fra brugerne af skemaet som på en eller anden måde

skal kvantificeres. Dernæst skal programmellet sørge for at disse ønsker bliver opvejet mod

hinanden i den løsning der findes.

Problemet med at kvantificere et ønske lader sig ikke løse entydigt. I økonomisk teori har

man begreber som nytteværdi og paretooptimale løsninger. Her antager man ved hjælp af

markedsmekanismer kan omsætte ønsker i målbare mængder nytte og at man kan finde frem

til en løsning der er mest optimal for alle parter. Det er muligt, om end måske ikke særligt

praktisk, at indføre markedsmekanismer i skemalægning, men i praksis foregår det på en må-

de der i forhold til økonomisk teori minder mere om planøkonomi: Optimeringen sker på

baggrund af ønsker, men hvordan ønskerne vurderes i forhold til hinanden er kalibreret ind i

skemalægningen afhænger af en kombination af tilfældigheder, skemalæggerens intuition,

programmellets særheder m.m.

Men så længe ønskerne er udmøntet i soft constraints og der er foretaget en passsende kali-

brering af programmellet, er det datalogiske problem blot at finde en optimal løsning baseret

på de data der er givet. Det vil ofte ske ved at opstille en funktion som giver en værdi for

hvor god løsningen er (ud fra hvor mange constraints der er overholdt) og finde den løsning

med højest værdi. I praksis er skemalægning et alt for komplekst problem til at man kan fin-

de frem til præcis den løsning der har den højeste værdi, så der anvendes i stedet mere eller

mindre avancerede heurestikker.

2.3.3 Kompleksitet og eksistens af løsning

Kompleksitet af datalogiske problemer klassificeres ofte efter hvor hurtigt man kan finde en

løsning på dem, dvs. hvor hurtigt den bedste algoritme der kan løse problemet kan fuldføres.

En speciel klasse af særligt svære problemer er NP-komplette problemer. Her vil tiden det

kræver at finde en løsning på problemet som funktion af problem-størrelsen ikke kunne be-

skrives som et polynominum (dvs. f.eks. som kvadratet på problem-størrelsen), men værre

end det. (Se f.eks. Russel og Norvig s. 978). Skemalægning vil ofte være et NP-komplet pro-

blem. Cooper og Kingston demonstrerer dette ved konstruere et sprog der beskriver skema-

lægning (C og S s. 284), og herefter vise at forskellige delproblemer, der opstår ved skema-

lægning, er ækvivalente med kendte NP-komplette problemer. Helt generelt kan man dog

Page 9: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

9

ikke sige at skemalægning er NP-komplet, men i praksis er det næppe muligt at udnytte at

der kan forekomme mindre komplekse skemalægningsproblemer.

Da soft constraints ikke nødvendigvis skal overholdes, vil et skemalægningsproblem have en

løsning, såfremt alle hard constraints kan overholdes.

Page 10: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

10

3 Metoder til automatisk skemalægning

Maskinel skemalægning anvendtes allerede for over 30 år siden, men især indenfor de sene-

ste 10-15 år er der sket meget forskning på området. Blandt andet afholdes der ca. hvert an-

det år en ”International Conference on the Practice and Theory of Automated Timetabling”,

senest i 2008.

Der er grundlæggende to typer heurestikker som bruges til at søge løsninger på et problem

som skemalægning:

1. Global søgning, hvor man søger bredt blandt alle mulige løsninger.

2. Lokal søgning, hvor man søger stadig bedre løsninger nær en allerede fundet løsning.

Ulempen ved lokal søgning er at man risikerer at ende med et lokalt maksimum, som er en

løsning der er god blandt de løsninger der er undersøgt, men globalt set er dårlig. Ulempen

ved global søgning er den ofte er ret usystematisk og tidskrævende. En af årsagerne til at

man ofte ser kombinationer af de to typer heurestikker er et ønske om at begrænse disse

ulemper.

3.1 Simple heurestikker

De første forsøg på at lave automatisk skemalægning anvendte heurestikker man kendte fra

de manuelle metoder. (Schaerf s. 7). Som for eksempel at man fandt frem til de fag, lærere

eller klasser der var sværest at placere, og lagde dem i skemaet først, dernæst de næstsvæ-

reste o.s.v.

3.2 Tabu search

Tabu søgning er en udvidet form af simpel lokal søgning efter maksimum. (Boufflet og

Nègre s. 335). Udvidelsen består i at tilføje en tabu-liste over løsninger der allerede har væ-

ret prøvet og som er ”tabu” for søgningen indtil nogle andre løsninger har været prøvet. Al-

goritmen kører således:

1. Find en løsnings-kandidat

2. Find en nabo-løsning, der ikke er på tabu-listen, til den bedste løsning der haves.

3. Beregn (ved hjælp af en funktion) hvor god den nye løsning er.

4. Hvis den nye løsning er dårligere end den gamle, hoppes tilbage til 2.

5. Hvis den nye løsning er bedre end den gamle, vælges denne løsning som den nye bedste

og den gamle bedste løsning smides på tabu-listen. Såfremt kriteriet for at stoppe

(konvergens eller antal gennemløb) ikke er opnået, hoppes tilbage til 2.

Ved at have en tabu-liste udgås det hele tiden at støde på de samme løsninger og derved kan

algoritmen springe væk fra et eventuelt lokalt maksimum.

3.3 Simulated annealing

Simulated annealing (”simuleret udglødning”) er en metode baseret på hvordan stoffer køler

af i naturen (Thompson og Dowsland s. 346). Hvis man køler stof ned meget hurtigt, kan der

opstå spændinger og uhensigtsmæssige strukturer i det, mens en langsom nedkøling kan ud-

jævne spændinger og give et mere homogent materiale. Som analogi for søgningsalgoritmer,

svarer en høj temperatur til store spring for hver søgning, mens lave temperaturer svarer til

små spring. Ideen er da at man starter med at søge efter løsninger der ligger i et bredt område

og efterhånden ”sænker temperaturen” og koncentrerer sig om at forbedre de lokale løsnin-

Page 11: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

11

ger der er fundet. Ved at man starter med en ”høj temperatur” og søger løsninger bredt,

mindskes chancen for at havne i et lokalt maksimum.

3.4 Constraint logic programming

Denne metode (Cheng m.fl. s. 116) går ud på at fylde skemaet op, en lektion ad gangen, ind-

til der haves et færdigt skema. For hver lektion der søges placeret, gennemgås samtlige

contraints. Hvis det ikke er muligt at opfylde alle constraints, fjernes de i en bestemt række-

følge, indtil det er muligt at placere lektionen. Hvis det ikke er muligt at placere lektionen

uden at overtræde en hard constraint, aktiveres en anden algoritme, som forsøger at omplace-

re de lektioner der allerede er placeret. Resultatet, såfremt algoritmerne kan finde en løsning,

er et skema hvor alle hard constraints er opfyldt, mens soft constraints er opfyldt i større eller

mindre grad.

Fordelen ved denne metode er at nye constraints blot skal formuleres og ikke kræver en stør-

re mængde ekstra programmering. Den tilsvarende ulempe er at det kræver et meget kom-

plekst logisk sprog at formulere alle tænkelige constraints, så arbejdet i stedet består i at im-

plementere et sådant sprog.

3.5 Genetiske algoritmer

Genetiske algoritmer er heurestikker der bruger global søgning . Ligesom f.eks. kunstige

neurale netværk er genetiske algoritmer grundlæggede en statistisk metode til at få et system

af tal og beregninger til at konvergere mod en løsning på et givet problem.

Inspirationen til genetiske algoritmer kommer fra Charles Darwins teori om evolution: De

forskellige biologiske arter udvikler sig over tid, fordi de tilpasser sig deres omgivelserne og

bliver bedre til at leve i dem. Det sker ved et ganske enkelt princip: Der opstår små ændrin-

ger i individerne, og de ting som fører til bedre tilpasning overlever på lang sigt, ved at disse

individer bedre er i stand til at overleve og forplante sig. Mange små ændringer bliver over

tid til store ændringer. Det på Darwins tid meget kontroversielle var at det var tilfældigt op-

ståede ændringer som var basis for evolutionen. Med genetiske algoritmer som datalogisk

metode er der ikke den slags problemer, da det er ganske meget nemmere at demonstrere en

algoritme end en biologisk evolution der forløber over lange tidsrum.

En genetisk algoritme består af følgende dele:

• Genomer, som er en løsnings-kandidater til det problem man ønsker at løse.

• Fitness, som er en egenskab ved genomet, udregnet efter hvor god en løsning det er.

• Gener, som er dele af genomer – et genom består af et antal gener.

• En population af genomer.

Algoritmen forløber således:

1. Populationen ældes. Nogle genomer overlever, nogle genomer parres med andre, således

at deres gener flettes sammen (rekombineres) med andre, resten dør ud. Fitness styrer

chancen for at et genom overlever eller formerer sig.

2. Populationen udsættes for mutation, tilfældige ændringer i genomerne, der indtræffer

med en vis sandsynlighed.

3. Ny fitness beregnes.

4. Algoritmen kører videre et bestemt antal gange (generationer) eller til et andet kriterium

for at stoppe er opfyldt.

Page 12: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

12

Når algoritmen er færdig, kan en passende løsning udvælges ud fra den overlevende popula-

tion, som regel løsningen med højest fitness.

Genetiske algoritmer afsøger meget store søgerum, da de opererer med store grader af tilfæl-

dighed i udvælgelsen af løsnings-kandidater. Af samme årsag er de ikke særligt effektive

med hensyn til tidsforbrug, men da skemalægning er en aktivitet der foregår ret sjældent, er

det ikke af afgørende betydning.

3.5.1 Hollands skemateorem og byggeklodshypotesen

J.H. Holland, der opfandt genetiske algoritmer, fandt på begrebet skema til at forklare gene-

tiske algoritmers virkemåde. Ideen er at ethvert gen er repræsenteret binært som en streng,

hvor ”*” angiver at både 0 og 1 er mulige værdier. For eksempel:

0 1 * * 0* * 1 1

Til ethvert skema hører der da en gennemsnitlig fitness for alle løsninger som dette skema

indgår i. Ovenstående eksempel har for eksempel 16 forskellige mulige værdier. I en given

population er det usandsynligt at alle disse er repræsenteret, så der er tale om et estimeret

gennemsnit. Men givet at skemaet er repræsenteret, kan det beregnes hvordan antallet af in-

stanser af skemaet i populationen vokser (eller falder) ud fra dette gennemsnit og den gen-

nemsnitlige fitness i hele populationen. Når effekten af rekombination og mutation tages i

betragtning, fås der en formel på denne form (efter M. Mitchell s. 29):

Hvor I er antal instanser af skemaet, E(I) estimeret antal instanser, f estimeret gennemsnitlig

fitness, og de to P’er hhv. chancen for at instanser af skemaet kan overleve rekombination og

mutation. Formlen (Skemateoremet) siger noget om at skemaer med høj estimeret gennem-

snitlig fitness vil have et ekspotentielt stigende antal instanser i populationen.

I Hollands skemateorem optræder rekombination kun som noget der ødelægger overlevelses-

chancen. Men rekombination er formentlig også det der gør genetiske algoritmer så velegne-

de til at finde løsninger. Byggeklodshypotesen forsøger at beskrive dette teoretisk, som at

gode løsninger til dele af et problem kombineres og skaber en god løsning til hele problemet.

Men det teoretiske fundament for denne hypotese er meget omdiskuteret. Der findes en lang

række andre forsøg på at beskrive genetiske algoritmers virkemåde teoretisk. (Se f.eks. M.

Mitchell s. 117-152).

3.6 Memetiske algoritmer

Indenfor evolutionære algoritmer, en betegnelse der omfatter både genetiske algoritmer og

andre beslægtede teknologier, har flere forskellige biologiske evolutionsprincipper været for-

søgt omsat til datalogiske metoder. Her er man ikke så bundet af om en given teori kan for-

klare observationer i naturen. Det gælder følgende (T.Mitchell, s. 266):

• Darwin. Naturlig udvælgelse. Individer i en ny generation varierer en smule. De bedst

tilpassede overlever.

• Lamarck. Videreførsel af et individs personlige udvikling til næste generation. Den i

fiktion ofte sete (men i biologien for længst forkastede) ide om at gener kan videre-

( )( )

( )( )mrtt PPIpopulationf

skemafIE −−≥+ 11

)(1

Page 13: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

13

bringe erfaring. De bedste overlever og er biologisk tilpassede til at nyde godt af hvad

en tidligere generation har lært.

• Baldwin. De individer som bedst er i stand til at lære at tilpasse sig omgivelserne over-

lever. Det er ikke selve tilpasningen men evnen til at tilpasse sig der forbedres. Det er

naturligvis et princip som er mest velegnet til der hvor omgivelserne forandrer sig ofte.

Man kan se mennesket som den art der bedst efterlever Baldwins evolutionsprincip.

De mere avancerede algoritmer baseret på evolutionsprincippet kaldes som nævnt ofte me-

metiske algoritmer. Det kan være algoritmer baseret på Lamarcksk evolution eller Baldwin-

princippet. Udtrykket stammer fra bologen Richard Dawkins (W.E. Hart s. 13), som forslog

en udvidelse af Darwins princip, hvor højerestående arter (mennesker) ikke så meget udvik-

ler deres ”hardware” (gener) som deres ”software” (tanker, ideer) ved hjælp af naturlig ud-

vælgelse. De bedste ideer, eller bedste metoder til at løse et problem på, overlever.

Memetiske algortimer bruges også som generel betegnelse for metoder der kombinerer gene-

tiske algoritmer med andre metoder. Ideen er at den genetiske algoritme står for at lave en

global søgning, mens den eller de andre metoder man kombinerer med laver en lokal søg-

ning. Man udnytter her at den genetiske algoritme har lavet en hel population at mulige løs-

ninger, der kan forbedres på, hvilket kan hindre at man blot finder et lokalt maksimum. An-

dre betegnelser for det der nu kaldes memetiske algoritmer er blandt andet hybride genetiske

algoritmer, genetiske lokal søgnings algoritmer eller Lamarckske eller Baldwinske evolutio-

nære algoritmer. (Se Burke og Landa Silva for en oversigt over brug af memetiske algorit-

mer til skemalægning).

3.7 Andre metoder

Andre metoder, der ofte er set brugt, er at transformere skemalægningsproblemer til andre

problemer der allerede er udviklet mange løsningsmetoder og heurestikker til. Det gælder for

eksempel graffarvning. Desuden ses andre metoder fra kunstig intelligens-forskningen , som

for eksempel fuzzy logik og sværmintelligens, anvendt i nyere artikler om skemalægning.

(Se f.eks. SATATs hjemmeside for oversigter over præsentationer ved konferencerne).

Page 14: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

14

4 GenetiskSkema - en genetisk algoritme til skemalægning

GenetiskSkema er en simpel genetisk algoritme der ved hjælp af nogle generelle constraints

kan finde brugbare løsninger på skemalægningsproblemer i skoler.

Det valgte programmeringssprog er java, da et objektorienteret programmeringssprog skøn-

nes at være nemmere at læse for mennesker og java er stort set platformsuafhængigt.

4.1 Designovervejelser

Der er lagt væk på enkelhed og overskuelighed og knap så meget på effektivitet.

4.1.1 Genom og gener

Der er mange mulige repræsentationer af skemaer. Et gen kan for eksempel sættes til at være

en enkelt aktivitet på et bestemt tidspunkt. Genomet består da af alle de aktiviteter der skal

afholdes (lektioner i klasser), hvor de enkelte gener adskiller sig ved at have valgt forskellige

tidspunkter at afholde aktiviteten på. Her er valgt en repræsentation, som lader et gen være

en større enhed, nemlig skemaet for en enkelt klasse. Genomer er da samlingen af skemaerne

for alle klasser. Gener adskiller sig her fra hinanden ved en række aktiviteter, som er anbragt

forskelligt. Der er således mere information i hvert gen end hvis genet blot var en enkelt ak-

tivitet. Det gør det sværere at frembringe nye brugbare gener ved mutation, men giver mulig-

vis bedre muligheder på at bevare information om gode skemaer for enkeltklasser.

Et vigtigt design-problem for genetiske algoritmer er hvordan man sørger for at algoritmen

konvergerer frem mod stadigt bedre løsninger, i stedet for blot at levere en endeløs række af

mere eller mindre brugbare løsninger. Her er det vigtigt at vælge generne således at man ved

rekombination af to gode genomer vil nå frem til et nyt godt genom. Ved at vælge genet som

et skema for en klasse opnås det at skemaer der er gode for klasserne også vil være gode for

klasserne ved en rekombination. Men samtidig risikerer man at miste andre gode egenska-

ber, som gode skemaer for lærere og overholdelse af hard constraints. Det er dog normalt

sådan at skemaet for elever er langt mere udfyldt end skemaet for lærere, så chancen for at

en tilfældig rekombination af skemaer for klasser giver overtrædelser af hard constraints er

langt mindre end hvis noget tilsvarende blev gjort med lærernes skemaer. Det at genet er et

skema for en klasse, gør at hard constraints mht. at en klasse ikke kan have aktiviteter i sam-

me tidsrum automatisk bliver overholdt, såfremt generne initialiseres således og mutationer

ikke kan ændre på det (hvilket er tilfældet med GenetiskSkema).

Ved rekombination kan der vælges mellem flere forskellige strategier (T. Mitchell s. 253).

For eksempel kan hvert genom deles i to stykker som hver indeholder et antal gener. Disse

stykker — svarende til kromosomer i biologien, kombineres da. (Metoden kaldes single-

point crossover). Her er i stedet valgt at foretage tilfældig udvælgelse af enten ”fader” eller

”moder” for hvert enkelt gen, svarende til at biologiske individer havde kromosomer som

hver bestod af kun et gen. Et tredje alternativ er at skære genomet i et antal stykker udvalgt

således at vigtige egenskaber som overholdelse af hard constraints bevares ved en rekombi-

nation. (Se for eksempel Erben og Keppler s. 204 for en måde dette kan gøres på).

4.1.2. Hard constraints

Håndtering af hard constraints i genetiske algoritmer kan ske enten ved helt at udelukke ge-

nomer der ikke overholder hard constraints eller ved at give den en meget lav fitness-værdi

som sørger for at sortere dem fra efterhånden. Her er valgt sidstnævnte metode. Det giver et

Page 15: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

15

problem med at kalibrere soft constraints i forhold til hard constraints. Hvis vægten af hard

constraints sættes for lavt, vil der måske ikke opstå brugbare løsninger i populationen (dvs.

løsninger som overholder alle hard constraints), men ved for høj vægtning kan man risikere

at der kun optimeres i forhold til hard constraints, så soft constraints ignoreres.

Ulempen ved automatisk at sortere alle genomer der overtræder hard constraints fra er imid-

lertid at man begrænser søgerummet, og kan risikere aldrig at finde de gode løsninger der

ligger i et område hvor hard constraints ofte overtrædes.

For at minimere ovennævnte risiko for at man ved rekombination laver løsninger med mange

overtrædelser af hard constraints er følgende mekaniske blevet implementeret i GenetiskSke-

ma: Ved rekombination undersøges det gen for gen hvor godt genet fra det ene genom passer

sammen med det andet genom. Hvis antallet af hard constraints ville øges ved at dette gen

(og kun det) indsættes, reduceres chancen for at genet kommer med i det rekombinerede ge-

nom. Eller med fader/moder-analogien: Som udgangspunkt overtager barnet moderens ge-

ner, mens chancen for at et givet af faderens gener tages med i stedet afhænger af hvor godt

det passer sammen med moderens gener (mht. hard constraints).

4.1.3 Fitness

Fitness som en sum af fitness for hver constraint har den ulempe at enkelte bidrag kan

”forsvinde i mængden”: Chancen for at et gen med x + y fitness, x >> y, udvælges er kun en

anelse større end chancen for at et gen med fitness x udvælges, hvilket gør at udvælgelses-

mekanismen stort set ikke skelner mellem de to. Der er dog måder at løse det problem på.

Udvælgelsen kan foregå på forskellige måder, for eksempel (T.Mitchell s. 255):

1. ”Roulette”-metoden. Chancen for at blive udvalgt er direkte proportional med fitness.

2. ”Turnerings”-metoden. Der udvælges to helt tilfældige genomer, dvs. uafhængigt af

deres fitness. Der trækkes lod mellem de to. Således at genomet med højest fitness har

størst chance for at vinde, men ikke proportionalt med den relative fitness. For eksem-

pel at genomet med højest fitness har en fast 75% chance for at vinde.

3. ”Rang”-metoden: Genomerne ordnes efter rang i forhold til deres fitness. Chancen fro

at blive udvalgt er da proportional med rangen, ikke fitness.

Her er valgt metode ”roulette”-metoden, men for at undgå ovennævnte problem, er fitness et

produkt af fitness for hvert enkelt constraint, i stedet for en sum. Det kan give nogle meget

høje værdier for fitness og muligvis sortere gener fra for hurtigt, så antallet af forskellige ge-

ner bliver for lille til at rekombinationen fungerer effektivt. Dvs. det tidligere nævnte pro-

blem kaldet crowding. Men det gør også at dårlige gener hurtigt forsvinder.

4.2 Implementerede hard constraints

Den eneste hard constraint der testes eksplicit for er om en lærer er to steder på en gang. Im-

plicit testes der for om en klasse er tildelt flere aktiviteter i samme tidsrum ved at initialise-

ring, rekombination og mutation ikke overtræder denne constraint.

4.3 Implementerede Soft constraints

I stedet for individuelle skemaønsker er der indsat en række generelle regler:

1. Elever skal have så få mellemtimer som muligt.

2. Fag på samme dag skal helst ligge i rækkefølge.

3. Forskellige tidspunkter på ugeskemaet vægtes forskelligt, f.eks. kan en meget sen lektion

Page 16: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

16

sættes til ikke at være særlig ønskeværdig og en tidlig lektion til at være ønskværdig.

4. Antal lektioner en lærer kan have på en dag kan vægtes forskelligt, f.eks, kan det vægtes

højt ikke at have timer, dvs. have en fridag.

4.4 Beskrivelse af programmel

Kodet i java – kompileret med javac 1.5.0_01 til Windows.

Den komplette programkode findes i appendiks A.

Vigtige globale variable:

• fitnessIntervaller: Intervallet [0:1] delt op så størrelsen på del n er proportional med fit-

ness af genom n i forhold til summen af alle genomers fitness.

• StartHCTest: Variabel til styring af hvornår rekombination af genomer skal tage hensyn

til overholdelse af hard constraints.

main

Et antal inddatafiler indlæses:

Parameterfil (se parameterbeskrivelse i appendiks B)

En population oprettes.

Den genetiske algoritme forløber herefter således:

1. Beregn fitness for genomerne i populationen

2. Foretag formering og udvælg overlevende genomer

3. Muter populationen

4. Såfremt max antal generationer ikke er nået: gå til 1.

Udskriv resultatet

4.4.1 java klasser

Population

Array genom: Et antal instanser af Genom svarende til populationsstørrelsen.

Metode beregnFitness: Beregn fitness for alle genomer og summer dem.

Metode formering: Lav nye genomer til en ny generation, bestående af overlevere og rekom-

binationer af de gamle genomer, udvalgt på baggrund af fitness.

Metode mutation: Udfør mutation på parameterbestemt procentdel af genomer.

Metode printSkema: Udskriv populationen på læsbar form (som skoleskemaer).

Metode printFagfordeling: Udskriv liste over hvilke fag og klasser lærerne har

Metode dumpGenom: Gem genomerne i populationen på kompakt form i outputfil.

Genom

Array gen: Et antal instanser af Gen svarende til størrelsen af genomet (dvs. antal skoleklas-

ser)

Variabel fitness: Genomets fitness (fra senest det blev beregnet).

Variabel antalHC: Antal overtrædelser af hard constraints genomet har (som kan være 0).

Variabel antalMellemtimer: Totalt antal mellemtimer for et genom.

Page 17: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

17

Metode reKombiner: Sammensæt et nyt genom af to gamle ved rekombination af gener.

Metode muter: Lav mutation i tilfældigt udvalgt gen.

Metode beregnFitness: Beregn fitness af genomet og om det overtræder hard constraints.

Metode mellemTimer: Beregn antal mellemtimer for genomet.

Metode samleTimer: Beregn antal nabolektioner med samme fag.

Metode arbejdsDag: Beregn fitness-bidrag fra længden på lærernes arbejdsdage.

Metode printLaererSkema: Udskriv skemaer for lærere.

Metode hardConstraints: Beregn antal overtrædelser af hard constraints.

Metode printSkema: Udskriv genomet på læsbar form (som skoleskemaer).

Metode genStreng: Dan genomet som en streng af bogstaver.

Gen

Array skema: Skema for en skoleklasse.

Metode muterSkema: Byt om på aktiviteten for to tilfældige tidspunkter i skemaet.

Metode startSkema: Initialiser skema ved først at lægge aktiviteterne på de tidligst mulige

tidspunkter og dernæst lave ”mutation” (med ovenstående metode) på alle tidspunkter.

Metode printSkema: Print skemaet for en enkelt skoleklasse.

Metode genTilStreng: Lav genet som en streng af bogstaver (og evt. andre tegn).

4.5 Kalibrering

Det krævede en del kalibrering at få algoritmen til at konvergere tilfredsstillende. For eksem-

pel viste vægtning af hard constraints i forhold til soft constraints sig at fungere bedst hvis

hard constraints kun vægtes ganske lidt mere end soft constraints.

Page 18: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

18

4.6 En praktisk test

Som en test af programmellet er valgt et praktisk skemalægningsproblem fra en virkelig sko-

le, således at løsningerne kan sammenlignes med det skema der faktisk blev anvendt. Der er

dog et par ting som ikke er implementeret i GenetiskSkema, således at det ikke kunne lade

sig gøre at lave et skema eksakt som ønsket. Der vil blive redegjort for dette i konklusionen.

4.6.1 Præsentation af test-problem

Skemalægningsproblemet er et skema for en skole med 8 klasser der tilsammen har 20 for-

skellige fag og 19 lærere. Det skal gælde for et halvt år. (Baseret på skemaet for Kalundborg

Handelsgymnasium og HG, forår 2009).

4.6.2 Vurdering af programmellets praktiske anvendelighed

Her ses skemaet for en klasse, til venstre lavet med GenetiskSkema, til højre det anvendte.

Begge ses at have en rimelig spredning af fag mht. fordeling over ugen og lektioner i række-

følge. Der var naturligvis ingen overtrædelser af hard constraints i nogen af skemaerne. Vir-

kelighedens skema har knap så stor spredning i antal lektioner pr. dag og har ingen mellem-

time, men det kan skyldes at der var en begrænsning på 8 lektioner pr. dag der. Klassen (dvs.

genet) var tilfældigt udvalgt. I andre af klasserne var der større forskel, specielt for de klasser

som havde relativt få lektioner pr. uge. Det ekstreme tilfælde var nok dette:

Her er der både meget større spredning i antal timer pr. uge flere mellemtimer i Genetisk-

Skemas version. Så her er en forbedring ønskelig.

multimed. dansk afsaetn. fransk engelsk afsaetn. psykologi engelsk virk.oek. matematik

multimed. virk.oek. dansk samtidsh. psykologi afsaetn. psykologi engelsk virk.oek. matematik

afsaetn. virk.oek. lektiecaf samtidsh. matematik int.oek psykologi int.oek engelsk fransk

afsaetn. matematik afsaetn. int.oek. matematik dansk tysk int.oek engelsk fransk

psykologi fransk engelsk int.oek. int.oek. samtidsh. dansk afsaetn. virk.oek. lektiecaf

psykologi virk.oek. engelsk fransk matematik samtidsh. dansk afsaetn. mate-matik

multimed.

multimed. engelsk fransk matematik virk.oek. matematik fransk mate-matik

multimed.

dansk tysk virk.oek. matematik virk.oek. matematik fransk multimed.

virk.oek.

salg og s laeringk.

erhv.oek. laeringk. inf.tekn. erhv.oek.

engelsk inf.tekn. laeringk. samfundsf salg og s erhv.oek. laeringk. dansk inf.tekn.

engelsk inf.tekn. livsstil laeringk. dansk salg og s lektiecaf laeringk. dansk inf.tekn.

salg og s laeringk. dansk dansk dansk lektiecaf laeringk. inf.tekn.

erhv.oek. lektiecaf erhv.oek. livsstil engelsk laeringk. samfundsf

livsstil erhv.oek. inf.tekn. livsstil engelsk laeringk.

laeringk. lektiecaf inf.tekn.

laeringk.

Page 19: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

19

6.6.3 Analyse af testdata

Der blev kørt en række test med forskelligt valg af parametre. De føromtalte skemaer svarer

til denne kørsel med en population på 100 og 2000 generationer:

De tre serier af tal er hhv. et mål for fitness, antal overtrædelser af hard constraints og antal

mellemtimer som et eksempel på overtrædelse af soft constraints.

Det ses at antal overtrædelser af hard constraints meget hurtigt daler, overtrædelse af soft

constraints udviser en faldende tendens over det meste af forløbet, mens fitness af løsninger-

ne (som følge heraf) er stigende helt frem til generation 2000. At fortsætte til efter generati-

on ca. 1500-2000, så imidlertidig ikke ud til at have nogen entydig effekt.

Mutationer er en vigtig forudsætning for at algoritmen fungerer, som det ses her af en kørsel

med samme parametre som ovenfor, men med mutationer koblet fra:

-40

-20

0

20

40

60

80

100

120

140

0 300 600 900 1200 1500 1800 2100

Generationer

Hard constraints Mellemtimer LOG ( FITNESS )

-20

0

20

40

60

80

100

120

140

0 300 600 900 1200 1500 1800 2100

Generationer

Hard constraints LOG (FITNESS) Mellemtimer

Page 20: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

20

Uden mutationer bliver antallet af gener hurtigt reduceret, mens der ikke vil komme nye til.

Det vil sige, at når først den optimale kombination af gener er fundet, kan der ikke ske yder-

ligere forbedringer af fitness.

For ikke at risikere en for hurtig udtynding i generne, tilkobles den mekanisme der favorise-

rer gener som skaber få overtrædelser af hard constraints først omkring midtvejs i forløbet.

Men som det ses i ovenstående diagram, har det i denne test ikke den store betydning hvor-

når det sker. Parametre her er igen som i den første kørsel, på nær at ovennævnte mekanisme

er koblet ind fra start.

Reduceres størrelsen af populationen, fungerer algoritmen stadig, om end det går betydeligt

langsommere. Igen er det samme parametre, men med en population på kun 10:

-40

-20

0

20

40

60

80

100

120

140

160

0 300 600 900 1200 1500 1800 2100

Hard constraints Mellemtimer LOG (FITNESS)

-20

0

20

40

60

80

100

120

140

0 5000 10000 15000 20000

Hard constraints Mellemtimer LOG (FITNESS)

Page 21: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

21

4.6.4 Sammenligning med færdigudviklet skemalægningsprogram: Lantiv Timetabler

Lantiv Timetabler er et program til skemalægning der kan hentes gratis på internettet. Det

har både mulighed for at lægge et skema manuelt og for at få programmet til at gøre det.

Data til Lantiv tastes ind i en database via et brugerinterface. Der er følgende tabeller:

• Days: De ugedage der er undervisning.

• Lessons: De tidsintervaller en dag er delt op i.

• Subjects: Fag.

• Groups: Klasser

• Students: De enkelte studerende*

• Teachers: Lærere

• Rooms: De lokaler der er til rådighed*

• Equipment: De begrænsede ressourcer der er til rådighed*

• Activities: Sammenknytning af group, subject, teacher, room og equipment.

Programmet kan køre uden man bruger felterne mærket ”*”. Skærmbillederne ser således ud:

Når data er tastes ind, går man videre til et selve skemalægningsdelen af programmet. Her

skal man først indlægge constraints. Det foregår ved at man for de fleste tabeller i databasen

kan indsætte forskellige minimum og maksimum værdier – svarende til hard constraints – og

nogle ”desirable” værdier – svarende til soft constraints:

Page 22: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

22

Programmet holder da øje med om constraints bliver overholdt, hvad enten man lægger ske-

maet manuelt eller automatisk. Ved automatisk skemalægning søges efter en løsning der

overholder alle constrants, og hvis ikke dette er muligt, overholder alle hard constraints og så

mange som muligt af soft constraints. Herefter kan skemaet kigges igennem og evt. rettes til

og man kan bruge forskellige rapporterings-funktioner.

Page 23: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

23

I forhold til GenetiskSkema er der ingen generelle constraints for hvad der er et godt skema,

så alt skal tastes ind som constraints på specifikke data. For eksempel at en bestemt klasse

skal have et vist minimum antal lektioner pr dag og højest må have et bestemt antal mellem-

timer eller at en bestemt lærer foretrækker et bestemt antal lektioner pr. dag. I modsat fald

fyldes de enkelte klassers skemaer blot ud med fagene i tilfældig orden fra første lektion

mandag til alt er fordelt.

Det er af denne årsag ikke nemt at sammenligne Lantiv og GenetiskSkema direkte. Ved ind-

tastning af nogle værdier for antal timer pr. dag pr. klasse samt et fortrukket antal timer for

lærere, opnås følgende (virkelighedens skema til højre, samme eksempel som før):

Som det fremgår er der ingen problemer med at få et kompakt skema, men fagene er spredt

ud ret tilfældigt. Det er muligt at undgå dette på forskellig vis med Lantiv, ved at taste fag

ind som dækkende mere end en lektion i træk. Fordeling af timer over en uge for lærere er

også svær at styre. I forhold til med GenetiskSkema er de meget tilfældigt fordelt ud over

ugen, selv efter forsøg på at samle dem med soft constraints. Det er dog muligt at disse pro-

blemer kan løses, men det vil kræve meget individuel tilpasning.

Ved en kombination af GenetiskSkema og Lantiv, kunne det tænkes at der kunne opnås et

bedre resultat end med hvert enkelt program. Det blev afprøvet med samme eksempel som

før, ved først at indtaste GenetiskSkemas skema i Lantiv og dernæst køre Lantivs automati-

ske skemalægning. Det gav som forventet nogle mere kompakte skemaer, men der var igen

problemer med lærernes skemaer. Det samlede resultat blev:

Tallene er hhv. gennemsnitlige antal mellemtimer i klassernes skemaer og gennemsnitlige

antal dage uden undervisning lærerne har. Tallene i parentes for GenetiskSkema er for en

kørsel hvor soft constraint for lærernes arbejdsdage var fjernet ved at stille på vægtene. Det

ses at virkelighedens skema (lagt med et kommercielt skemalægningsprogram) er klar bedre

på de her målte egenskaber, mens valget mellem GenetiskSkema og Lantis (med de her valg-

te constraints og parametre) afhænger af om man foretrækker nogle færre mellemtimer for

eleverne eller nogle flere undervisningsfrie dage for lærerne. Der er dog det forbehold at ik-

ke alt i virkelighedens skema kunne implementeres i testen, herunder nogle fag som samlæ-

ses mellem flere klasser, så resultaterne betyder ikke nødvendigvis at det anvendte skema-

lægningsprogram (Untis) er så klart bedre end det umiddelbart ser ud her.

matematik matematik virk.oek. dansk engelsk

afsaetn. psykologi engelsk virk.oek. matematik

virk.oek. afsaetn. multimed. psykologi matematik afsaetn. psykologi engelsk virk.oek. matematik

matematik fransk matematik multimed. int.oek. int.oek psykologi int.oek engelsk fransk

engelsk fransk afsaetn. fransk virk.oek. dansk tysk int.oek engelsk fransk

virk.oek. engelsk int.oek. dansk psykologi samtidsh. dansk afsaetn. virk.oek. lektiecaf

afsaetn. dansk samtidsh. virk.oek. lektiecaf samtidsh. dansk afsaetn. matematik multimed.

samtidsh. multimed. psykologi afsaetn. fransk virk.oek. matematik fransk matematik multimed.

engelsk matematik tysk int.oek. virk.oek. matematik fransk multimed.

GenetiskSkema Lantiv GS + Lantiv Virkelighedens skema

mellemtimer 2,1 (0,5) 0,1 1,5 0

fridage/lærer 1,8 (0,7) 0,3 0,8 1,6

Page 24: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

24

Af faciliteter som Lantiv har, som ikke findes i GenetiskSkema er først og fremmest mulig-

heder for at lægge constraints ind for f.eks. hver enkelt lærer eller hver enkelt klasse. Også

muligheden for at arbejde skiftevis manuelt og automatisk gør formentlig Lantiv til et bedre

skemalægningsprogram end GenetiskSkema i sin nuværende form. Af funktioner der ikke er

brug for til løsning af det konkrete problem er blandt andet at Lantiv kan håndtere lokalefor-

deling, fordeling af knappe ressourcer og fordeling af elever på klasser. Klasser – kaldet

groups – er desuden lavet således at en klasse kan deles op i undergrupper og man kan sætte

aktiviteter op der involverer flere klasser.

At rette manuelt i skemaet er ganske nemt i Lantiv, som det ses herunder. Man tager blot fat

i et fag på skemaet og flytter det med musen. Lantiv viser endda hvor læreren har ledige ti-

mer, så man kan holde øje med hvordan lærernes skemaer forandres.

Page 25: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

25

4.7 Test af den genetiske algoritme

Til at teste programmellet yderligere, blev følgende skemalægningsproblem præsenteret for

GenetiskSkema:

6 klasser skal have totalt 6 fag (men en bestemt lærer pr. fag) fordelt med et forskelligt antal

timer af hvert fag i hver klasse og sådan at alle 12 tidspunkter, der er på en uge, er fyldt op

for alle klasser og alle lærere. (Se også appendiks D).

Af soft constraints vil det kun være samling af fagene som vil kunne komme i spil, ellers vil

problemet bestå i at få opfyldt hard constraints, i et skema hvor det er (urealistisk) svært at få

opfyldt dem alle.

Ligesom i den første test blev der kørt med en population på 100. Det viste sig at tage mange

generationer at finde en løsning (dvs. skema hvor alle hard constraints er opfyldt), typisk op

mod et par hundrede, men i nogle tilfælde lykkedes det efter for eksempel 26 generationer.

Dette tilfælde bruges i det følgende.

En given population indeholder et antal genomer, som hver især indeholder nogle gener.

Uden mutationer øges det samlede udvalg af forskellige gener ikke, da de blot kombineres

på forskellige måder i nye generationer. Der vil derimod ske en udtynding i generne efter-

hånden, så nogle gener forsvinder og ikke kommer igen. Men ved hjælp af mutation skabes

der nye gener. Det skulle derfor være muligt at følge et bestemt genoms historie mht. hvor-

når de gener, det består af, opstod. Resultatet af det ses herunder. Da gener svarer til de en-

kelte skoleklasser, har de fået betegnelser som 1A og 1B:

Diagrammet følger historien for det genom der opstår efter 26 generationer. (Genomet, som

viser sig at være en løsning til hele skemalægningsproblemet, opstår samtidig med dets sid-

ste gen, men det behøvede ikke at have været tilfældet). Genomet består af en række gener,

som enten var med fra starten (1A og 1B) eller opstod senere som mutationer.

Som det fremgår, udkonkurrerer de nye gener i løbet af et par generationer resten af generne

i populationen, uden dog helt at fjerne dem. Det må formodes at det skyldes at stort set kun

hard constraints bidrager til forskel i fitness. Så snart et gen der muliggør overholdelse af

endnu en hard constraint opstår, udkonkurrerer dette gen hurtigt de øvrige. Dette bekræftes

ved nærstudier af output. Man kan måske også ane på diagrammet at der faktisk opstod et af

generne i generation 9, men det døde ud før det kunne formeres, hvorefter det opstod igen

ved en mutation i generation 11.

Slut-geners andel af samlet population

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Generation

%

1A 1B 2A 2B 3A 3B

Page 26: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

26

4.8 Konklusion på test

I den praktiske test var der nogle ting som ikke kunne implementeres i GenetiskSkema. Det

var:

1. Visse tidspunkter er øremærket til bestemte fag. Det drejer sig for eksempel om faget

”læringskompetencer” som normalt ligger om onsdagen og på hele dagen, for de klasser

der har faget.

2. Visse tidspunkter kan ikke bruges til undervisning. Det drejer sig i dette tilfælde om tids-

punkter efter 7. lektion om torsdagen.

3. Klasser der deles op i to og undervises samtidig af to forskellige lærere, enten i det sam-

me fag på forskelligt niveau eller i to forskellige (ofte sprog-) fag, kan ikke implemente-

res. I stedet var timerne delt mellem de to fag.

4. Samundervisning mellem to eller flere klasser i det samme fag er kun delvist implemente-

ret, ved at det ved visse fag er tilladt at en lærer har flere klasser samtidig. Men at dele

flere klasser ud på flere fag kan ikke håndteres.

Punkt 1-2 kan løses ved at indføre flere justerbare hard constraints. Punkt 3-4 kan f.eks. Lø-

ses ved som i Lantiv at erstatte (skole-)klasser med fleksible grupper som kan slås sammen

og deles op efter behov.

Der er desuden nogle ting et program som Lantiv kan håndtere, som der ikke var brug for i

det praktiske eksempel, men som kunne forbedre anvendeligheden af GenetiskSkema:

1. Et brugerinterface. I sin nuværende form er GenetiskSkema ikke anvendeligt uden en

længere instruktion i brugen og stor omhyggelighed med indtastninger. Der er for eksem-

pel ikke tilstrækkelig kontrol af om inddata er korrekt, og der er ikke gjort forsøg på at

teste dette.

2. En grundigere kalibrering, så parametre får værdier som er optimale for de fleste praktisk

forekommende problemer. Derved undgår man at skulle bruge tid på at stille på parametre

hver gang programmet bruges.

3. Mulighed for indtastning af yderligere constraints i et generelt format. For eksempel som

det gøres i Lantiv.

4. Bedre muligheder for at gemme både inddata og uddata. Optimalt set med en mulighed

for at arbejde videre med et allerede lagt skema.

5. Implementering af lokaler og andre knappe ressourcer som hard conmstraints.

Såfremt GenetiskSkema skulle udvikles til kommercielt eller open source-software, ville alle

disse forbedringer være nødvendige.

At GenetiskSkema er skrevet i java lægger op til at man kunne lave det om til en java-applet

der køres fra en standard-browser på en maskine med java installeret. Data vil da kunne

gemmes i en tilknyttet database. Det vil for eksempel gøre det nemt at lægge en version af

programmet med begrænset funktionalitet ud på nettet til fri afprøvning for mulige brugere.

Det vil også gøre programmet helt platformuafhængigt.

Page 27: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

27

5 Konklusion

Genetiske algoritmer — enten som rene genetiske algoritmer eller i forskellige udvidede el-

ler hybride former — er i litteraturen meget ofte anvendt til løsning af skemalægningsproble-

mer. Med det her konstruerede programmel viser en genetisk algoritme sig endnu en gang

ganske velegnet til at løse en konkret praktisk opgave.

Det er rimeligt klart at med den hastigt voksende regnekraft og lagerplads i computere vil

genetiske algoritmer anvendelighed vokse, da det vil betyde mindre om der skal bruges

mange generationer med store populationer. Men selvfølgelig kræver det at problemet hører

til de problemer som kan løses med en metode som genetiske algoritmer. Det vil sige at løs-

ningen til problemet kan ses som en tilpasning til nogle omgivelser, der hvor mere eller min-

dre tilfældig søgning i hvert fald i første omgang er tilstrækkelig. Men naturens egen

”genetiske algoritme” har været i stand til at frembringe ting som man med mere determini-

stiske metoder ofte har svært ved at kopiere, så hvor præcis grænsen går, er svært at spå om.

Nogen revolutionerende nye skemaer skal man nok ikke forvente. Skemalægning er i datalo-

gisk forstand et komplekst problem, hvor der til stadighed udvikles mere effektive løsnings-

metoder, men for en bruger er der næppe særlig meget rum for forbedring i forhold til hvad

de førende skemalægningsprogrammer kan i dag, hvad angår selve beregningen af skemaet.

5.1 Forskningsfeltet skemalægning nu og i fremtiden

Der har været forskellige tilløb til at konstruere et sprog til eksakt beskrivelse af skemalæg-

ning som vil kunne samle forskningsindsatsen. Det vil være en klar fordel i betragtning af de

ofte meget lidt sammenlignelige tilgange til skemalægningsproblemet og de mange gange

man har opfundet den samme ting (som her). Men for den praktiske anvendelighed af ske-

malægnings-programmel savner jeg måske mere studier af hvordan man omsætter ønsker til

et skema til parametre i et program. At sætte det op som hard constraints og soft constraints

er ofte ikke specielt intuitivt: En lærer eller en elev vil have en ide om hvad et godt skema er,

men kan ikke nødvendigvis omsætte det til nogle logiske udsagn. Om det tager et par minut-

ter længere eller man skal sætte lidt mere ram i sin maskine betyder ikke så meget for en

skemalægger, men at få computeren til at forstå hvad man vil have for et skema, er straks

sværere.

Page 28: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

28

6 Litteratur

Bardadym, V.A.: ”Computer-Aided School and University Timetabling: The New Wave” i

Practice and Theory of Automated Timetabling, E. Burke & p. Ross (eds.), Springer 1996.

Boufflet, J.P og S. Nègre: ”Three Methods used to solve an Examination Timetable

Porblem” i Practice and Theory of Automated Timetabling, E. Burke & p. Ross (eds.),

Springer 1996.

Burke, E.K og J.D. Landa Silva: ”The Design of Memetic Algorithms for Scheduling and

Timetabling Problems” i Recent Advances in Memetic Algorthms, Hart, Krasnogor, Smith

(eds.), Springer 2005.

Cheng, C. m.fl.: ”Investigations of a Constraint Logic Programming Approach to University

Timetabling” i Practice and Theory of Automated Timetabling, E. Burke & p. Ross (eds.),

Springer 1996.

Cooper, T.B. og J.H. Kingston: ”The Complexity of Timetable Construction Problems” i

Practice and Theory of Automated Timetabling, E. Burke & p. Ross (eds.), Springer 1996.

Erben, W. og J.Keppler: ”A Genetic Algorithm Solving a Weekly Course-Timetabling Pro-

blem” i Practice and Theory of Automated Timetabling, E. Burke & p. Ross (eds.), Springer

1996.

Hart, W.E m.fl: ”Memetic Evolutionary Algortims” i Recent Advances in Memetic Al-

gorthms, Hart, Krasnogor, Smith (eds.), Springer 2005.

Mitchell, Melanie: An Introduction to Genetic Algorithms, MIT press 1998.

Mitchell, Tom M.: Machine Learning, McGraw-Hill 1997.

Negnevitsky, Michael: Artificial Intelligence, Pearson Education 2002.

Russell, Stuart og Peter Norvig: Artificial Intelligence 2nd ed, Pearson Education 2003.

Schaerf, Andrea : A Survey of Automated Timetabling. Artif. Intell. Rev. 13(2): 87-127

(1999)

Thompson, J og K.A. Dowsland: ”General Cooling Schedules for a Simulated Annealing

Based Timetabling System” i Practice and Theory of Automated Timetabling, E. Burke & p.

Ross (eds.), Springer 1996.

6.1 Internet:

Lantiv Timetabler:

http://www.lantiv.com/

Working Group on Automated Timetabling (WATT):

http://www.asap.cs.nott.ac.uk/watt/

Page 29: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

29

Practice and Theory of Automated Timetabling (PATAT)

http://www.asap.cs.nott.ac.uk/patat/patat-index.shtml

ITC2007 - International Timetabling Competition

http://www.cs.qub.ac.uk/itc2007/index.htm

FET – open source timetabling software (c++)

http://www.lalescu.ro/liviu/fet/

Page 30: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

30

Appendiks A: Programkode

import java.io.*;

import java.util.*;

public class GenetiskSkema {

// Variable til inputdata og parametre

static int antalKlasser = 3;

static int antalFag = 3;

static int antalLaerere = 2;

static int antalDage = 5;

static int maxLektioner = 8;

static int popSize = 200;

static int overlevere = 5;

static int maxGenerationer = 200;

static int startHC = 100;

static double hardVaegt = 10.0;

static double mellemVaegt = 2.0;

static double samleVaegt = 2.0;

static double faellesVaegt = 2.0;

static double mutationProcent = (double)5.0;

static int dumpFrekvens = 100;

static int [][] timeFordeling = new int [antalKlasser] [antalFag];

static int [][] fagFordeling = new int [antalKlasser] [antalFag];

static int [] faellesFag = new int [antalFag];

static double [][] skemaVaegt = new double [antalDage] [maxLektioner];

static double [] arbejdsdagVaegt = new double [maxLektioner+1];

static double [] fitnessIntervaller = new double [popSize];

static String [] fagNavne = new String [antalFag];

static String [] klasseNavne = new String [antalKlasser];

static String [] laererNavne = new String [antalLaerere];

static int startHCTest = 0;

public static void main(String arguments[]) {

// Inlaesning af input-filer start

FileReader parameterInput;

FileReader timerInput;

FileReader fagInput;

FileReader skemaVaegtInput;

FileReader arbejdsdagVaegtInput;

FileReader fagNavneInput;

FileReader klasseNavneInput;

FileReader laererNavneInput;

FileReader faellesFagInput;

try

{

Page 31: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

31

parameterInput = new FileReader ("parametre.txt");

Scanner scn = new Scanner(parameterInput);

antalKlasser = scn.nextInt();

antalFag = scn.nextInt();

antalLaerere = scn.nextInt();

antalDage = scn.nextInt();

maxLektioner = scn.nextInt();

popSize = scn.nextInt();

overlevere = scn.nextInt();

maxGenerationer = scn.nextInt();

startHC = scn.nextInt();

hardVaegt = scn.nextDouble();

mellemVaegt = scn.nextDouble();

samleVaegt = scn.nextDouble();

faellesVaegt = scn.nextDouble();

mutationProcent = scn.nextDouble();

dumpFrekvens = scn.nextInt();

parameterInput.close();

timeFordeling = new int [antalKlasser] [antalFag];

fagFordeling = new int [antalKlasser] [antalFag];

faellesFag = new int [antalFag];

skemaVaegt = new double [antalDage] [maxLektioner];

arbejdsdagVaegt = new double [maxLektioner+1];

fagNavne = new String [antalFag];

klasseNavne = new String [antalKlasser];

laererNavne = new String [antalLaerere];

System.out.println(antalKlasser);

System.out.println(antalFag);

System.out.println(antalLaerere);

System.out.println( antalDage);

System.out.println(maxLektioner);

System.out.println(popSize);

System.out.println(overlevere);

System.out.println(maxGenerationer);

System.out.println(startHC);

System.out.println(hardVaegt);

System.out.println(mellemVaegt);

System.out.println(samleVaegt);

System.out.println(faellesVaegt);

System.out.println(mutationProcent);

System.out.println(dumpFrekvens);

}

catch (IOException e)

{

System.err.println(e.getMessage()+" Bruger standardværdier.");

}

if (

(antalKlasser < 1) ||

(antalFag < 1) ||

(antalLaerere < 1) ||

(antalDage < 1) ||

Page 32: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

32

(maxLektioner < 1) ||

(popSize < 1) ||

(overlevere > popSize) ||

(maxGenerationer < 0) ||

(maxGenerationer < startHC) ||

(hardVaegt < 0) ||

(mellemVaegt < 0) ||

(samleVaegt < 0) ||

(faellesVaegt < 0) ||

(mutationProcent < 0) ||

(dumpFrekvens < 0) )

{

System.err.println ("Check parametre!");

System.exit(-1);

};

try

{

timerInput = new FileReader ("timefordeling.txt");

Scanner scn = new Scanner(timerInput);

for(int i=0;i<antalKlasser;i++)

for(int j=0;j<antalFag;j++)

timeFordeling[i][j] = scn.nextInt();

timerInput.close();

}

catch (IOException e)

{

System.err.println (e.getMessage());

System.exit(-1);

}

try

{

fagInput = new FileReader ("fagfordeling.txt");

Scanner scn = new Scanner(fagInput);

for(int i=0;i<antalKlasser;i++)

for(int j=0;j<antalFag;j++)

fagFordeling[i][j] = scn.nextInt();

fagInput.close();

}

catch (IOException e)

{

System.err.println (e.getMessage());

System.exit(-1);

}

try

Page 33: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

33

{

skemaVaegtInput = new FileReader ("skemavaegt.txt");

Scanner scn = new Scanner(skemaVaegtInput);

for(int i=0;i<antalDage;i++)

for(int j=0;j<maxLektioner;j++)

skemaVaegt[i][j] = scn.nextDouble();

skemaVaegtInput.close();

}

catch (IOException e)

{

System.err.println (e.getMessage());

System.exit(-1);

}

try

{

arbejdsdagVaegtInput = new FileReader ("arbejdsdagvaegt.txt");

Scanner scn = new Scanner(arbejdsdagVaegtInput);

for(int i=0;i<(maxLektioner+1);i++)

arbejdsdagVaegt[i] = scn.nextDouble();

arbejdsdagVaegtInput.close();

}

catch (IOException e)

{

System.err.println (e.getMessage());

System.exit(-1);

}

try

{

fagNavneInput = new FileReader ("fagnavne.txt");

Scanner scn = new Scanner(fagNavneInput);

for(int i=0;i<antalFag;i++)

fagNavne[i] = scn.nextLine();

fagNavneInput.close();

}

catch (IOException e)

{

System.err.println (e.getMessage());

System.exit(-1);

}

try

{

klasseNavneInput = new FileReader ("klassenavne.txt");

Scanner scn = new Scanner(klasseNavneInput);

for(int i=0;i<antalKlasser;i++)

Page 34: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

34

klasseNavne[i] = scn.nextLine();

klasseNavneInput.close();

}

catch (IOException e)

{

System.err.println (e.getMessage());

System.exit(-1);

}

try

{

laererNavneInput = new FileReader ("laerernavne.txt");

Scanner scn = new Scanner(laererNavneInput);

for(int i=0;i<antalLaerere;i++)

laererNavne[i] = scn.nextLine();

laererNavneInput.close();

}

catch (IOException e)

{

System.err.println (e.getMessage());

System.exit(-1);

}

try

{

faellesFagInput = new FileReader ("faellesfag.txt");

Scanner scn = new Scanner(faellesFagInput);

for(int i=0;i<antalFag;i++)

faellesFag[i] = scn.nextInt();

faellesFagInput.close();

}

catch (IOException e)

{

System.err.println (e.getMessage());

System.exit(-1);

}

// Indlaesning af inputfiler slut

Population population = new Population();

// Den genetiske algoritme loop

for(int i=0;i<maxGenerationer;i++)

{

if (i>=startHC) startHCTest = 1;

Page 35: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

35

population.beregnFitness();

if ( (dumpFrekvens > 0) && (i%dumpFrekvens == 0) ) population.dumpGenom(i);

population.formering();

population.mutation();

};

population.beregnFitness();

if (dumpFrekvens > 0) population.dumpGenom(maxGenerationer);

// Slut paa loop

// Udskriv resultat paa skaerm (som evt. kan omdirigeres til en fil)

population.printSkema();

population.printFagfordeling();

};

}

// Population start

class Population

{

Genom [] genom = new Genom [GenetiskSkema.popSize];

public Population()

{

for(int i=0;i<GenetiskSkema.popSize;i++) genom[i] = new Genom();

};

public void beregnFitness()

{

double sumFitness = (double)0.0;

for(int i=0;i<GenetiskSkema.popSize;i++)

{

sumFitness += genom[i].beregnFitness();

};

for(int i=0;i<GenetiskSkema.popSize;i++)

{

GenetiskSkema.fitnessIntervaller[i] = genom[i].fitness/sumFitness;

};

Page 36: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

36

};

public void formering()

{

int overlever;

int fader;

int moder;

double udvaelg;

double fitSum;

Genom [] nytGenom = new Genom [GenetiskSkema.popSize];

for(int i=0;i<(GenetiskSkema.popSize-GenetiskSkema.overlevere);i++)

{

nytGenom[i] = new Genom();

udvaelg = (double)Math.random();

fitSum=GenetiskSkema.fitnessIntervaller[0];

fader=0;

while(fitSum<udvaelg)

{

fader++;

fitSum += GenetiskSkema.fitnessIntervaller[fader];

};

udvaelg = (double)Math.random();

fitSum=GenetiskSkema.fitnessIntervaller[0];

moder=0;

while(fitSum<udvaelg)

{

moder++;

fitSum += GenetiskSkema.fitnessIntervaller[moder];

};

nytGenom[i].reKombiner(genom[fader],genom[moder]);

};

for(int i=(GenetiskSkema.popSize-

GenetiskSkema.overlevere);i<GenetiskSkema.popSize;i++)

{

nytGenom[i] = new Genom();

udvaelg = (double)Math.random();

fitSum=GenetiskSkema.fitnessIntervaller[0];

overlever=0;

while(fitSum<udvaelg)

{

overlever++;

fitSum += GenetiskSkema.fitnessIntervaller[overlever];

};

nytGenom[i] = genom[overlever];

};

for(int i=0;i<GenetiskSkema.popSize;i++)

{

genom[i] = nytGenom[i];

};

};

Page 37: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

37

public void mutation()

{

for (int i=0;i<GenetiskSkema.popSize;i++)

{

if (Math.random()*100 < GenetiskSkema.mutationProcent) genom[i].muter();

};

};

public void printSkema()

{

double highFitness =0;

int bedste = -1;

for (int i=0;i<GenetiskSkema.popSize;i++)

{

System.out.println("Genom nummer "+i+":");

genom[i].printSkema();

};

for (int i=0;i<GenetiskSkema.popSize;i++)

{

if (genom[i].fitness > highFitness)

{

if (genom[i].antalHC == 0)

{

bedste = i;

highFitness = genom[i].fitness;

};

}

};

if (bedste == -1) for (int i=0;i<GenetiskSkema.popSize;i++)

{

if (genom[i].fitness > highFitness)

{

highFitness = genom[i].fitness;

bedste = i;

}

};

System.out.println("Bedste genom (nummer "+bedste+"):");

genom[bedste].printLaererSkema();

genom[bedste].printSkema();

};

public void printFagfordeling()

{

System.out.println("Laererfordeling paa klasser og fag:");

for (int i=0;i<GenetiskSkema.antalLaerere;i++)

{

System.out.println(GenetiskSkema.laererNavne[i]+":");

for (int j=0;j<GenetiskSkema.antalKlasser;j++)

for (int k=0;k<GenetiskSkema.antalFag;k++)

if (GenetiskSkema.fagFordeling[j][k]==i)

Page 38: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

38

System.out.println(" "+GenetiskSkema.klasseNavne[j]+" : "+

GenetiskSkema.fagNavne[k]) ;

};

};

public void dumpGenom(int generation)

{

try{

FileWriter fstream;

if (generation ==0) fstream = new FileWriter("out.txt");

else fstream = new FileWriter("out.txt", true );

BufferedWriter out = new BufferedWriter(fstream);

for (int i=0;i<GenetiskSkema.popSize;i++)

out.write(generation+" , "+i+" , "+genom[i].genStreng()+" , "

+genom[i].fitness+" , "+genom[i].antalHC+" , "+genom

[i].antalMellemtimer+"\n");

out.close();

}catch (Exception e){System.err.println("Fejl: " + e.getMessage()); }

};

};

// Population slut

// Genom start

class Genom

{

Gen [] gen = new Gen [GenetiskSkema.antalKlasser];

double fitness = 0.0;

int antalHC = 0;

int antalMellemtimer =0;

public Genom()

{

for(int i=0;i<(GenetiskSkema.antalKlasser);i++)

{

gen[i] = new Gen(i) ;

};

};

public void reKombiner(Genom fader, Genom moder)

{

int mixHC, moderHC;

Genom testHC = new Genom();

double udvaelg;

double faderChance = 0.5;

for(int i=0;i<(GenetiskSkema.antalKlasser);i++)

{

if (GenetiskSkema.startHCTest == 1)

Page 39: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

39

{

testHC = new Genom();

for(int l=0;l<(GenetiskSkema.antalKlasser);l++)

for(int j=0;j<(GenetiskSkema.antalDage);j++)

for(int k=0;k<(GenetiskSkema.maxLektioner);k++)

{

if (l==i) testHC.gen[l].skema[j][k] = moder.gen[l].skema[j][k];

else testHC.gen[l].skema[j][k] = fader.gen[l].skema[j][k];

};

moderHC = hardConstraints(moder);

mixHC = hardConstraints(testHC);

if (mixHC > moderHC) faderChance = 0.5 / Math.pow

(GenetiskSkema.hardVaegt, (mixHC-moderHC));

};

udvaelg = Math.random();

fitness = 0;

if (udvaelg < faderChance)

{

this.gen[i].klasseNummer = i;

for(int j=0;j<(GenetiskSkema.antalDage);j++)

{

for(int k=0;k<(GenetiskSkema.maxLektioner);k++)

{

this.gen[i].skema[j][k] = fader.gen[i].skema[j][k];

};

}

}

else

{

this.gen[i].klasseNummer = i;

for(int j=0;j<(GenetiskSkema.antalDage);j++)

{

for(int k=0;k<(GenetiskSkema.maxLektioner);k++)

{

this.gen[i].skema[j][k] = moder.gen[i].skema[j][k];

};

};

};

};

};

public Genom (Genom gamleGenom)

{

for(int i=0;i<(GenetiskSkema.antalKlasser);i++)

{

fitness = 0;

this.gen[i].klasseNummer = i;

for(int j=0;j<(GenetiskSkema.antalDage);j++)

for(int k=0;k<(GenetiskSkema.maxLektioner);k++)

{

this.gen[i].skema[j][k] = gamleGenom.gen[i].skema[j][k];

Page 40: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

40

};

};

};

public void muter()

{

int udpegKlasse;

int udpegDag;

int udpegLektion;

udpegKlasse = (int)(Math.random()* GenetiskSkema.antalKlasser);

udpegDag = (int)(Math.random()* GenetiskSkema.antalDage);

udpegLektion = (int)(Math.random()* GenetiskSkema.maxLektioner);

gen[udpegKlasse].muterSkema(udpegDag,udpegLektion);

};

public double beregnFitness()

{

fitness=1;

antalHC = 0 ;

antalMellemtimer = 0;

int samleTimer = 0;

int antalFaelles = 0;

for (int i=0;i<GenetiskSkema.antalKlasser;i++)

for(int j=0;j<(GenetiskSkema.antalDage);j++)

for(int k=0;k<(GenetiskSkema.maxLektioner);k++)

if (this.gen[i].skema[j][k] >= 0)

{

fitness = fitness * GenetiskSkema.skemaVaegt[j][k];

if ( (k>0) && (this.gen[i].skema[j][k] == this.gen[i].skema[j][k-1]) )

samleTimer++;

for (int l=0;l<GenetiskSkema.antalKlasser;l++)

{

if ( (l != i) && (this.gen[l].skema[j][k] >= 0)

&& (GenetiskSkema.faellesFag[this.gen[i].skema[j][k]]==1)

&& (GenetiskSkema.faellesFag[this.gen[l].skema[j][k]]==1) )

antalFaelles++;

};

};

antalHC = hardConstraints(this);

antalMellemtimer = mellemTimer(this);

if (antalHC > 0) fitness = fitness / Math.pow(GenetiskSkema.hardVaegt,antalHC);

if (antalMellemtimer > 0) fitness = fitness / Math.pow

(GenetiskSkema.mellemVaegt,antalMellemtimer);

if (samleTimer > 0) fitness = fitness * Math.pow

(GenetiskSkema.samleVaegt,samleTimer);

if (antalFaelles > 0) fitness = fitness * Math.pow

(GenetiskSkema.faellesVaegt,antalFaelles);

fitness = fitness * arbejdsDag(this);

return fitness;

};

Page 41: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

41

public int mellemTimer (Genom testGenom)

{

int antalMellemtimer =0;

int lektionPointer = -1;

for (int i=0;i<GenetiskSkema.antalKlasser;i++)

for(int j=0;j<(GenetiskSkema.antalDage);j++)

{

lektionPointer = -1;

for(int k=0;k<(GenetiskSkema.maxLektioner);k++)

{

if (testGenom.gen[i].skema[j][k] >= 0)

{

if ( (lektionPointer >= 0) && ((k-lektionPointer)>1) )

antalMellemtimer += k-lektionPointer-1;

lektionPointer = k;

};

};

};

return antalMellemtimer;

};

public int samleTimer (Genom testGenom)

{

int antal =0;

int lektionPointer = -1;

for (int i=0;i<GenetiskSkema.antalKlasser;i++)

for(int j=0;j<(GenetiskSkema.antalDage);j++)

{

lektionPointer = -1;

for(int k=0;k<(GenetiskSkema.maxLektioner);k++)

{

if (testGenom.gen[i].skema[j][k] >= 0)

{

if ( (lektionPointer >= 0) && ((k-lektionPointer)>1) )

antalMellemtimer += k-lektionPointer-1;

lektionPointer = k;

};

};

};

return antalMellemtimer;

};

public double arbejdsDag (Genom testGenom)

{

int antalLektioner =0;

double vaegt = 1;

for (int i=0;i<GenetiskSkema.antalLaerere;i++)

for(int j=0;j<(GenetiskSkema.antalDage);j++)

{

antalLektioner = 0;

for (int k=0;k<GenetiskSkema.antalKlasser;k++)

Page 42: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

42

for(int l=0;l<(GenetiskSkema.maxLektioner);l++)

if (testGenom.gen[k].skema[j][l] >= 0 &&

GenetiskSkema.fagFordeling[k][testGenom.gen[k].skema[j][l]] == i )

antalLektioner++;

if (antalLektioner > GenetiskSkema.maxLektioner) antalLektioner =

GenetiskSkema.maxLektioner;

vaegt = vaegt * GenetiskSkema.arbejdsdagVaegt[antalLektioner];

};

return vaegt;

};

public void printLaererSkema()

{

int [][] laererSkema = new int [GenetiskSkema.antalDage]

[GenetiskSkema.maxLektioner];

for (int i=0;i<GenetiskSkema.antalLaerere;i++)

{

for(int j=0;j<(GenetiskSkema.antalDage);j++)

for (int k=0;k<GenetiskSkema.maxLektioner;k++)

laererSkema[j][k] = -1;

for(int j=0;j<(GenetiskSkema.antalDage);j++)

for (int k=0;k<GenetiskSkema.antalKlasser;k++)

for(int l=0;l<(GenetiskSkema.maxLektioner);l++)

{

if (this.gen[k].skema[j][l] >= 0 &&

GenetiskSkema.fagFordeling[k][this.gen[k].skema[j][l]] == i )

laererSkema[j][l] = this.gen[k].skema[j][l];

};

System.out.println("Skema for "+GenetiskSkema.laererNavne[i]+":");

for(int j=0;j<(GenetiskSkema.maxLektioner);j++)

{

for (int k=0;k<GenetiskSkema.antalDage;k++)

{

if (laererSkema[k][j] >= 0) System.out.print(GenetiskSkema.fagNavne

[laererSkema[k][j]]+" ");

else System.out.print(" - ");

};

System.out.println();

};

System.out.println();

};

};

public int hardConstraints (Genom testGenom)

{

int laerer;

int antalSamtidige = 0;

Page 43: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

43

int hcTaeller = 0;

for (int i=0;i<GenetiskSkema.antalKlasser;i++)

for(int j=0;j<(GenetiskSkema.antalDage);j++)

for(int k=0;k<(GenetiskSkema.maxLektioner);k++)

{

if (testGenom.gen[i].skema[j][k] >= 0)

{

laerer = GenetiskSkema.fagFordeling[i][testGenom.gen[i].skema[j][k]];

antalSamtidige = 0;

for (int l=0;l<GenetiskSkema.antalKlasser;l++)

if (testGenom.gen[l].skema[j][k] >= 0)

if ( (GenetiskSkema.fagFordeling[l][testGenom.gen[l].skema[j][k]] ==

laerer)

&& (GenetiskSkema.faellesFag[testGenom.gen[l].skema[j][k]] != 1) )

antalSamtidige++;

if (antalSamtidige > 1) hcTaeller += antalSamtidige -1;

};

};

return hcTaeller / 2;

};

public void printSkema()

{

System.out.println("Fitness ="+fitness+" antal HC="+antalHC+" antal

mellemtimer="+antalMellemtimer);

for (int i=0;i<GenetiskSkema.antalKlasser;i++)

{

gen[i].printSkema();

};

};

public String genStreng()

{

String gStreng = "";

for(int i=0;i<(GenetiskSkema.antalKlasser);i++)

gStreng = gStreng + gen[i].genTilStreng();

return gStreng;

};

}

// Genom slut

// Gen start

class Gen

{

int klasseNummer;

public int [][] skema = new int [GenetiskSkema.antalDage]

[GenetiskSkema.maxLektioner] ;

public Gen(int nr)

Page 44: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

44

{

klasseNummer = nr;

for(int i=0;i<(GenetiskSkema.antalDage);i++)

for(int j=0;j<(GenetiskSkema.maxLektioner);j++)

{

skema[i][j] = -1;

};

startSkema();

}

void muterSkema (int dag, int lektion)

{

int fag;

int nyFag;

int nyDag, nyLektion;

nyDag = (int)(Math.random()* GenetiskSkema.antalDage);

nyLektion = (int)(Math.random()* GenetiskSkema.maxLektioner);

fag = skema[dag][lektion];

nyFag = skema[nyDag][nyLektion];

skema[dag][lektion] = nyFag;

skema[nyDag][nyLektion] = fag;

}

void startSkema ()

{

int dagTaeller = 0;

int lektionTaeller = 0;

for(int j=0;j<GenetiskSkema.antalFag;j++)

for(int k=0;k<GenetiskSkema.timeFordeling[klasseNummer][j];k++)

{

skema[dagTaeller][lektionTaeller] = j;

dagTaeller++;

if (dagTaeller == GenetiskSkema.antalDage)

{

dagTaeller = 0;

lektionTaeller++;

};

if (lektionTaeller > GenetiskSkema.maxLektioner)

{

System.err.println("For mange timer i skemaet");

lektionTaeller = 0;

};

};

for(int i=0;i<GenetiskSkema.antalDage;i++)

for(int j=0;j<GenetiskSkema.maxLektioner;j++)

muterSkema(i,j);

};

public void printSkema ()

{

System.out.println("Skema for "+GenetiskSkema.klasseNavne[klasseNummer]+":");

for (int i=0;i<GenetiskSkema.maxLektioner;i++)

Page 45: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

45

{

for (int j=0;j<GenetiskSkema.antalDage;j++)

if (skema[j][i] >= 0) System.out.print(GenetiskSkema.fagNavne[skema[j][i]]+" ");

else System.out.print(" - ");

System.out.println();

};

System.out.println();

};

public String genTilStreng()

{

int tegn;

String tilStreng = "";

for (int i=0;i<GenetiskSkema.antalDage;i++)

for (int j=0;j<GenetiskSkema.maxLektioner;j++)

tilStreng = tilStreng + (char)(skema[i][j]+(int)'A');

return tilStreng;

};

}

// Gen slut

Page 46: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

46

Appendiks B: Parametre og inddata

Filen parametre.txt skal indeholde følgende tal:

int antalKlasser: antal klasser / gener pr. genom

int antalFag: antal fag i alt

int antalLaerere: antal lærere i alt

int antalDage: antal skoledage pr. uge

int maxLektioner: antal lektioner pr. dag

int popSize: populationens størrelse (antal genomer)

int overlevere: antal genomer som går uændret videre til næste generation

int maxGenerationer: antal genrationer (hvor mange gange algoritmen køres)

int startHC: Fra hvilken genration rekombination bliver vægtet efter hard constraints

double hardVaegt: relativ vægt af hard constraints (neutral = 1)

double mellemVaegt: relativ vægt af mellemtimer (neutral = 1)

double samleVaegt: relativ vægt af samling af lektioner med samme fag (neutral =1)

double faellesVaegt: relativ vægt af at samle timer der kan ligge samtidigt

double mutationProcent: procent chance (0-100) for at et genom muteres

int dumpFrekvens: hvor ofte data skal dumpes i out.txt

Filen timefordeling.txt skal indeholde data for antal timer pr. fag på dette format:

fag0 i klasse 0 fag1 i klasse 0 fag2 i klasse0 …

fag0 i klasse 0 fag1 i klasse 0 fag2 i klasse0 …

For eksempel:

3 1 4 3 2 4 4 4 0 0 0 4 0 0 0 0 0 0 0 1

3 1 4 3 2 4 4 4 0 0 0 4 0 0 0 0 0 0 0 1

Som kan betyde at 1A har 3 dansktimer, 1 tysktime, 4 samfundsfagstimer o.s.v.

Filen fagfordeling.txt skal indeholde data for hvilke fag lærerne underviser i:

fag0 i klasse 0 fag1 i klasse 0 fag2 i klasse0 …

fag0 i klasse 0 fag1 i klasse 0 fag2 i klasse0 …

(som ovenfor, men tallet angiver lærerens nummer)

For eksempel:

9 7 6 15 16 11 13 14 -1 -1 -1 5 -1 -1 -1 -1 -1 -1 -1 7

16 7 6 15 16 0 3 18 -1 -1 -1 17 -1 -1 -1 -1 -1 -1 -1 7

Lærer nummer 9 har 1A til dansk, lærer nummer 7 har 1A til tysk o.s.v.

-1 angiver at klassen ikke har faget (svarende til 0 timer i timefordeling).

Filen skemavaegt.txt skal indeholde vægtene for forskellige tidspunkter på dagen:

mandag lektion 0 mandag lektion 1 mandag lektion 2 …

tirsdag lektion 0 tirsdag lektion 1 tirsdag lektion 2 …

Page 47: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

47

For eksempel

1,5 1,5 1,2 1,2 1 1 0,75 0,75 0,5 0,5

1,5 1,5 1,2 1,2 1 1 0,75 0,75 0,5 0,5

mandag 0. og 1. lektion vægtes 1,5, mandag 2. og 3. lektion vægtes 1,2 o.s.v.

(dvs. de tidlige timer foretrækkes generelt)

Filen arbejdsdagsvaegt.txt skal indeholde vægten af lærernes lektioner pr. dag:

Vægt af 0 timer (fri) vægt af 1 time vægt af 2 timer …

For eksempel

4 0,5 0,75 1 1,5 2 1,5 1 0,75 0,5 0,25

Ingen timer (fridag) vægtes 4, en enkelt time 0,5 o.s.v.

(ved at vægte 0 timer højt og lavt antal timer lavt opnås flere fridage)

Filerne fagnavne.txt, klassenavne.txt og laerernavne.txt skal indeholde hhv. navne på fag,

navne på klasser og navne på lærere (til brug ved udskrifter):

fag0

fag1

fag2

(eller tilsvarende for de andre navne)

For eksempel

dansk

tysk

samfundsf

Fag0 skal printes ud som dansk, fag1 som tysk o.s.v.

Filen faellesfag.txt skal indeholde flag for om fag skal forsøges lagt i samme tidsrum for alle

klasser der har faget (hvor det er tilladt at have den samme lærer):

fag0 (0=nej, 1= ja) fag1 (0=nej, 1=ja) ...

For eksempel

0

0

1

fag0 og fag1 følger normale regler for hard constraints, fag2 er et fællesfag

Vær opmærksom på at komma i decimaltal kan være maskinafhængigt (, eller .)

Page 48: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

48

Appendiks C: Inddata og uddata for praktisk test

Inddata for den kørsel hvor skemaerne er brugt som eksempler var :

(Af hensyn til læsbarheden er der fjernet linjeskift i nogle af filerne).

parametre.txt

8 20 19 5 10 100 50 2001 1001 4.0 1.2 1.2 4.0 20.0 50

timefordeling.txt

3 1 4 3 2 4 4 4 0 0 0 4 0 0 0 0 0 0 0 1

3 1 4 3 2 4 4 4 0 0 0 4 0 0 0 0 0 0 0 1

3 1 0 2 4 3 5 4 2 0 3 6 0 3 0 0 0 0 0 1

3 1 0 3 4 4 5 4 2 0 3 6 0 3 0 0 0 0 0 1

3 1 0 0 2 6 5 5 2 3 3 0 0 0 3 0 0 0 0 1

3 0 1 0 0 2 0 0 0 0 0 0 3 0 0 2 4 2 6 2

3 0 1 0 0 2 0 0 0 0 0 0 3 0 0 2 4 2 6 2

0 3 2 0 2 2 0 0 0 0 2 0 2 0 0 1 3 2 6 2

fagfordeling.txt

9 7 6 15 16 11 13 14 -1 -1 -1 5 -1 -1 -1 -1 -1 -1 -1 7

16 7 6 15 16 0 3 18 -1 -1 -1 17 -1 -1 -1 -1 -1 -1 -1 7

9 0 -1 15 16 11 3 14 6 -1 2 17 -1 4 -1 -1 -1 -1 -1 7

9 0 -1 14 16 12 13 18 6 -1 2 5 -1 4 -1 -1 -1 -1 -1 7

16 0 -1 -1 7 12 3 18 6 15 2 -1 -1 -1 14 -1 -1 -1 -1 7

9 -1 4 -1 -1 12 -1 -1 -1 -1 -1 -1 10 -1 -1 10 17 1 9 8

8 -1 4 -1 -1 11 -1 -1 -1 -1 -1 -1 10 -1 -1 15 4 1 11 8

-1 0 9 -1 7 12 -1 -1 -1 -1 2 -1 10 -1 -1 10 4 1 10 8

skemavaegt.txt

1,5 1,5 1,2 1,2 1 1 0,75 0,75 0,5 0,5

1,5 1,5 1,2 1,2 1 1 0,75 0,75 0,5 0,5

1,5 1,5 1,2 1,2 1 1 0,75 0,75 0,5 0,5

1,5 1,5 1,2 1,2 1 1 0,75 0,75 0,5 0,5

1,5 1,5 1,2 1,2 1 1 0,75 0,75 0,5 0,5

arbejdsdagsvaegt.txt

4 0,5 0,75 1 1,5 2 1,5 1 0,75 0,5 0,25

fagnavne.txt

dansk tysk samfundsf int. oek. fransk

engelsk virk.oek. afsaetn. samtidsh. markedsk.

psykologi matematik erhv.oek. multimed. erhv.ret

salg og s inf.tekn. livsstil laeringk. lektiecaf

klassenavne.txt

1A 1B 2A 2B 3A 1C 1D 2C

laerernavne.txt

ANH BOW CAH FHN FRR FSH HES JUA JYM KIR

LER LOK LRC MAU MOG PRO RHA SID VVE

Page 49: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

49

faellesfag

4 0,5 0,75 1 1,5 2 1,5 1 0,75 0,5 0,25

Uddata blev (kun det af programmet udvalgte bedste genom vises):

Bedste genom (nummer 0):

Skema for ANH:

engelsk - tysk - -

tysk - tysk - -

tysk - - tysk -

- - engelsk tysk -

- - engelsk - -

engelsk - - - -

- - - - -

- - - - -

- - - - -

- - - - -

Skema for BOW:

- - - - -

- - - - -

- - - - -

- - - - -

- - - - livsstil

- - - - -

- - - - -

- - - - -

- - - - livsstil

- - - - -

Skema for CAH:

psykologi psykologi - psykologi -

- psykologi - psykologi -

- psykologi - psykologi -

psykologi - - psykologi -

psykologi - - - -

psykologi - - - -

- - - - -

- - - - -

- - - - -

- - - - -

Skema for FHN:

virk.oek. - - - -

virk.oek. - - - -

virk.oek. - virk.oek. - virk.oek.

virk.oek. - virk.oek. - virk.oek.

virk.oek. - virk.oek. - -

- - virk.oek. - virk.oek.

- - virk.oek. - virk.oek.

- - - - -

- - - - -

Page 50: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

50

- - - - -

Skema for FRR:

- - - inf.tekn. -

- samfundsf multimed. inf.tekn. -

- inf.tekn. multimed. inf.tekn. -

- - inf.tekn. inf.tekn. -

- - inf.tekn. - -

- multimed. samfundsf multimed. -

- multimed. - - -

- multimed. - - -

- - - - -

- - - - -

Skema for FSH:

- matematik - - matematik

- matematik matematik - matematik

- - matematik - matematik

- - matematik - matematik

- - matematik - -

- - - - -

- - - - -

- - - - -

- - - - -

- - - - -

Skema for HES:

- - - samfundsf samfundsf

- - samtidsh. samtidsh. samfundsf

- - samtidsh. samtidsh. samfundsf

- samfundsf - samtidsh. -

- samfundsf - samfundsf samtidsh.

- samfundsf - - -

- - - - -

- - - - -

- - - - -

- - - - -

Skema for JUA:

- tysk - - fransk

- - - - fransk

- - - - -

- - - - fransk

- fransk - - tysk

- - - - -

- - - - -

- - lektiecaf - -

- - - - -

- - - - -

Skema for JYM:

- - lektiecaf - -

- - - - -

Page 51: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

51

- dansk - - -

- lektiecaf - - -

- - dansk - -

- lektiecaf dansk - -

- - - - -

- lektiecaf - - -

- - - - -

- - - - -

Skema for KIR:

- samfundsf laeringk. dansk dansk

- samfundsf - dansk dansk

dansk - - dansk dansk

laeringk. laeringk. - dansk dansk

laeringk. - - dansk -

- - - - -

- - laeringk. - -

- - laeringk. - -

- - - - -

- - - - -

Skema for LER:

erhv.oek. salg og s - - erhv.oek.

salg og s salg og s - - erhv.oek.

erhv.oek. - erhv.oek. - erhv.oek.

laeringk. - erhv.oek. - -

laeringk. - - - -

- laeringk. - - erhv.oek.

- - laeringk. - -

- laeringk. laeringk. - -

- - - - -

- - - - -

Skema for LOK:

- engelsk - - -

engelsk engelsk engelsk - -

engelsk engelsk - - -

laeringk. laeringk. - - -

laeringk. - - - -

- laeringk. engelsk - -

- - laeringk. - -

- - laeringk. - -

- - - - -

- - - - -

Skema for LRC:

engelsk engelsk - - -

engelsk engelsk engelsk - -

- engelsk engelsk - -

- engelsk - - -

- - - engelsk -

- - engelsk engelsk -

engelsk - engelsk - -

Page 52: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

52

engelsk - - - -

- - - - -

- - - - -

Skema for MAU:

virk.oek. - - - -

virk.oek. - - - -

virk.oek. - - - -

- - - virk.oek. -

virk.oek. - - virk.oek. -

- - - virk.oek. -

- - - virk.oek. -

- - - virk.oek. -

- - - - -

- - - - -

Skema for MOG:

- - erhv.ret int. oek. -

- - - afsaetn. -

erhv.ret - - afsaetn. -

erhv.ret - int. oek. - -

afsaetn. - int. oek. - -

afsaetn. - afsaetn. afsaetn. -

- - afsaetn. afsaetn. -

- - - - -

- - - - -

- - - - -

Skema for PRO:

int. oek. salg og s - - int. oek.

int. oek. int. oek. - - -

salg og s int. oek. - - -

- - - - int. oek.

markedsk. markedsk. - - int. oek.

- markedsk. - - -

int. oek. - - - -

- - - - -

- - - - -

- - - - -

Skema for RHA:

- - dansk dansk -

- - dansk dansk fransk

- - dansk - fransk

- fransk fransk - -

- fransk - fransk -

- - fransk fransk fransk

- fransk - dansk fransk

- fransk - - -

- - - - -

- - - - -

Skema for SID:

Page 53: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

53

- - matematik - -

- - inf.tekn. - matematik

- inf.tekn. inf.tekn. - matematik

- matematik inf.tekn. - matematik

- matematik matematik - matematik

- matematik - - matematik

- - - - -

- - - - -

- - - - -

- - - - -

Skema for VVE:

- - - afsaetn. -

- - - afsaetn. -

- afsaetn. - afsaetn. -

- afsaetn. - afsaetn. afsaetn.

- afsaetn. - - afsaetn.

- afsaetn. - - afsaetn.

- - - - afsaetn.

- - - - afsaetn.

- - - - -

- - - - -

Fitness =2.830166129945104E119 antal HC=0 antal mellemtimer=17

Skema for 1A:

int. oek. engelsk dansk samfundsf dansk

int. oek. engelsk matematik afsaetn. fransk

engelsk engelsk matematik afsaetn. fransk

dansk samfundsf matematik virk.oek. int. oek.

virk.oek. samfundsf matematik virk.oek. tysk

- samfundsf afsaetn. virk.oek. -

- - afsaetn. - -

- - lektiecaf - -

- - - - -

- - - - -

Skema for 1B:

engelsk tysk dansk afsaetn. samfundsf

- int. oek. dansk afsaetn. samfundsf

virk.oek. int. oek. dansk afsaetn. samfundsf

virk.oek. matematik engelsk afsaetn. virk.oek.

virk.oek. matematik engelsk samfundsf int. oek.

engelsk matematik fransk fransk matematik

- - - - -

- - lektiecaf - -

- - - - -

- - - - -

Skema for 2A:

virk.oek. psykologi matematik dansk int. oek.

virk.oek. psykologi tysk dansk matematik

dansk psykologi virk.oek. samtidsh. matematik

engelsk fransk fransk samtidsh. matematik

Page 54: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

54

afsaetn. fransk matematik fransk matematik

afsaetn. multimed. engelsk afsaetn. virk.oek.

int. oek. multimed. engelsk afsaetn. virk.oek.

- multimed. lektiecaf - -

- - - - -

- - - - -

Skema for 2B:

virk.oek. matematik tysk int. oek. matematik

virk.oek. matematik multimed. samtidsh. matematik

virk.oek. afsaetn. multimed. dansk matematik

psykologi afsaetn. int. oek. dansk matematik

psykologi afsaetn. int. oek. dansk samtidsh.

psykologi afsaetn. engelsk multimed. fransk

engelsk fransk engelsk virk.oek. fransk

engelsk fransk lektiecaf virk.oek. -

- - - - -

- - - - -

Skema for 3A:

psykologi engelsk erhv.ret dansk fransk

tysk engelsk samtidsh. dansk fransk

erhv.ret engelsk samtidsh. psykologi virk.oek.

erhv.ret engelsk virk.oek. psykologi afsaetn.

markedsk. markedsk. virk.oek. engelsk afsaetn.

- markedsk. virk.oek. engelsk afsaetn.

- - virk.oek. dansk afsaetn.

- - lektiecaf - afsaetn.

- - - - -

- - - - -

Skema for 1C:

engelsk salg og s laeringk. - erhv.oek.

engelsk salg og s inf.tekn. - dansk

erhv.oek. inf.tekn. inf.tekn. - dansk

laeringk. laeringk. inf.tekn. - dansk

laeringk. - - - livsstil

- lektiecaf samfundsf - erhv.oek.

- - laeringk. - -

- lektiecaf laeringk. - -

- - - - livsstil

- - - - -

Skema for 1D:

erhv.oek. salg og s lektiecaf inf.tekn. -

engelsk samfundsf engelsk inf.tekn. -

salg og s dansk erhv.oek. inf.tekn. -

laeringk. laeringk. erhv.oek. inf.tekn. -

laeringk. - dansk - livsstil

- laeringk. dansk - -

- - laeringk. - -

- lektiecaf laeringk. - -

- - - - livsstil

Page 55: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

55

- - - - -

Skema for 2C:

- samfundsf lektiecaf psykologi -

salg og s samfundsf engelsk psykologi erhv.oek.

tysk inf.tekn. engelsk tysk erhv.oek.

laeringk. lektiecaf inf.tekn. tysk fransk

laeringk. fransk inf.tekn. - livsstil

- laeringk. - - -

- - laeringk. - -

- laeringk. laeringk. - -

- - - - livsstil

- - - - -

Laererfordeling paa klasser og fag:

ANH:

1B : engelsk

2A : tysk

2B : tysk

3A : tysk

2C : tysk

BOW:

1C : livsstil

1D : livsstil

2C : livsstil

CAH:

2A : psykologi

2B : psykologi

3A : psykologi

2C : psykologi

FHN:

1B : virk.oek.

2A : virk.oek.

3A : virk.oek.

FRR:

2A : multimed.

2B : multimed.

1C : samfundsf

1D : samfundsf

1D : inf.tekn.

2C : inf.tekn.

FSH:

1A : matematik

2B : matematik

HES:

1A : samfundsf

1B : samfundsf

2A : samtidsh.

2B : samtidsh.

3A : samtidsh.

JUA:

1A : tysk

1A : lektiecaf

Page 56: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

56

1B : tysk

1B : lektiecaf

2A : lektiecaf

2B : lektiecaf

3A : fransk

3A : lektiecaf

2C : fransk

JYM:

1C : lektiecaf

1D : dansk

1D : lektiecaf

2C : lektiecaf

KIR:

1A : dansk

2A : dansk

2B : dansk

1C : dansk

1C : laeringk.

2C : samfundsf

LER:

1C : erhv.oek.

1C : salg og s

1D : erhv.oek.

2C : erhv.oek.

2C : salg og s

2C : laeringk.

LOK:

1A : engelsk

2A : engelsk

1D : engelsk

1D : laeringk.

LRC:

2B : engelsk

3A : engelsk

1C : engelsk

2C : engelsk

MAU:

1A : virk.oek.

2B : virk.oek.

MOG:

1A : afsaetn.

2A : afsaetn.

2B : int. oek.

3A : erhv.ret

PRO:

1A : int. oek.

1B : int. oek.

2A : int. oek.

3A : markedsk.

1D : salg og s

RHA:

1A : fransk

1B : dansk

Page 57: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

57

1B : fransk

2A : fransk

2B : fransk

3A : dansk

SID:

1B : matematik

2A : matematik

1C : inf.tekn.

VVE:

1B : afsaetn.

2B : afsaetn.

3A : afsaetn.

Programmet kørte i 296 sekunder på en 1.2 ghz Windows 2000-computer med 750 mb ram.

Page 58: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

58

Appendiks D: Inddata og uddata for test af den genetiske algoritme

Inddata for den kørsel som er nærmere analyseret var :

(Af hensyn til læsbarheden er der fjernet linjeskift i nogle af filerne).

parametre.txt

6 6 6 3 4 100 50 41 1 4 1,2 1,2 4 50 1

timefordeling.txt

5 2 2 3 0 0

4 1 6 1 0 0

2 1 1 4 1 3

1 1 2 4 3 1

0 4 0 0 0 8

0 3 1 0 8 0

fagfordeling.txt

0 1 2 3 -1 -1

0 1 2 3 -1 -1

0 1 2 3 4 5

0 1 2 3 4 5

-1 1 -1 -1 -1 5

-1 1 2 -1 4 -1

skemavaegt.txt

1,5 1,2 1 0,75

1,5 1,2 1 0,75

1,5 1,2 1 0,75

arbejdsdagsvaegt.txt

4 0,5 0,75 1 1,5 2 1,5 1 0,75 0,5 0,25

fagnavne.txt

dansk tysk engelsk fransk russisk kinesisk

klassenavne.txt

1A 1B 2A 2B 3A 3B

laerernavne.txt

Arne

Bodil

Carsten

Dorte

Erik

Freja

faellesfag

0 0 0 0 0 0

Page 59: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

59

Uddata blev (kun det af programmet udvalgte bedste genom vises):

Bedste genom (nummer 1):

Skema for Arne:

dansk dansk dansk

dansk dansk dansk

dansk dansk dansk

dansk dansk dansk

Skema for Bodil:

tysk tysk tysk

tysk tysk tysk

tysk tysk tysk

tysk tysk tysk

Skema for Carsten:

engelsk engelsk engelsk

engelsk engelsk engelsk

engelsk engelsk engelsk

engelsk engelsk engelsk

Skema for Dorte:

fransk fransk fransk

fransk fransk fransk

fransk fransk fransk

fransk fransk fransk

Skema for Erik:

russisk russisk russisk

russisk russisk russisk

russisk russisk russisk

russisk russisk russisk

Skema for Freja:

kinesisk kinesisk kinesisk

kinesisk kinesisk kinesisk

kinesisk kinesisk kinesisk

kinesisk kinesisk kinesisk

Fitness =7273302.973406416 antal HC=0 antal mellemtimer=0

Skema for 1A:

dansk engelsk dansk

tysk fransk fransk

engelsk dansk fransk

dansk dansk tysk

Skema for 1B:

fransk dansk engelsk

dansk dansk engelsk

dansk engelsk engelsk

engelsk tysk engelsk

Skema for 2A:

Page 60: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

60

kinesisk fransk fransk

engelsk tysk dansk

kinesisk fransk kinesisk

russisk fransk dansk

Skema for 2B:

engelsk russisk tysk

fransk russisk russisk

fransk kinesisk dansk

fransk engelsk fransk

Skema for 3A:

tysk kinesisk kinesisk

kinesisk kinesisk kinesisk

tysk tysk tysk

kinesisk kinesisk kinesisk

Skema for 3B:

russisk tysk russisk

russisk engelsk tysk

russisk russisk russisk

tysk russisk russisk

Laererfordeling paa klasser og fag:

Arne:

1A : dansk

1B : dansk

2A : dansk

2B : dansk

Bodil:

1A : tysk

1B : tysk

2A : tysk

2B : tysk

3A : tysk

3B : tysk

Carsten:

1A : engelsk

1B : engelsk

2A : engelsk

2B : engelsk

3B : engelsk

Dorte:

1A : fransk

1B : fransk

2A : fransk

2B : fransk

Erik:

2A : russisk

2B : russisk

3B : russisk

Freja:

2A : kinesisk

Page 61: Skemalægning med genetiske algoritmerflasch.dk/wp-content/uploads/speciale.pdf · Resume: I dette speciale præsenteres skemalægning som et data-logisk problem. Der gennemgås forskellige

Speciale i datalogi, Flemming Rasch, Institut for Kommunikation, Virksomhed og Informationsteknologier, Roskilde Universitet 2009.

61

2B : kinesisk

3A : kinesisk

Programmet kørte i 5 sekunder på en 1.2 ghz Windows 2000-computer med 750 mb ram.