13
8/2/2019 Eternity II benaderen met een Genetisch Algoritme http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 1/13 Capita Selecta Artifici¨ ele Intelligentie: Eindverslag opdracht 3 Willem Van Onsem Jonas Vanthornhout 27 maart 2012

Eternity II benaderen met een Genetisch Algoritme

Embed Size (px)

Citation preview

Page 1: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 1/13

Capita Selecta Artificiele Intelligentie:

Eindverslag opdracht 3

Willem Van Onsem

Jonas Vanthornhout

27 maart 2012

Page 2: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 2/13

Inhoudsopgave

1 Inleiding 1

2 Oplossingsstrategie 2

2.1 Overzicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 Evaluatiefunctie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.3 Greedy Algoritmen . . . . . . . . . . . . . . . . . . . . . . . . . . 32.4 Opbouwen van een populatie . . . . . . . . . . . . . . . . . . . . 32.5 Recombinatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.5.1 Methode 1: Gestructureerde heropbouw . . . . . . . . . . 42.5.2 Methode 2: Probabilistische heropbouw . . . . . . . . . . 4

2.6 Herstelalgoritmes . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.6.1 Methode 1: Naıef Herstel . . . . . . . . . . . . . . . . . . 6

2.6.2 Methode 2: Intelligent Herstel . . . . . . . . . . . . . . . 62.7 Shaking Algoritmes . . . . . . . . . . . . . . . . . . . . . . . . . . 62.8 Random restart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Resultaten 7

3.1 Populatiegrootte . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Evoluties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.3 Shaking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.4 Stopconditie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.5 Statistieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4 Besluit 8

1 Inleiding

De Eternity II  puzzel is een edge-matching puzzel die bestaat uit 256 puzzelstuk-ken die op een 16×16-bord moeten geplaatst worden. Elk puzzelstuk bestaat uitvier driehoeken in een van de 23 kleuren. De grijze kleur wordt enkel gebruiktaan de rand, wat de puzzelstukken ook onderverdeeld in drie categorie en:

1. Rand: met 1 grijze driehoek.

2. Hoek: met twee grijze driehoeken.

3. Midden: zonder grijze driehoeken.

Het is de bedoeling dat voor elk stuk de kleur van de driehoeken overeenkomt

met de driehoek van de naburige stukken waarmee ze een rand gemeen hebben.

In dit eindverslag stellen we een genetisch algoritme voor – ge ımplementeerdin Mono – die probeert een puzzel op te bouwen uit de beschikbare puzzel-stukken, en hierbij zoveel mogelijk conform de regels van de puzzel probeert tewerken.

In het verleden is door Munoz reeds een poging ondernomen om met behulpvan genetische algoritmes tot een oplossing te komen. In [1] slaagt Munoz erinom een puzzel op te bouwen met 371 correcte overgangen. Ons objectief is ombeter te doen.

1

Page 3: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 3/13

Initieel Bord Greedy Populatie

Recombinatie

Evaluatiefunctie

Herstel

Shaking

Random Restart

Figuur 1: Overzicht van het genetisch algoritme.

2 Oplossingsstrategie

2.1 Overzicht

De oplossingstrategie is een genetisch algoritme met verschillende componentenwaaronder: een evaluatiefunctie, greedy algoritmen, recombinatie, herstelalgo-ritmen, shaking en random restart. Voor elk van deze componenten werdenverschillende algoritmen geımplementeerd die we in de volgende subsecties zul-len toelichten.

2.2 Evaluatiefunctie

In de meeste papers wordt als evaluatiefunctie het aantal correcte overgangen1

gebruikt. Deze evaluatiefunctie is logisch vermits men uiteindelijk tracht eenpuzzel te bouwen waarbij alle overgangen correct zijn. Een probleem treed ech-ter op wanneer de puzzel een toestand bereikt met weinig incorrecte overgangen.In de meeste gevallen betekent dit dat de puzzel een suboptimale configuratieheeft bereikt, maar waarschijnlijk is puzzel ergens fundamenteel fout gegroeid.Hierdoor blijft het omvormen van die puzzel naar de oplossing een niet trivi-aal probleem. We kunnen ons dus de vraag stellen of dit criterium voldoendeexpressiviteit heeft om een puzzel in ontwikkeling te beoordelen.

Daarom stellen we een andere evaluatiefunctie voor. Het idee achter dezeevaluatiefunctie is dat een bord dat opgelost is, bestaat uit subborden die ookallemaal opgelost zijn. Concreet vertalen we dit in het berekenen van de som

van het aantal correcte subvierkanten. Een subvierkant is een vierkant waarbijalle overgangen in het vierkant2 correct zijn, verder heeft het vierkant minstenseen grootte van 2 × 2. Het evaluatiecriterium berekent vervolgens de som vande oppervlakte van alle vierkanten.

1Een correcte overgang definieren we als de driehoeken van twee aanliggende puzzelstukken

die dezelfde kleur hebben. De randen van het bord worden niet meegeteld. Er zijn dus

2 · 15 · 16 = 480 overgangen.2Een eventueel b eter criterium zou zijn om rechthoeken te gebruiken. Het probleem is

echter dat het vinden van rechthoeken een minder triviaal probleem is.

2

Page 4: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 4/13

a0,0

a1,0

a2,0

a3,0

a4,0

a5,0

a0,1

a1,1

a2,1

a3,1

a4,1

a5,1

a0,2

a1,2

a2,2

a3,2

a4,2

a5,2

a0,3

a1,3

a2,3

a3,3

a4,3

a5,3

a0,4

a1,4

a2,4

a3,4

a4,4

a5,4

a0,5

a1,5

a2,5

a3,5

a4,5

a5,5

a1,1

a2,1

a3,1

a5,1

a1,2

a2,2

a3,2

a5,2

a1,3

a2,3

a3,3

a5,3

a1,5

a2,5

a3,5

a5,5

a1,0

a0,1

a2,0

a0,2

a3,0

a0,3

a5,0

a0,5

a1,4

a4,1

a2,4

a4,2

a3,4

a4,3

a5,4

a4,5

a0,4

a4,0 a

0,0

a4,4

rotatie= r1

rotatie= r2

Figuur 2: Greedy algoritme in werking.

We hopen dat met dit criterium we telkens grotere aaneensluitende opper-vlaktes zullen genereren. Naarmate de oppervlakte van een subvierkant stijgtwordt de kans dat dit vierkant wel degelijk deel uitmaakt van de oplossing gro-ter. We kunnen immers met de puzzelstukken meer correcte vierkanten van2× 2 bouwen dan 8 × 8.

2.3 Greedy Algoritmen

Een techniek die continu in ons genetisch algoritme wordt gebruikt is greedy.Greedy helpt ons bij het optimaliseren van borden na bijvoorbeeld een recombi-

natiestap. We hebben het greedy-algoritme op twee niveaus geımplementeerd:op niveau van vierkanten en op het niveau van individuele puzzelstukken.

Het algoritme werkt op basis van een swap-operatie. We itereren over elkpuzzelstuk op het bord en matchen vervolgens dit stuk met ieder ander stuk ophet bord. We bekijken of we door de twee stukken van plaats te verwisselen (eneventueel de stukken te draaien) tot meer correcte overgangen kunnen komen.We bekijken voor elk stuk welk ander stuk de meest optimale swap-operatieoplevert. We houden hierbij wel rekening met de aard van het puzzelstuk: eenrand-stuk kan enkel gewisseld worden met een rand-stuk, een hoek met een hoek,en een stuk uit het midden met een ander stuk uit het midden. Indien dit toteen verbetering leidt voeren we deze operatie uit. Dit resulteert in een algoritme

die inO

n

4werkt. Deze operatie is niet goedkoop, maar levert meestal weleen aanzienelijke verbetering van het bord op.

Hetzelfde principe hanteren we op het niveau van vierkanten. We beschouwenhierbij alleen twee vierkanten indien ze even groot zijn, en geen gemeenschap-pelijke regio’s bevatten. Verder wordt ook de rotatie niet beschouwd.

2.4 Opbouwen van een populatie

Een sleutelconcept bij genetische algoritmen is de populatie. Deze bouwen weinitieel op door een bord te construeren op basis van toeval, waarbij we wel

3

Page 5: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 5/13

rekening houden met de aard van de puzzelstukken (rand, hoek, midden). Ver-

volgens passen we op dit bord het greedy-algoritme toe. Dit levert ons eeninitieel indivu op. Uit dit individu genereren we vervolgens nieuwe borden doormet behulp van toeval vierkanten volledig om te wisselen, en op dit bord opnieuween greedy algoritme toe te passen. Merk op dat het greedy-algoritme ertoe kanleiden dat geen enkel stuk op het bord meer op zijn orginele plaats staat. Indie zin zijn dus heel wat mogelijke borden mogelijk. Anderzijds willen we bijeen random-restart toch een vorm van kennis over de reeds bestaande bordenoverdragen. Immers alle individuele stukken dooreen schudden leidt meestal totzeer slechte borden waarmee we het probleem aanvangen.

Indien het algoritme merkt dat er weinig vooruitgang in de oplossing zit zalhet op verschillende manieren proberen om een nieuwe vorm van creativiteit teintroduceren. Zo kan het probabilistische reproductie-algoritme in de meestegevallen tot relatief nieuwe borden leiden. Anderzijds maken we ook van boven-staande techniek gebruik.

2.5 Recombinatie

2.5.1 Methode 1: Gestructureerde heropbouw

Zoals in elk genetisch algoritme recombineren we bepaalde individuen uit depopulatie tot een nieuwe populatie. Dit doen we door alle borden te schrappendie een te kleine score hebben. Deze score wordt bepaald door de hierbovenbeschreven evaluatiefunctie. Daarna sorteren we onze populatie volgens dezelfdescore. We overlopen dan de gesorteerde populatie, van elk bord zoeken we hetbord dat er het meest mee verschilt. Deze twee borden recombineren we danmet elkaar. We doen dit op de volgende manier. Van elk bord nemen wede vierkanten, vervolgens sorteren we deze vierkanten volgens grootte. Danproberen we de vierkanten samen op een bord te plaatsen, we beginnen eerst bijde grootste vierkanten. Dit zorgt ervoor dat we grote rechthoeken of vierkantenkrijgen. Hier hebben we natuurlijk het probleem dat de twee vierkanten volledigverschillend moeten zijn. Daarom wordt het moeilijker en moeilijker om grotevierkanten op het bord te plaatsen.

2.5.2 Methode 2: Probabilistische heropbouw

De eerste methode leidt doorgaans tot de beste resultaten. Een groot nadeelis echter dat dergelijke methode soms tot een suboptimale oplossing komt, en

daarna geen verdere optimalisaties meer vindt. Dit komt vooral door het vrijdeterministische karakter van de methode. Op het moment dat de populatietot een bepaalde configuratie komt, heeft de logica achter de recombinatie geenantwoorden meer en blijven we in het suboptimum steken.

Daarom werd een tweede methode ontwikkeld die meer toeval introduceertin de hoop om te kunnen onstnappen uit suboptimale situaties. De methodewerkt met behulp van een kans-raster. Dit raster stelt de kans pi,j voor dat eenbepaald puzzelstuk uit bord A wordt genomen. De kans dat het puzzelstuk uitbord B wordt genomen is uiteraard gelijk aan 1− pi,j . We overlopen de plaatsen

4

Page 6: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 6/13

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

a0,0 b0,0

a1,0 b1,0

a2,0 b2,0

a3,0 b3,0

a4,0 b4,0

a5,0 b5,0

a0,1 b0,1

a1,1 b1,1

a2,1 b2,1

a3,1 b3,1

a4,1 b4,1

a5,1 b5,1

a0,2 b0,2

a1,2 b1,2

a2,2 b2,2

a3,2 b3,2

a4,2 b4,2

a5,2 b5,2

a0,3 b0,3

a1,3 b1,3

a2,3 b2,3

a3,3 b3,3

a4,3 b4,3

a5,3 b5,3

a0,4 b0,4

a1,4 b1,4

a2,4 b2,4

a3,4 b3,4

a4,4 b4,4

a5,4 b5,4

a0,5 b0,5

a1,5 b1,5

a2,5 b2,5

a3,5 b3,5

a4,5 b4,5

a5,5 b5,5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.5

0.8

0.8

0.8

0.8

0.8

0.8

0.8

0.8

0.8

Figuur 3: Concept van probabilistische recombinatie.

op het bord dat we invullen in willekeurige volgorde. Indien we co ordinaat (i, j)kiezen, kunnen er drie situaties optreden:

1. De puzzelstukken van beide ouders op die coordinaat staan al ergens in depuzzel: in dat geval laten we de coordinaat open en roepen we later hetherstelalgoritme op.

2. Een van de ouders heeft een stuk die al gebruikt is: in dat geval levert de

andere ouder het stuk.

3. Beide ouders bezitten een stuk die we kunnen gebruiken: in dat gevalkiezen we met een kans pi,j voor ouder A.

Indien we een stuk toevoegen aan het bord zullen we ook het kansbord aanpas-sen. De kans is immers groot dat vanuit die coordinaat er een vierkant begintbij de ouder. We zullen in dat geval de kansen in het kansen-raster aanpassenten voordele van deze ouder. Stel dus dat A voor (2, 9) het puzzelstuk levert,en bij A bestaat er een vierkant (2, 9, 6, 13). Dan zullen we de kansen in hetkansenraster ∀ pi,j met i = 2 . . . 6 en j = 9 . . . 13 aanpassen. Hierdoor proberenwe de blokstructuren te behouden van de ouders. Anderszijds wordt dit nietafgedwongen en introduceren we een kans dat er nieuwe vierkanten ontstaan.

2.6 Herstelalgoritmes

Bij de verschillende algoritmes zullen we in de meeste gevallen borden opbouwendie niet correct zijn: ze bevatten stukken verschillende malen, corrupte stukken3,sommige borden bevatten lege velden en sommige stukken zijn dan weer nietaanwezig in de puzzel. Een bord ontdoen van deze fouten doen we met behulpvan twee algoritmes die we in de volgende subsubsecties uitleggen.

3Puzzelstukken die niet in de opgegeven lijst van beschikbare stukken staan.

5

Page 7: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 7/13

2.6.1 Methode 1: Naıef Herstel

Een eenvoudige methode itereert tweemaal over de volledige coordinatenruimte.In een eerste iteratie heeft het algoritme een HashSet met de beschikbare puz-zelstukken. Puzzelstukken die niet bestaan, of die we al eens zijn tegengekomenworden opgeruimd en vervangen door een leeg veld in de puzzel. Bovendienwordt hun coordinaat bijgehouden op een Stack.

In de tweede iteratie vullen we de puzzelstukken die nog in de HashSet aan-wezig zijn in op de beschikbare plaatsen. Dit doen we naar willekeur. We makenhet algoritme iets intelligenter door de stukken wel te plaatsen volgens de aardvan het stuk (rand, hoek en binnen) en ze zo optimaal mogelijk te roteren (methet maximaal aantal overgangen).

Het is aangewezen om na deze methode een Greedy-algoritme uit te voerenop de puzzel om de indelig grondig te verbeteren.

2.6.2 Methode 2: Intelligent Herstel

Ook het intelligente algoritme werkt in twee tijden. In de eerste iteratie ruimenwe ook de corrupte puzzelstukken op en houden hun locatie bij. In de tweedeiteratie zullen we echter proberen om de puzzelstukken zo optimaal mogelijktoe te wijzen. Dit doen we door eerst het aantal beperkingen per leeg veldte tellen. Dit zijn het aantal buur-velden waar een puzzelstuk ligt. Op basishiervan sorteren we de velden zodat velden waarbij alle vier de buren bepaaldzijn eerst een puzzelstuk toegewezen krijgen. Dit doen we in de hoop dat doorhierop een puzzelstuk te leggen de andere velden meer in keuze beperkt wordenen we ook daar dus een betere keuze kunnen maken. Indien een opzoekoperatiein de HashSet in O (1) gebeurt werkt dit algoritme bij een n × n puzzel inO

n2

.

Vervolgens zullen we voor elk veld doorheen de volledige HashSet van nogbeschikbare puzzelstukken itereren. We zoeken een stuk die in staat is aan zoveelmogelijk beperkingen te voldoen. Vervolgens plaatsen we dit stuk op het bordmet de meest optimale rotatie. Door dit stuk op het bord te plaatsen zullen deburen extra beperkingen krijgen. We implementeren dan ook een algoritme diede volgorde van de posities aanpast met betrekking tot het aantal beperkingenin O (1). Het totale algoritme heeft een tijdscomplexiteit van O

n4

bij een

n× n-bord.

2.7 Shaking Algoritmes

Een veelvoorkomend probleem is dat we vastlopen op een lokaal maximum.Dit willen we natuurlijk vermijden, daarom wordt soms het bord door elkaargeschud, dit noemen we een shaking. Het is natuurlijk niet gewenst dat weconstant het bord door elkaar zitten te schudden, om deze reden laten we deshaking parameter4 stijgen wanneer er na een aantal generaties geen nieuwetopscores zijn. Wanneer er dan later opnieuw een topscores komt, wordt de

4Dit is kans dat we een shaking doorvoeren.

6

Page 8: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 8/13

shaking parameter gereset. De shaking zelf gebeurt als volgt: er wordt een wil-

lekeurig geheel getal gekozen uit het interval [2, 5]. dit is het aantal willekeurigeverplaatsingen die zullen gebeuren. Voor elke verplaatsing kiezen we dan 2 wil-lekeurige coordinaten. Nu is het wel zo dat we geen stukjes die op een hoekof rand liggen zullen verplaatsen. Wanneer deze 2 coordinaten beschikbaar zijnwisselen we de stukjes op deze coordinaten uit.

2.8 Random restart

Wanneer een populatie stopt met evolueren5 kunnen we gewoon een nieuwepopulatie starten. Dit heeft als nadeel dat we informatie die we in de vorigepopulatie gevonden hebben wegsmijten. Daarom onthouden we de laatste gene-ratie van de populatie en gebruiken we deze indviduen om achteraf een nieuwepopulatie met deze individuen te maken. Het idee hierachter is dat verschil-

lende populaties het probleem op verschillende manieren zullen aanpakken endus andere structuren proberen te vormen. Als we deze verschillende aanpakkencombineren kunnen we misschien nog meer leren dan wat de aparte populatiesal wisten.

3 Resultaten

We hebben als doelstelling de bekomen resultaten van [1] te verbeteren. In dezepaper werd er namelijk maar een maximale score van 371 op 480 bekomen. Onzetopscore is 437 op 480 zoals te zien op figuur 4. We hebben dus duidelijk onzedoelstelling bereikt. In ons algoritme zitten een aantal parameters die de scorekunnen beınvloeden. We zullen ze daarom kort apart bespreken.

3.1 Populatiegrootte

Aangezien het genetisch gedeelte van het algoritme een positieve terugkoppelingis, is het goed om te starten met een relatief goed populatie. De kans dat westarten met een goede populatie is evenredig met de grootte van de populatie.Hierbij dient wel de opmerking gemaakt te worden dat grote populaties veeltijd nodig hebben om gemaakt te worden. Zo duurt het al snel 25000s om eenpopulatie van 25000 individuen te maken 6. Gelukkig wordt na verloop van tijdde populatie kleiner wat het algoritme duidelijk versnelt.

3.2 Evoluties

Met een evolutie bedoelen we het omvormen van een populatie naar een nieuwepopulatie die (hopelijk) beter is, dit kan vele generaties duren. Wanneer wemeerdere evoluties beschouwen kunnen we alle eindpopulaties van elke evolutiesamennemen en met deze populatie een nieuwe evolutie starten. Deze laatsteevolutie levert vaak hoge scores op maar bijna nooit hogere scores dan de scoresdie op conventionele wijze bereikt worden. Het voordeel is dat het geen durestap is want de startpopulatie is veel kleiner dan de normale startpopulatie.

5Dit kan komen doordat er een bepaalde tijdslimiet overschreden is of omdat we denken

dat de populatie geen topscore meer zal neerzetten.6Dit is getest op een computer met Ubunt 10.04, een Intel i5-2400 cpu, 4GiB RAM geheugen

en het Mono 2.8 framework

7

Page 9: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 9/13

3.3 Shaking

Als het algoritme vastzit op een lokaal maximum is het handig om wat randompuzzelstukken te verplaatsten zodat het bord verder geoptimaliseerd kan wor-den. Een voor de hand liggende manier is de shaking parameter systematischte verhogen. Dit is dus het omgekeerd als wat gedaan wordt in simulated an-nealing. Wanneer er dan een beter bord geproduceerd wordt, verlaagt dezeparameter dan opnieuw. Als de shaking parameter heel hoog opgelopen zien weeigenlijk een nieuwe populatie aan het maken. Dit kan er dus voor zorgen dathet algoritme als het ware vastloopt.

3.4 Stopconditie

Aangezien een populatie eigenlijk nooit volledig uitsterft, hebben een stopcon-

ditie nodig. Een goede stopconditie zou bijvoorbeeld zijn: “we stoppen metevolueren wanneer de volgende evoluties geen betere borden meer zullen pro-duceren”. Aangezien dit informatie uit de toekomst verwacht, moeten we hetprobleem op een andere manier aanpakken. Zo hebben we gekozen voor “alsde populatie x keer eenzelfde gemiddelde score heeft, stoppen we met evolue-ren”. Deze stopconditie heeft eeen enorme impact op de bekomen resultaten.Wanneer x te laag is, zal het algoritme er heel snel de brui aan geven. Als x

te hoog is, zal de shaking parameter veel invloed hebben en zal het algoritmequasi nooit stoppen. Daarom werd het algoritme ook nog begrensd op tijd enop maximale score (namelijk 480).

3.5 Statistieken

Op figuur 5 beschrijven we de initiele populatie waar voorlopig enkel de swapoperatie is uitgevoerd. Dit is met een populatie van 15000 borden. Op figuur6 hebben we reeds het greedy-algoritme op de borden toegepast en zien weongeveer een gemiddelde verbetering van 110. Op figuur 7 passen we het eerstedeel van de recombinatiestap toe, deze grafiek toont aan hoeveel de populatiegemiddelde verbeterd is. We zien dat er dus momenten zijn dat de populatieverslechtert. Op figuur 8 passen we dan het tweede deel van de recombinatiestaptoe, dit is het greedy-algoritme. Deze grafiek toont opnieuw de gemiddeldeverbetering. Tenslotte staat op figuur 9 de eindpopulatie.

4 Besluit

Onze bedoeling was om een genetisch algoritme te maken dat beter presteert dande gekende genetische algoritmen voor de Eternity II puzzel. Met een maximalescore van 433 (tegenover een maximale score van 371 in [1]) kunnen we besluitendat we geslaagd zijn in onze opzet. Volgens ons zit er nog meer potentieelin het door ons ontwikkelde algoritme. Zo beperkten we ons tot vierkanten.Het algoritme zou uitgebreid kunnen worden naar andere structuren waarmeewellicht een nog hogere score mogelijk is.

8

Page 10: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 10/13

Figuur 4: Een bord met 437 correcte overgangen.

9

Page 11: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 11/13

Figuur 5: De statistieken na de initiele swap operaties.

Figuur 6: De statistieken na de initiele purify operaties.

10

Page 12: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 12/13

Figuur 7: De gemiddelde winst na een evolve operatie.

Figuur 8: De gemiddelde winst na een purify operatie.

11

Page 13: Eternity II benaderen met een Genetisch Algoritme

8/2/2019 Eternity II benaderen met een Genetisch Algoritme

http://slidepdf.com/reader/full/eternity-ii-benaderen-met-een-genetisch-algoritme 13/13

Figuur 9: De finale resultaten. De x-as is beperkt tot het interval [320, 400]voor de leesbaarheid, buiten die interval is de functiewaarde gelijk aan 0.

Referenties

[1] Jorge Munoz, German Gutierrez, and Araceli Sanchıs. Evolutionary GeneticAlgorithms in a Constraint Satisfaction Problem: Puzzle Eternity II. In

Joan Cabestany, Francisco Sandoval Hernndez, Alberto Prieto, and Juan M.Corchado, editors, IWANN (1), volume 5517 of  Lecture Notes in Computer Science, pages 720–727. Springer, 2009.

12