Kunstmatige intelligentie
Programmeeropgave 1 van 2014 — SameGame

SameGame De eerste programmeeropgave (in het voorjaar van 2014) behorende bij het vak Kunstmatige intelligentie gaat over het eenpersoons spel SameGame. Het is de bedoeling een eenvoudig programma te schrijven dat dit spel speelt, waarbij een Monte Carlo- en een strategie-methode worden gebruikt. Voor links over dit spel: Jawbreaker / Bubble Breaker, SameGame [werkt helaas niet in nieuwe browsers] en SameGame (wiki). Het is ook in KDE/Gnome te vinden bij "Games". Er kan gebruik gemaakt worden van een stuk voorbeeld-code met een voorbeeldspel dat je eventueel kunt inladen.

SameGame gaat als volgt. Op een m bij n bord (m rijen en n kolommen, beide minstens 1) heeft ieder vakje een (in eerste instantie random) "kleur". Er zijn 5 kleuren. De speler moet een gebied aanwijzen. Een gebied bestaat uit minstens 2 vakjes met dezelfde kleur, en verder kun je vanuit één vakje uit het gebied alle andere bereiken door herhaald horizontaal en/of verticaal naburige vakjes uit het gebied te doorlopen; gebieden zijn "maximaal". Het door de speler aangewezen gebied wordt verwijderd, en de speler krijgt voor een gebied met v vakjes (v-2)2 punten. In de kolom(men) waaruit één of meer vakjes verdwijnen, vallen de erboven liggende vakjes omlaag totdat ze op overgebleven vakjes of de grond vallen. Mochten één of meer hele kolommen leeg raken, dan schuiven de kolommen hier rechts van op naar links. Het spel houdt op als er geen gebieden meer zijn. (Er zijn overigens wat verschillende varianten, bijvoorbeeld met strafpunten voor de overgebleven vakjes, maar wij spelen de hier genoemde.) De speler wil zoveel mogelijk punten scoren.

in het practicum zitten 3 verschillende AI-componenten:

Er wordt niet gevraagd om een programma dat aan alle software engineering standaards voldoet. Houd het programma dus eenvoudig — maar wel netjes!
Uiteindelijk wordt verwacht dat je in je rapport ingaat op de kwaliteit van de 3 verschillende algoritmen. Operationaliseer (zie week 2) daartoe het begrip goed en stel een goede testset van speelvelden samen. Er mag vrijelijk —met bronvermelding— gebruik gemaakt worden van de voorbeeld-code.

De resultaten moet je onder andere weergeven in een grafiek. je kan daarbij gebruik maken van gnuplot. Tips: maak een plot-file plot.gpi met daarin bijvoorbeeld
     # plot-file voor gnuplot
     set xrange [0:10]
     set yrange [17:42]
     set xlabel "iets"
     set ylabel "iets anders"
     set terminal jpeg
     # of: set terminal postscript eps enhanced color
     set output "file.jpg"
     # en dan hier: set output "file.eps"
     plot "mijnfile.txt" using 1:2 with lines notitle
en roep deze binnen gnuplot aan met load "plot.gpi".
Op internet staat alles en meer over gnuplot, bijvoorbeeld hier of [wie heeft deze geweldige site weggehaald?] daar (Wayback machine).
Voor de MS Office liefhebbers: je kunt ook een grafiek maken in Excel en dan exporteren als eps en die toevoegen aan je paper.

Deadline: dinsdag 4 maart 2014, 11:15 uur.
In te leveren tijdens college: een geprint exemplaar van het verslag gebundeld met een exemplaar van de ontvangen peer-review; geef voor de C++-code alleen de (interessante) wijzigingen op de voorbeeldcode in de Appendix.
In te leveren per mail: De C++-code van het programma naar de practicumleiding. Het verslag moet aan verschillende eisen voldoen.


Vragen en/of opmerkingen kunnen worden gestuurd naar: w.a.kosters@liacs.leidenuniv.nl.

9 januari 2014 — http://www.liacs.nl/home/kosters/AI/samegame2014.html