Schach-Engine
Dies ist eine einfache Schach-Engine, gegen die Sie spielen können. Die verwendeten Algorithmen sind MiniMax und Monte Carlo Tree Search. Der Schwierigkeitsgrad wird durch den gewählten KI-Gegner bestimmt, der auch während eines Spiels gewechselt werden kann.
Verfügbare KI-Gegner
- Zufällig: Wählt immer einen zufälligen Zug und spielt schlechter als jeder Spieler.
- Minimax 2: Wählt den stärksten Zug und schaut nur einen Zug im Voraus.
- Anfänger: Verwendet meist Minimax 2, macht aber manchmal zufällige Züge (wie ein Anfänger).
- Minimax 3 / Minimax 4 / Minimax 5: Schaut 3 bis 5 Züge im Voraus. Diese Schwierigkeitsgrade können einen neuen bis mittlerer Spieler schlagen.
- Minimax Auto: Spielt wie Minimax 5, sieht aber im Endspiel einen Zug weiter.
- MCTS 1s / MCTS 3s / MCTS 6s / MCTS 10s: Führt Monte Carlo Tree Search durch, die nach 1-10 Sekunden abgebrochen wird.
MiniMax-Algorithmus
Der verwendete Algorithmus ist der MiniMax-Algorithmus, ein beliebter Backtracking-Algorithmus in der Spieltheorie und künstlichen Intelligenz. Er bewertet jede Position des Spiels als eine Zahl, die angibt, wie vorteilhaft sie für jeden Spieler ist.
Die geschätzte Anzahl möglicher Schachstellungen liegt bei etwa 10^40, was das vollständige
Lösen eines Schachspiels nicht praktikabel macht. Um die Komplexität zu reduzieren, wird Alpha-Beta-Pruning
verwendet, das es ermöglicht, Züge abzubrechen, die nicht zu einem optimalen Ergebnis führen.
Bewertung der Position
Jeder Zustand des Schachbretts muss als eine einzelne Fließkommazahl dargestellt werden, die die Stärke beider Spieler berücksichtigt. Dies geschieht durch Berücksichtigung des Materialvorteils und des Positionsvorteils der Figuren auf dem Brett.
Eigenheiten des Algorithmus
- Robustheit der Zugreihenfolge: Die Zugreihenfolge kann die Effizienz des Alpha-Beta-Prunings beeinflussen.
- Horizont-Effekt: Einige unerwünschte Ereignisse können verzögert werden, was dazu führt, dass der Algorithmus diese nicht realisiert.
- Priorisierung von Schachmatt: Schachmatt-Zustände erhalten Sonderwerte, um sicherzustellen, dass sie immer priorisiert werden.
Monte Carlo Tree Search
MCTS kombiniert Baum-Suche und zufällige Simulation, um effizient den Suchraum zu erkunden. Die Phasen von MCTS sind:
- Auswahl: Der am besten bewertete Nachfolger wird ausgewählt, bis ein Knoten ohne weitere Kinder erreicht wird.
- Erweiterung: Für diesen Knoten werden Kinder für alle legalen Züge erstellt.
- Rollout: Ein Spiel wird simuliert, indem beide Spieler zufällige Züge machen.
- Backpropagation: Die Ergebnisse der Simulation werden an alle Elternknoten weitergegeben.
Benutzeroberfläche
Die Benutzeroberfläche zeigt ein Schachbrett, auf dem Figuren durch Klicken verschoben werden können. Der Benutzer kann das Spiel starten, indem er einen Zug für Weiß ausführt, woraufhin die KI für Schwarz reagiert.
Unten befinden sich Steuerelemente für die KI. Hier kann der Typ der KI gewählt werden.
Quellcode und Demo
Der Quellcode der Schach-Engine ist auf GitHub verfügbar.
Sie können die Engine auch direkt hier ausprobieren.