De derde programmeeropgave behorende bij het vak Kunstmatige intelligentie gaat over het spel Tablut. Hierin strijden twee legers tegen elkaar op een rechthoekig 9×9 bord. Het witte leger probeert zijn koning te laten ontsnappen door hem naar de rand van het bord te bewegen. Het zwarte leger probeert de witte koning te slaan. Alle stukken bewegen zoals de toren in schaken. Het slaan van stukken gaat volgens het zogenaamde custodial capture principe. Kijk allereerst hier voor een uitgebreide beschrijving van de spelregels. En speel een spelletje. Voor een korte presentatie, en een programma voor het werkcollege van 29 maart 2016, zie hier.
Het is de bedoeling een zoekalgoritme te schrijven dat, gegeven een
spelconfiguratie, een zo goed mogelijke zet vindt. We gebruiken
hiervoor twee varianten van het minimax algoritme:
negamax en alpha-beta pruning binnen
iterative deepening.
Gebruik het Tablut framework
(versie februari 2014) van de website. Binnen het framework moeten
tenminste drie functies worden geschreven:
De eerder genoemde functies mogen eventueel ook worden aangevuld met meer geavanceerde technieken of heuristieken zoals: quiescence search, null-move pruning, transposition tables, etc. Ook stellen we interessante evaluatiefuncties op prijs (let op de executiesnelheid).
Met het referee programma kunnen twee programma's tegen
elkaar spelen. Om tussentijds een idee te krijgen hoe goed je
programma is, kan je (vanaf een NUWD computer) in de map
/vol/share/groups/liacs/scratch/2016Tablut/ executables plaatsen
en dus jouw programma tegen een programma van een collega te laten
spelen.
Na de deadline zal er een competitie worden gehouden tussen alle
ingeleverde programma's.
Het is ook mogelijk je eigen programma ./engine tegen Sigtyr (van de website)
te laten spelen (vanaf een NUWD computer).
Bijvoorbeeld:
./referee -b './engine -d 7 -t 5000' -w '/vol/share/groups/liacs/scratch/2016Tablut/sigtyr -d 11 -t 5000'
Hierbij staat -b/w voor de speler (wit/zwart),
-d voor de maximale zoekdiepte en -t
voor de maximale rekentijd per zet, in millisecondes.
Let op de quotes.
Deadline: dinsdag 19 april 2016
In te leveren: een geprint exemplaar van het verslag tijdens
het college, en de C++-code van het programma naar onderstaand adres.
Het verslag moet aan verschillende
eisen voldoen.
Hartelijk dank: Jonathan Vis.
Vragen en/of opmerkingen kunnen worden gestuurd naar:
w.a.kosters@liacs.leidenuniv.nl.
22 maart 2016 — http://www.leidenuniv.liacs.nl/~kosterswa/AI/tablut2016.html