Kunstmatige intelligentie
Programmeeropgave 3 van 2021 — Schaken

schaken maar De derde programmeeropgave (in het voorjaar van 2021) behorende bij het vak Kunstmatige intelligentie gaat over het twee-persoons spel Schaken. Het is de bedoeling het minimax-algoritme, en ook het alpha-beta-algoritme, te implementeren, voor een geschikte evaluatie-functie. En pure Monte Carlo search (MC; zie de eerste programmeeropgave). Kijk eerst de sheets en de bijbehorende video 1/3, video 2/3 en video 3/3.

We spelen met alleen een witte dame (of toren) en koning tegen een zwarte koning op een vierkant n bij n bord, met n tussen zeg 4 en 20. Er is voorbeeldcode [versie 17 maart 2021] beschikbaar, waarin diverse functies zitten om het spel te spelen. Lees eerst het commentaar bovenaan het programma. De uitslag van een spel is: wit wint (zet zwart mat), stalemate = pat (zwart is aan de beurt maar kan niet zetten), "simple tie" (zwart heeft de witte dame/toren geslagen), of gestopt (het duurde te lang qua aantal zetten). Wijzig in deze file in principe alleen daar waar in de code "TODO" staat. Een enkele kleine toevoeging elders is toegestaan.

We willen natuurlijk zo goed mogelijk spelen, dus zo vaak mogelijk winnen. Er moeten verschillende (member-)functies geschreven worden:

De eerder genoemde functies mogen natuurlijk worden aangevuld met meer geavanceerde technieken of heuristieken zoals: quiescence search, null-moves, transpositie-tabellen, etc. — maar dat hoeft niet. Ook stellen we interessante evaluatie-functies op prijs. Let verder op de executiesnelheid en rapporteer daarover.

Een paar opmerkingen:

Deadline: dinsdag 27 april 2021, 17:00 uur.
In te leveren: e-mail met het verslag (alleen eigen C++-code in de appendix) en C++-code. Het verslag moet aan verschillende eisen voldoen. Besteed ook kort aandacht aan de huidige kwaliteit van schaakprogramma's.


Vragen en/of opmerkingen kunnen worden gestuurd naar: aicollege@liacs.leidenuniv.nl.

16 april 2021 — http://www.leidenuniv.liacs.nl/~kosterswa/AI/schaken2021.html