Die Tiny Chess-bot Challenge: Eine Herausforderung für Schach-KI-Enthusiasten

CODING PROJEKTE

11/23/20232 min read

Github Link: https://github.com/YannikBleilinger/Chess-Challenge

Cloned das Projekt gerne und schaut ob ihr meinen Schachcomputer besiegen könnt :) es fällt mir schon sehr schwer und sollte auch für geübte Spieler eine kleine Herausforderung sein.

Die Tiny Chess-Bot Challenge wurde von dem Youtuber Sebastian Lague mit diesem Video ins Leben gerufen. Dabei sollte ein möglichst starker Schachcomputer entwickelt werden, mit der Einschränkung, dass nur bis zu 1024 Text-Token und 256 Megabyte Speicher zur Verfügung stehen. Sebastian stellte der Community hierfür eine bereits entwickelte grafische Oberfläche zur Verfügung, die schon alle Regeln des Schachs implementierte und eine API inklusive Dokumentation für Entwickler. Diese stellte unter anderem Methoden wie zum Beispiel „getLegalMoves“ oder „isWhiteToMove“ bereit, die das Programmieren erleichtern sollten.

Ich orientierte mich an der aktuell stärksten Schach-KI Stockfish und nutzte den Alpha-Beta-Pruning Algorithmus, um die Suche nach dem besten Zug durchzuführen. Bei diesem Algorithmus handelt es sich um eine Variation der Mini-Max Tiefensuche, bei der alle möglichen Züge einer Seite durchgeführt werden und für jedes Ergebnis auch alle Züge der anderen Seite ausgeführt werden. Dies wiederholt sich abwechselnd für jeden Spieler, jedoch steigt die Anzahl der möglichen Züge exponentiell an und ist nach ein paar Iterationen schon nicht mehr ausrechenbar. An dieser Stelle wird die Alpha-Beta-Pruning Verbesserung zur Hand genommen, diese sucht einen Zweig nicht weiter ab, wenn das Ergebnis schlechter ist als ein schon vorher gefundenes. Das spart viel Rechenleistung, ist aber davon abhängig in welcher Reihenfolge die Züge gesucht werden. Diese Methode ist am effizientesten, wenn die guten Züge als erstes gesucht werden, weswegen man versucht die Liste aller Züge nach der Wahrscheinlichkeit, wie gut dieser sein könnte, zu sortieren. Dabei kommen Züge das Schach setzten zuerst, dann Captures und Promotion von Bauern. Des Weiteren gibt es noch viele weitere mögliche Verbesserungen für den Algorithmus, allerdings konnte ich durch das Token Limit nur noch Transposition Tabellen, Iterative Deepening implementieren. Für die Evaluation kam der Materialunterschied und eine Bewertung für die Position von Pferden und Läufern im gesamten, sowie von Bauern und Königen im End-spiel zum Einsatz.

Insgesamt war das Projekt wohl eines, woran ich am meisten Spaß gefunden habe. Ich konnte einiges über die Algorithmen-Theorie lernen und über das Benutzen von fremdem Code und APIs. Die Bewertung der Community Bots steht noch aus, wird aber hier veröffentlicht, sobald die Ergebnisse da sind.