Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

AG Schachprogrammierung FUSC# Stand: Mai 2004

Ähnliche Präsentationen


Präsentation zum Thema: "AG Schachprogrammierung FUSC# Stand: Mai 2004"—  Präsentation transkript:

1 AG Schachprogrammierung FUSC# Stand: Mai 2004
Diplomarbeitsthema d4 c4 a5 a6 30% 50% 40% 20% e4 60% FUSC#-Projektgruppe

2 Inhalt Überblick Gründung der AG Schachprogrammierung
Wie sieht das Innenleben eines Schachmotor aus ° Brettdarstellung ° Evaluation ° Algorithmen ° Mensch versus Maschine ° Eröffnungsbücher ° UCI-Protokoll weitere Projekt-Planung kurze Schachprogrammiereinführung als Basis Reinforcement Learning, was ist das KnightCap, ein erstaunliches Programm FUSC# soll auch eigenständig lernen Schachprogrammier AG Mai 2004

3 Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003 14.Juni 2003 20.September 2003 Januar 2004 Gründung der Projektgruppe C#, OpenSource Debütversion (V 1.03) Ruhesuche, Killermoves, Hashtables, Heuristiken, iterative Suche, PV Internetdebüt (V 1.06) Transparenz, Stellungsbewertung erstes offizielles Internet-Turnier erster Sieg, 7te von 8 Engines Lange Nacht der Wissenschaften (V 1.07) Klassendiagramm, Dokumentation, Experimente mit Neuronalen Netzen Fusch spielt bei schach.de (V 1.09) rating zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

4 Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003 14.Juni 2003 20.September 2003 Januar 2004 Gründung der Projektgruppe C#, OpenSource Debütversion (V 1.03) Ruhesuche, Killermoves, Hashtables, Heuristiken, iterative Suche, PV Internetdebüt (V 1.06) Transparenz, Stellungsbewertung erstes offizielles Internet-Turnier erster Sieg, 7te von 8 Engines Lange Nacht der Wissenschaften (V 1.07) Klassendiagramm, Dokumentation, Experimente mit Neuronalen Netzen Fusch spielt bei schach.de (V 1.09) rating zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

5 Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003 14.Juni 2003 20.September 2003 Januar 2004 Gründung der Projektgruppe C#, OpenSource Debütversion (V 1.03) Ruhesuche, Killermoves, Hashtables, Heuristiken, iterative Suche, PV Internetdebüt (V 1.06) Transparenz, Stellungsbewertung erstes offizielles Internet-Turnier erster Sieg, 7te von 8 Engines Lange Nacht der Wissenschaften (V 1.07) Klassendiagramm, Dokumentation, Experimente mit Neuronalen Netzen Fusch spielt bei schach.de (V 1.09) rating zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

6 Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003 14.Juni 2003 20.September 2003 Januar 2004 Gründung der Projektgruppe C#, OpenSource Debütversion (V 1.03) Ruhesuche, Killermoves, Hashtables, Heuristiken, iterative Suche, PV Internetdebüt (V 1.06) Transparenz, Stellungsbewertung erstes offizielles Internet-Turnier erster Sieg, 7te von 8 Engines Lange Nacht der Wissenschaften (V 1.07) Klassendiagramm, Dokumentation, Experimente mit Neuronalen Netzen Fusch spielt bei schach.de (V 1.09) rating zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

7 Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003 14.Juni 2003 20.September 2003 Januar 2004 Gründung der Projektgruppe C#, OpenSource Debütversion (V 1.03) Ruhesuche, Killermoves, Hashtables, Heuristiken, iterative Suche, PV Internetdebüt (V 1.06) Transparenz, Stellungsbewertung erstes offizielles Internet-Turnier erster Sieg, 7te von 8 Engines Lange Nacht der Wissenschaften (V 1.07) Klassendiagramm, Dokumentation, Experimente mit Neuronalen Netzen Fusch spielt bei schach.de (V 1.09) rating zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

8 Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003 14.Juni 2003 20.September 2003 Januar 2004 Gründung der Projektgruppe C#, OpenSource Debütversion (V 1.03) Ruhesuche, Killermoves, Hashtables, Heuristiken, iterative Suche, PV Internetdebüt (V 1.06) Transparenz, Stellungsbewertung erstes offizielles Internet-Turnier erster Sieg, 7te von 8 Engines Lange Nacht der Wissenschaften (V 1.07) Klassendiagramm, Dokumentation, Experimente mit Neuronalen Netzen Fusch spielt bei schach.de (V 1.09) rating zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

9 Gründung der AG Turnier-Tabelle: Schachprogrammier AG Mai 2004
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG Turnier-Tabelle: 1.Dauth, Benjamin  Düster, Christian  Domingo, Miguel  Lane, Robin  5.Steffen, Rico  6.Kuprat, Thomas  7.Burghardt, Michael  8.Martin, Mario  9.Trösch, Thomas  10.FUSC# V1.07  11.Kärcher, David  12.Minski, Martin  13.Rauch, Felix  14.Schaller, Peter  15.Wölter, Ulrich  16.Remmo, Abdulrahim 1300 Schachprogrammier AG Mai 2004

10 Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003 14.Juni 2003 20.September 2003 Januar 2004 Gründung der Projektgruppe C#, OpenSource Debütversion (V 1.03) Ruhesuche, Killermoves, Hashtables, Heuristiken, iterative Suche, PV Internetdebüt (V 1.06) Transparenz, Stellungsbewertung erstes offizielles Internet-Turnier erster Sieg, 7te von 8 Engines Lange Nacht der Wissenschaften (V 1.07) Klassendiagramm, Dokumentation, Experimente mit Neuronalen Netzen Fusch spielt bei schach.de (V 1.09) rating zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

11 Gründung der AG Pseudonym :) Schachprogrammier AG Mai 2004
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG Pseudonym :) Schachprogrammier AG Mai 2004

12 Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 14.Oktober 2002 1.März 2003 1.Juni 2003 11.Juni 2003 14.Juni 2003 20.September 2003 Januar 2004 Gründung der Projektgruppe C#, OpenSource Debütversion (V 1.03) Ruhesuche, Killermoves, Hashtables, Heuristiken, iterative Suche, PV Internetdebüt (V 1.06) Transparenz, Stellungsbewertung erstes offizielles Internet-Turnier erster Sieg, 7te von 8 Engines Lange Nacht der Wissenschaften (V 1.07) Klassendiagramm, Dokumentation, Experimente mit Neuronalen Netzen Fusch spielt bei schach.de (V 1.09) rating zweites offizielles Internet-Turnier buggy, 21ter von 23 Schachprogrammier AG Mai 2004

13 Gründung der AG Turnier-Tabelle: Schachprogrammier AG Mai 2004
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG Turnier-Tabelle: 1 Matheus 2.3 2 Drunken Master 1.0 3 BigLion 2.23k 4 DelphiMax 2.8 5 Asterisk 0.4b 6 Madeleine 0.2 7 Taktix 2.23k 8 WJChess 1.52 9 EnginMax 5.11c 10 KKFChess 2.6.2 11 Aice 0.64 12 Celes 0.77c 13 ChessAlex 1.2b7 14 Simontacchi 1.81a 15 Silke 16 Alfil v403.1 17 Polar Engine 1.3 18 Gaia 1.1 19 Piranha 0.5 20 Eagle 0.2.7c 21 FUSC# v1.10 22 Cassandre 0.24 23 Trex 1.8.5 Schachprogrammier AG Mai 2004

14 Projektgruppe Homepage Mitgliedschaft
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Projektgruppe Homepage Mitgliedschaft Eintragen in die Mailingliste und zu den Treffen erscheinen (kleiner Vortrag) aktive Mitglieder: Maro Bader, Andre Rauschenbach, Johannes Buchner, Andreas Gropp, Christian Düster (HU), Falko Krause, Christian Ehrlich, Ben-Fillippo Krippendorff und Marco Block Schachprogrammier AG Mai 2004

15 Projektgruppe Sourcecode http://page.mi.fu-berlin.de/~fusch/
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Projektgruppe Sourcecode - integriertes CVS - Gruppe schachs - Tutorial online Schachprogrammier AG pageant Mai 2004

16 Projektgruppe Arbeitsumgebung auf dem Maniac-Server bereitgestellt
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Projektgruppe Arbeitsumgebung auf dem Maniac-Server bereitgestellt - MS Visual Studio 2002 - .NET V1.0 Schachprogrammier AG Mai 2004

17 Schachprogrammierung
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Schachprogrammierung Brettrepräsentation Zuggenerator wn Eröffnungs- Datenbank Stellungsbewertung Material Zentrierung der Figuren offene Linien offene Diagonalen Läuferpaar Vorposten Fianchettierung Rochade Entwicklung ... Zugwahlalgorithmen ... Schachprogrammier AG Mai 2004

18 8x8 Board wn 8x8-Brettdarstellung Brettmatrix durchlaufen
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung 8x8 Board Brettrepräsentation Zuggenerator wn 8x8-Brettdarstellung -4 -2 -3 -5 -6 -1 1 4 2 3 5 6 Brettmatrix durchlaufen Figur identifizieren mögliche Zugfelder betrachten und Regelsatz befolgen wenn Zug gültig in Zugliste speichern Schachprogrammier AG Mai 2004

19 BitBoards Das Brett in Bitboard-Darstellung
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung BitBoards Das Brett in Bitboard-Darstellung #7 #6 #5 #4 #3 #2 #1 #0 Bit/Byte a8 b8 c8 d8 e8 f8 g8 h8 a7 b7 c7 d7 e7 f7 g7 h7 a6 b6 c6 d6 e6 f6 g6 h6 a5 b5 c5 d5 e5 f5 g5 h5 a4 b4 c4 d4 e4 f4 g4 h4 a3 b3 c3 d3 e3 f3 g3 h3 a2 b2 c2 d2 e2 f2 g2 h2 a1 b1 c1 d1 e1 f1 g1 h1 Idee: 64-bit-Variablen  64 Schachfelder ! „bitboards“ zur Brettdarstellung „1“ bedeutet: Feld belegt „0“ bedeutet: Feld frei für jeden Figurentyp eigenes „bitboard“ als Representation AND, OR Operationen etc. zur schnellen, quasi „parallelen“ Zuggenerierung Ausblick: potentiell mehr Schachwissen in bitboards integrieren (z.B. „Züge in die Nähe des Königs“) Schachprogrammier AG Mai 2004

20 BitBoards Konkret: Beispiel:
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung BitBoards Konkret: Idee: schon im voraus z.B. „alle möglichen Springerzüge von Feld d3“ berechnen und in einem bitboard abspeichern „Springerzüge[d3] & freieFelder“ Erweiterung: „ Springerzüge[d3] & gegnerischeFiguren“ erzeugt Schlagzüge Problem: die bitboard-Darstellung eignet sich für die „ziehenden“ Figurentypen (Dame, Turm, Läufer) nur bedingt Beispiel: Springerzüge[d3] & gegnerischeBauern & => X X Schachprogrammier AG Mai 2004

21 Rotated BitBoards Die um 90° gedrehte Brett-Darstellung
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Rotated BitBoards Die um 90° gedrehte Brett-Darstellung #7 #6 #5 #4 #3 #2 #1 #0 Bit/Byte a8 a7 a6 a5 a4 a3 a2 a1 b8 b7 b6 b5 b4 b3 b2 b1 c8 c7 c6 c5 c4 c3 c2 c1 d8 d7 d6 d5 d4 d3 d2 d1 e8 e7 e6 e5 e4 e3 e2 e1 f8 f7 f6 f5 f4 f3 f2 f1 g8 g7 g6 g5 g4 g3 g2 g1 h8 h7 h6 h5 h4 h3 h2 h1 Idee 1: für „ziehende“ Figuren alle möglichen Züge in Abhängigkeit vom Aussehen der jeweilig relevanten Linie/Diagonale schon vorher berechnen Idee 2: dafür „gedrehte“ Brettdarstellungen als „rotated bitboards“ speichern, so dass die Linie/Diagonalen dort sequentiell in einem byte vorliegen Schachprogrammier AG Mai 2004

22 Fuschboards Schachprogrammier AG Mai 2004 Gründung der AG
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Fuschboards Schachprogrammier AG Mai 2004

23 Evaluation  Stellungsbewertung
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Evaluation Stellungsbewertung Material Zentrierung der Figuren offene Linien offene Diagonalen Läuferpaar Vorposten Fianchettierung Rochade Entwicklung ... Nur eine Stellung, ohne Schach- und Schlagzüge kann positionell bewertet werden (->Ruhesuche). Faktoren werden nacheinander identifiziert, bewertet (relativ zum Wert eines Bauern) und aufsummiert. statische Faktoren - Material - Mobilität - gute/schlechte Figuren - starke/schwache Felder - Raum - Königsstellung - offene Linien/Diagonalen - Läuferpaar - Vorposten - Rochade - Bauernstruktur - Läufer gegen Springer - ... dynamische Faktoren - Entwicklung - Koordination - Figurendruck - schlechtstehende Figuren - + Schachprogrammier AG Mai 2004

24 p mn vv:l tr wq k Material  p mn vl tr wq  1.0  3.0  3.0  4.5 
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Material Material - Figurenbewertungen (weisse Figurensumme - schwarze) - verwendeten Daten von Kasparov vorgeschlagen - + Weiss Schwarz p mn vv:l tr wq k 1.0 p mn vl tr wq 7x1.0 7x1.0 3.0 2x3.0 2x3.0 2x3.0 2x3.0 3.0 2x4.5 2x4.5 4.5 1x9.0 1x9.0 9.0 37.0 37.0 0.0 Schachprogrammier AG Mai 2004

25 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mobilität Mobilität - Figuren stehen besser, wenn sie mehr Zugmöglichkeiten haben - Problem: Dame besondere Rolle Schachprogrammier AG Mai 2004

26 Bauernqualität Beispiel: Bauer Was sind die genauen Werte?
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Bauernqualität Beispiel: Bauer Was sind die genauen Werte? 2x1.0 + Weiss Schwarz 4x0.1 + 2x0.1 - 1x0.5 - 0x0.5 - 0x1.0 + 3x0.1 + 3x0.1 - 3x0.5 - 2x0.1 + 1x0.1 + 6x1.0 Freibauer + 1.0 gedeckt  0.1 isoliert - 0.5 Doppelbauer rückständig zentral + 0.1 3.6 7.4 +3.8 Schachprogrammier AG Mai 2004

27 Algorithmen Grundlagen Spielbaum: Knoten Kante ...
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Algorithmen Zugwahlalgorithmen ... Grundlagen - Spieltheorie: Schach ist Zwei-Personen-Nullsummen-Spiel - Nullsumme: „Was der eine gewinnt, verliert der andere“ - Spielbaum: Knoten = Position, Kante = möglicher Zug Spielbaum: W am Zug S am Zug Knoten Kante Schachprogrammier AG Mai 2004

28 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Brute-Force-Methode Erster Ansatz (Shannon-A-Strategie oder Brute-Force) - Alle legalen Züge einer Position verfolgen - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Bewertung an den Endpositionen (Blättern) - Positive/negative Werte: Vorteile für Weiß/Schwarz - Minimax-Idee: W wählt Zug mit maximaler Bewertung, S wählt Zug mit minimaler Bewertung (jeweils bester Zug) Schachprogrammier AG Mai 2004

29 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Brute-Force-Methode Erster Ansatz (Shannon-A-Strategie oder Brute-Force) - Alle legalen Züge einer Position verfolgen - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Bewertung an den Endpositionen (Blättern) - Positive/negative Werte: Vorteile für Weiß/Schwarz - Minimax-Idee: W wählt Zug mit maximaler Bewertung, S wählt Zug mit minimaler Bewertung (jeweils bester Zug) Schachprogrammier AG Mai 2004

30 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Brute-Force-Methode Erster Ansatz (Shannon-A-Strategie oder Brute-Force) - Alle legalen Züge einer Position verfolgen - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Bewertung an den Endpositionen (Blättern) - Positive/negative Werte: Vorteile für Weiß/Schwarz - Minimax-Idee: W wählt Zug mit maximaler Bewertung, S wählt Zug mit minimaler Bewertung (jeweils bester Zug) W am Zug S am Zug Schachprogrammier AG Mai 2004

31 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Brute-Force-Methode Erster Ansatz (Shannon-A-Strategie oder Brute-Force) - Alle legalen Züge einer Position verfolgen - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Bewertung an den Endpositionen (Blättern) - Positive/negative Werte: Vorteile für Weiß/Schwarz - Minimax-Idee: W wählt Zug mit maximaler Bewertung, S wählt Zug mit minimaler Bewertung (jeweils bester Zug) W am Zug S am Zug Schachprogrammier AG Mai 2004

32 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Brute-Force-Methode Erster Ansatz (Shannon-A-Strategie oder Brute-Force) - Alle legalen Züge einer Position verfolgen - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Bewertung an den Endpositionen (Blättern) - Positive/negative Werte: Vorteile für Weiß/Schwarz - Minimax-Idee: W wählt Zug mit maximaler Bewertung, S wählt Zug mit minimaler Bewertung (jeweils bester Zug) W am Zug S am Zug W am Zug -8 -5 3 -12 7 3 28 -4 17 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

33 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Brute-Force-Methode Erster Ansatz (Shannon-A-Strategie oder Brute-Force) - Alle legalen Züge einer Position verfolgen - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Bewertung an den Endpositionen (Blättern) - Positive/negative Werte: Vorteile für Weiß/Schwarz - Minimax-Idee: W wählt Zug mit maximaler Bewertung, S wählt Zug mit minimaler Bewertung (jeweils bester Zug) W am Zug S am Zug W am Zug -8 -5 3 -12 7 3 28 -4 17 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

34 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Brute-Force-Methode Erster Ansatz (Shannon-A-Strategie oder Brute-Force) - Alle legalen Züge einer Position verfolgen - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Bewertung an den Endpositionen (Blättern) - Positive/negative Werte: Vorteile für Weiß/Schwarz - Minimax-Idee: W wählt Zug mit maximaler Bewertung, S wählt Zug mit minimaler Bewertung (jeweils bester Zug) W am Zug S am Zug -8 W am Zug -8 -5 3 -12 7 3 28 -4 17 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

35 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Brute-Force-Methode Erster Ansatz (Shannon-A-Strategie oder Brute-Force) - Alle legalen Züge einer Position verfolgen - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Bewertung an den Endpositionen (Blättern) - Positive/negative Werte: Vorteile für Weiß/Schwarz - Minimax-Idee: W wählt Zug mit maximaler Bewertung, S wählt Zug mit minimaler Bewertung (jeweils bester Zug) W am Zug S am Zug -8 -12 -4 W am Zug -8 -5 3 -12 7 3 28 -4 17 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

36 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Brute-Force-Methode Erster Ansatz (Shannon-A-Strategie oder Brute-Force) - Alle legalen Züge einer Position verfolgen - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Bewertung an den Endpositionen (Blättern) - Positive/negative Werte: Vorteile für Weiß/Schwarz - Minimax-Idee: W wählt Zug mit maximaler Bewertung, S wählt Zug mit minimaler Bewertung (jeweils bester Zug) Jede Partei spielt immer den für sich besten Zug. W am Zug -4 S am Zug -8 -12 -4 W am Zug -8 -5 3 -12 7 3 28 -4 17 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

37 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe Schachprogrammier AG Mai 2004

38 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe Schachprogrammier AG Mai 2004

39 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe Schachprogrammier AG Mai 2004

40 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe Schachprogrammier AG Mai 2004

41 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe Schachprogrammier AG Mai 2004

42 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe Schachprogrammier AG Mai 2004

43 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe W am Zug S am Zug Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

44 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe [ MinWert , MaxWert ] W am Zug S am Zug -8 W am Zug -8 -5 3 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

45 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe [ MinWert , MaxWert ] W am Zug Alpha = - 8 S am Zug -8 W am Zug -8 -5 3 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

46 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe [ - 8 , MaxWert ] W am Zug Alpha = - 8 S am Zug -8 W am Zug -8 -5 3 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

47 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe [ - 8 , MaxWert ] W am Zug Alpha = - 8 S am Zug -8 W am Zug -8 -5 3 -12 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

48 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe [ - 8 , MaxWert ] W am Zug Alpha = - 8 S am Zug -8 -12 < - 8 ! W am Zug -8 -5 3 -12 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

49 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe [ - 8 , MaxWert ] W am Zug Alpha = - 8 S am Zug -8 -12 < - 8 ! -9 W am Zug -8 -5 3 -12 28 17 -9 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

50 Alpha-Beta-Algorithmus
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Alpha-Beta-Algorithmus Verbesserung (Alpha-Beta) - Problem: bei geringer Suchtiefe enorm große Knotenzahl (z.B. bei Suchtiefe 5 etwa 102 Mill. Knoten zu durchlaufen) - #innere Knoten << #Blätter (Bewertungsroutine nötig!) - deutliche Verbesserung: Alpha-Beta-Algorithmus - Idee: Erzeugung aller Stellungen nicht notwendig - Abschneiden von bestimmten unwichtigen Ästen des Baums - Alpha/Beta sind minimale/maximale Werte einer Tiefe [ - 8 , MaxWert ] W am Zug -8 Alpha = - 8 S am Zug -8 -12 < - 8 ! -9 W am Zug -8 -5 3 -12 28 17 -9 Bewertungsroutine an den Blättern Schachprogrammier AG Mai 2004

51 Zugsortierung Weitere Verbesserung (Zugsortierung)
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Zugsortierung Weitere Verbesserung (Zugsortierung) - Komplexität von Alpha-Beta + schlechtester Fall: Baum gleich wie Brute-Force (n Positionen) + bester Fall: nur noch √n Positionen zu berechnen - Bester Fall: beste Züge jeweils immer zuerst berechnen - Deshalb: Zugsortierung von immenser Bedeutung - Ideen zur Zugsortierung: + iterative Suche + Hauptvariante + Transpositions-, Killerzug- bzw. Historytabelle Schachprogrammier AG Mai 2004

52 Zugsortierung Weitere Verbesserung (Zugsortierung)
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Zugsortierung Weitere Verbesserung (Zugsortierung) - Komplexität von Alpha-Beta + schlechtester Fall: Baum gleich wie Brute-Force (n Positionen) + bester Fall: nur noch √n Positionen zu berechnen - Bester Fall: beste Züge jeweils immer zuerst berechnen - Deshalb: Zugsortierung von immenser Bedeutung - Ideen zur Zugsortierung: + iterative Suche + Hauptvariante + Transpositions-, Killerzug- bzw. Historytabelle Schachprogrammier AG Mai 2004

53 Zugsortierung Weitere Verbesserung (Zugsortierung)
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Zugsortierung Weitere Verbesserung (Zugsortierung) - Komplexität von Alpha-Beta + schlechtester Fall: Baum gleich wie Brute-Force (n Positionen) + bester Fall: nur noch √n Positionen zu berechnen - Bester Fall: beste Züge jeweils immer zuerst berechnen - Deshalb: Zugsortierung von immenser Bedeutung - Ideen zur Zugsortierung: + iterative Suche + Hauptvariante + Transpositions-, Killerzug- bzw. Historytabelle Schachprogrammier AG Mai 2004

54 Zugsortierung Weitere Verbesserung (Zugsortierung) -8 -5 3 -4 28 17 28
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Zugsortierung Weitere Verbesserung (Zugsortierung) - Komplexität von Alpha-Beta + schlechtester Fall: Baum gleich wie Brute-Force (n Positionen) + bester Fall: nur noch √n Positionen zu berechnen - Bester Fall: beste Züge jeweils immer zuerst berechnen - Deshalb: Zugsortierung von immenser Bedeutung - Ideen zur Zugsortierung: + iterative Suche + Hauptvariante + Transpositions-, Killerzug- bzw. Historytabelle -8 -5 3 -4 28 17 Schlechter Fall: 28 -4 17 -8 Bester Fall: < - 4 ! Schachprogrammier AG Mai 2004

55 Zugsortierung Weitere Verbesserung (Zugsortierung) -8 -5 3 -4 28 17 28
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Zugsortierung Weitere Verbesserung (Zugsortierung) - Komplexität von Alpha-Beta + schlechtester Fall: Baum gleich wie Brute-Force (n Positionen) + bester Fall: nur noch √n Positionen zu berechnen - Bester Fall: beste Züge jeweils immer zuerst berechnen - Deshalb: Zugsortierung von immenser Bedeutung - Ideen zur Zugsortierung: + iterative Suche + Hauptvariante + Transpositions-, Killerzug- bzw. Historytabelle -8 -5 3 -4 28 17 Schlechter Fall: 28 -4 17 -8 -5 3 Bester Fall: < - 4 ! Schachprogrammier AG Mai 2004

56 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren Voraussagendes Abschneiden (Forward Pruning) - bisherige Verfahren -> Ergebnis wie Brute-Force - Jetzt: Heuristiken suchen, die Züge / Äste abschneiden - Problem: gute Zügen können übersehen werden - Gute Heuristik: Kleines Risiko  hoher Gewinn (weniger Knoten) - Erster Ansatz: Shannon-B-Strategie + Vorauswahl auf sinnvolle Züge in jeder Ebene + forcierte Varianten so tief wie möglich verfolgen + keine Bewertung bei möglichen Schlagzügen - Vorauswahl auf einige der möglichen Züge (wie der Mensch) schwierig, aber Sortierung sinnvoll (Alpha-Beta-Verfahren) - Zweite Idee nennt sich Ruhesuche: + Bewertung nicht stabil (z.B. nächster Zug verliert die Dame) + Ruchesuche ist normale Suche, aber nur Schlagzüge betrachtet + #Schlagzüge << #aller Züge (degeneriert nicht zu Suche!) Schachprogrammier AG Mai 2004

57 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren Voraussagendes Abschneiden (Forward Pruning) - bisherige Verfahren -> Ergebnis wie Brute-Force - Jetzt: Heuristiken suchen, die Züge / Äste abschneiden - Problem: gute Zügen können übersehen werden - Gute Heuristik: Kleines Risiko  hoher Gewinn (weniger Knoten) - Erster Ansatz: Shannon-B-Strategie + Vorauswahl auf sinnvolle Züge in jeder Ebene + forcierte Varianten so tief wie möglich verfolgen + keine Bewertung bei möglichen Schlagzügen - Vorauswahl auf einige der möglichen Züge (wie der Mensch) schwierig, aber Sortierung sinnvoll (Alpha-Beta-Verfahren) - Zweite Idee nennt sich Ruhesuche: + Bewertung nicht stabil (z.B. nächster Zug verliert die Dame) + Ruchesuche ist normale Suche, aber nur Schlagzüge betrachtet + #Schlagzüge << #aller Züge (degeneriert nicht zu Suche!) Schachprogrammier AG Mai 2004

58 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren Voraussagendes Abschneiden (Forward Pruning) - bisherige Verfahren -> Ergebnis wie Brute-Force - Jetzt: Heuristiken suchen, die Züge / Äste abschneiden - Problem: gute Zügen können übersehen werden - Gute Heuristik: Kleines Risiko  hoher Gewinn (weniger Knoten) - Erster Ansatz: Shannon-B-Strategie + Vorauswahl auf sinnvolle Züge in jeder Ebene + forcierte Varianten so tief wie möglich verfolgen + keine Bewertung bei möglichen Schlagzügen - Vorauswahl auf einige der möglichen Züge (wie der Mensch) schwierig, aber Sortierung sinnvoll (Alpha-Beta-Verfahren) - Zweite Idee nennt sich Ruhesuche: + Bewertung nicht stabil (z.B. nächster Zug verliert die Dame) + Ruchesuche ist normale Suche, aber nur Schlagzüge betrachtet + #Schlagzüge << #aller Züge (degeneriert nicht zu Suche!) Schachprogrammier AG Mai 2004

59 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren Voraussagendes Abschneiden (Forward Pruning) - bisherige Verfahren -> Ergebnis wie Brute-Force - Jetzt: Heuristiken suchen, die Züge / Äste abschneiden - Problem: gute Zügen können übersehen werden - Gute Heuristik: Kleines Risiko  hoher Gewinn (weniger Knoten) - Erster Ansatz: Shannon-B-Strategie + Vorauswahl auf sinnvolle Züge in jeder Ebene + forcierte Varianten so tief wie möglich verfolgen + keine Bewertung bei möglichen Schlagzügen - Vorauswahl auf einige der möglichen Züge (wie der Mensch) schwierig, aber Sortierung sinnvoll (Alpha-Beta-Verfahren) - Zweite Idee nennt sich Ruhesuche: + Bewertung nicht stabil (z.B. nächster Zug verliert die Dame) + Ruchesuche ist normale Suche, aber nur Schlagzüge betrachtet + #Schlagzüge << #aller Züge (degeneriert nicht zu Suche!) Schachprogrammier AG Mai 2004

60 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren Voraussagendes Abschneiden (Forward Pruning) - bisherige Verfahren -> Ergebnis wie Brute-Force - Jetzt: Heuristiken suchen, die Züge / Äste abschneiden - Problem: gute Zügen können übersehen werden - Gute Heuristik: Kleines Risiko  hoher Gewinn (weniger Knoten) - Erster Ansatz: Shannon-B-Strategie + Vorauswahl auf sinnvolle Züge in jeder Ebene + forcierte Varianten so tief wie möglich verfolgen + keine Bewertung bei möglichen Schlagzügen - Vorauswahl auf einige der möglichen Züge (wie der Mensch) schwierig, aber Sortierung sinnvoll (Alpha-Beta-Verfahren) - Zweite Idee nennt sich Ruhesuche: + Bewertung nicht stabil (z.B. nächster Zug verliert die Dame) + Ruchesuche ist normale Suche, aber nur Schlagzüge betrachtet + #Schlagzüge << #aller Züge (degeneriert nicht zu Suche!) Schachprogrammier AG Mai 2004

61 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren Voraussagendes Abschneiden (Forward Pruning) - bisherige Verfahren -> Ergebnis wie Brute-Force - Jetzt: Heuristiken suchen, die Züge / Äste abschneiden - Problem: gute Zügen können übersehen werden - Gute Heuristik: Kleines Risiko  hoher Gewinn (weniger Knoten) - Erster Ansatz: Shannon-B-Strategie + Vorauswahl auf sinnvolle Züge in jeder Ebene + forcierte Varianten so tief wie möglich verfolgen + keine Bewertung bei möglichen Schlagzügen - Vorauswahl auf einige der möglichen Züge (wie der Mensch) schwierig, aber Sortierung sinnvoll (Alpha-Beta-Verfahren) - Zweite Idee nennt sich Ruhesuche: + Bewertung nicht stabil (z.B. nächster Zug verliert die Dame) + Ruchesuche ist normale Suche, aber nur Schlagzüge betrachtet + #Schlagzüge << #aller Züge (degeneriert nicht zu Suche!) Schachprogrammier AG Mai 2004

62 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren Voraussagendes Abschneiden (Forward Pruning) - bisherige Verfahren -> Ergebnis wie Brute-Force - Jetzt: Heuristiken suchen, die Züge / Äste abschneiden - Problem: gute Zügen können übersehen werden - Gute Heuristik: Kleines Risiko  hoher Gewinn (weniger Knoten) - Erster Ansatz: Shannon-B-Strategie + Vorauswahl auf sinnvolle Züge in jeder Ebene + forcierte Varianten so tief wie möglich verfolgen + keine Bewertung bei möglichen Schlagzügen - Vorauswahl auf einige der möglichen Züge (wie der Mensch) schwierig, aber Sortierung sinnvoll (Alpha-Beta-Verfahren) - Zweite Idee nennt sich Ruhesuche: + Bewertung nicht stabil (z.B. nächster Zug verliert die Dame) + Ruchesuche ist normale Suche, aber nur Schlagzüge betrachtet + #Schlagzüge << #aller Züge (degeneriert nicht zu Suche!) Schachprogrammier AG Mai 2004

63 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren Voraussagendes Abschneiden (Forward Pruning) - bisherige Verfahren -> Ergebnis wie Brute-Force - Jetzt: Heuristiken suchen, die Züge / Äste abschneiden - Problem: gute Zügen können übersehen werden - Gute Heuristik: Kleines Risiko  hoher Gewinn (weniger Knoten) - Erster Ansatz: Shannon-B-Strategie + Vorauswahl auf sinnvolle Züge in jeder Ebene + forcierte Varianten so tief wie möglich verfolgen + keine Bewertung bei möglichen Schlagzügen - Vorauswahl auf einige der möglichen Züge (wie der Mensch) schwierig, aber Sortierung sinnvoll (Alpha-Beta-Verfahren) - Zweite Idee nennt sich Ruhesuche: + Bewertung nicht stabil (z.B. nächster Zug verliert die Dame) + Ruchesuche ist normale Suche, aber nur Schlagzüge betrachtet + #Schlagzüge << #aller Züge (degeneriert nicht zu Suche!) Schachprogrammier AG Mai 2004

64 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren Ruhesuche Schachprogrammier AG Mai 2004

65 Nullmove-Pruning „Nichts-Tun“-Strategie
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Nullmove-Pruning „Nichts-Tun“-Strategie - Mächtiges selektives Werkzeug ist Nullzug-Heuristik - Idee: Vor normalen Zügen wird ein Nullzug ausgeführt - Gegner macht so zwei Züge hintereinander (großer Vorteil) - Schlechte Züge sind damit schnell widerlegbar, da trotz doppeltem Zug nicht bester Zug (außerhalb des Fensters) - Selektivität, da nicht volle Suchtiefe bei Nullzug (z.B. t-2) - Nullzüge dürfen nicht gemacht werden, wenn: + Zugzwang-Stellungen (selten: Zugrecht unvorteilhaft) + Zwei Nullzüge hintereinander (Situation vor Nullzug gleich) + Position ist im Schach (Gegner könnte König schlagen) - Ergebnis: Programm kann bis zu 2 Halbzüge tiefer rechnen!! Schachprogrammier AG Mai 2004

66 Nullmove-Pruning „Nichts-Tun“-Strategie
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Nullmove-Pruning „Nichts-Tun“-Strategie - Mächtiges selektives Werkzeug ist Nullzug-Heuristik - Idee: Vor normalen Zügen wird ein Nullzug ausgeführt - Gegner macht so zwei Züge hintereinander (großer Vorteil) - Schlechte Züge sind damit schnell widerlegbar, da trotz doppeltem Zug nicht bester Zug (außerhalb des Fensters) - Selektivität, da nicht volle Suchtiefe bei Nullzug (z.B. t-2) - Nullzüge dürfen nicht gemacht werden, wenn: + Zugzwang-Stellungen (selten: Zugrecht unvorteilhaft) + Zwei Nullzüge hintereinander (Situation vor Nullzug gleich) + Position ist im Schach (Gegner könnte König schlagen) - Ergebnis: Programm kann bis zu 2 Halbzüge tiefer rechnen!! Schachprogrammier AG Mai 2004

67 Nullmove-Pruning „Nichts-Tun“-Strategie
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Nullmove-Pruning „Nichts-Tun“-Strategie - Mächtiges selektives Werkzeug ist Nullzug-Heuristik - Idee: Vor normalen Zügen wird ein Nullzug ausgeführt - Gegner macht so zwei Züge hintereinander (großer Vorteil) - Schlechte Züge sind damit schnell widerlegbar, da trotz doppeltem Zug nicht bester Zug (außerhalb des Fensters) - Selektivität, da nicht volle Suchtiefe bei Nullzug (z.B. t-2) - Nullzüge dürfen nicht gemacht werden, wenn: + Zugzwang-Stellungen (selten: Zugrecht unvorteilhaft) + Zwei Nullzüge hintereinander (Situation vor Nullzug gleich) + Position ist im Schach (Gegner könnte König schlagen) - Ergebnis: Programm kann bis zu 2 Halbzüge tiefer rechnen!! Schachprogrammier AG Mai 2004

68 Nullmove-Pruning „Nichts-Tun“-Strategie
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Nullmove-Pruning „Nichts-Tun“-Strategie - Mächtiges selektives Werkzeug ist Nullzug-Heuristik - Idee: Vor normalen Zügen wird ein Nullzug ausgeführt - Gegner macht so zwei Züge hintereinander (großer Vorteil) - Schlechte Züge sind damit schnell widerlegbar, da trotz doppeltem Zug nicht bester Zug (außerhalb des Fensters) - Selektivität, da nicht volle Suchtiefe bei Nullzug (z.B. t-2) - Nullzüge dürfen nicht gemacht werden, wenn: + Zugzwang-Stellungen (selten: Zugrecht unvorteilhaft) + Zwei Nullzüge hintereinander (Situation vor Nullzug gleich) + Position ist im Schach (Gegner könnte König schlagen) - Ergebnis: Programm kann bis zu 2 Halbzüge tiefer rechnen!! Schachprogrammier AG Mai 2004

69 Nullmove-Pruning „Nichts-Tun“-Strategie
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Nullmove-Pruning „Nichts-Tun“-Strategie - Mächtiges selektives Werkzeug ist Nullzug-Heuristik - Idee: Vor normalen Zügen wird ein Nullzug ausgeführt - Gegner macht so zwei Züge hintereinander (großer Vorteil) - Schlechte Züge sind damit schnell widerlegbar, da trotz doppeltem Zug nicht bester Zug (außerhalb des Fensters) - Selektivität, da nicht volle Suchtiefe bei Nullzug (z.B. t-2) - Nullzüge dürfen nicht gemacht werden, wenn: + Zugzwang-Stellungen (selten: Zugrecht unvorteilhaft) + Zwei Nullzüge hintereinander (Situation vor Nullzug gleich) + Position ist im Schach (Gegner könnte König schlagen) - Ergebnis: Programm kann bis zu 2 Halbzüge tiefer rechnen!! Schachprogrammier AG Mai 2004

70 Nullmove-Pruning „Nichts-Tun“-Strategie
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Nullmove-Pruning „Nichts-Tun“-Strategie - Mächtiges selektives Werkzeug ist Nullzug-Heuristik - Idee: Vor normalen Zügen wird ein Nullzug ausgeführt - Gegner macht so zwei Züge hintereinander (großer Vorteil) - Schlechte Züge sind damit schnell widerlegbar, da trotz doppeltem Zug nicht bester Zug (außerhalb des Fensters) - Selektivität, da nicht volle Suchtiefe bei Nullzug (z.B. t-2) - Nullzüge dürfen nicht gemacht werden, wenn: + Zugzwang-Stellungen (selten: Zugrecht unvorteilhaft) + Zwei Nullzüge hintereinander (Situation vor Nullzug gleich) + Position ist im Schach (Gegner könnte König schlagen) - Ergebnis: Programm kann bis zu 2 Halbzüge tiefer rechnen!! Schachprogrammier AG Mai 2004

71 Nullmove-Pruning „Nichts-Tun“-Strategie
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Nullmove-Pruning „Nichts-Tun“-Strategie - Mächtiges selektives Werkzeug ist Nullzug-Heuristik - Idee: Vor normalen Zügen wird ein Nullzug ausgeführt - Gegner macht so zwei Züge hintereinander (großer Vorteil) - Schlechte Züge sind damit schnell widerlegbar, da trotz doppeltem Zug nicht bester Zug (außerhalb des Fensters) - Selektivität, da nicht volle Suchtiefe bei Nullzug (z.B. t-2) - Nullzüge dürfen nicht gemacht werden, wenn: + Zugzwang-Stellungen (selten: Zugrecht unvorteilhaft) + Zwei Nullzüge hintereinander (Situation vor Nullzug gleich) + Position ist im Schach (Gegner könnte König schlagen) - Ergebnis: Programm kann bis zu 2 Halbzüge tiefer rechnen!! Schachprogrammier AG Mai 2004

72 Nullmove-Pruning „Nichts-Tun“-Strategie
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Nullmove-Pruning „Nichts-Tun“-Strategie - Mächtiges selektives Werkzeug ist Nullzug-Heuristik - Idee: Vor normalen Zügen wird ein Nullzug ausgeführt - Gegner macht so zwei Züge hintereinander (großer Vorteil) - Schlechte Züge sind damit schnell widerlegbar, da trotz doppeltem Zug nicht bester Zug (außerhalb des Fensters) - Selektivität, da nicht volle Suchtiefe bei Nullzug (z.B. t-2) - Nullzüge dürfen nicht gemacht werden, wenn: + Zugzwang-Stellungen (selten: Zugrecht unvorteilhaft) + Zwei Nullzüge hintereinander (Situation vor Nullzug gleich) + Position ist im Schach (Gegner könnte König schlagen) - Ergebnis: Programm kann bis zu 2 Halbzüge tiefer rechnen!! Schachprogrammier AG Mai 2004

73 Selektivite Verfahren
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Selektivite Verfahren „Nichts-Tun“-Strategie Schachprogrammier AG Mai 2004

74 FUSC#-Algorithmen Algorithmen in FUSC# (aktueller Stand)
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung FUSC#-Algorithmen Algorithmen in FUSC# (aktueller Stand) - iterative Alpha-Beta-Suche - Zugsortierung via Hauptvariante, Killertabelle und Historytabelle (Experimente mit verschiedenen Parametern) - Verschiedene Varianten von Transpositionstabellen - Selektivität: Ruhesuche, „Razoring“ - Nullzug-Heuristik mit verschiedenen Parametern Algorithmen in FUSC# (in Planung) - Verbesserung der Sortierung („Zugbewertung“) - Andere Heuristiken zur „Verschlankung“ des Baumes - Langfristig: Umsetzung eines Plans im Schach Schachprogrammier AG Mai 2004

75 Gewinnstrategien im Schach
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mensch versus Maschine Gewinnstrategien im Schach Warten auf Fehler des Gegners Plan fassen Schachprogrammier AG Mai 2004

76 Mensch versus Maschine
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mensch versus Maschine Plan im Schach - Unterschied zwischen Hobby- und Vereinsspieler - Unterschied Taktik und Strategie Kombinationen langfristige Planung des Spielverlaufes Schachprogrammier AG Mai 2004

77 Mensch versus Maschine
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mensch versus Maschine Allgemeine Pläne - generelle Pläne - Flügel vs Zentrum - Unterschiedliche Rochaden - ... - spezielle /kurzfristige Pläne - Bauernschwächen ausnutzen - Figuren besser stellen - „schlechte“ Figuren abtauschen - ... Schachprogrammier AG Mai 2004

78 Mensch versus Maschine
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mensch versus Maschine Beispiele spezieller Plan genereller Plan Schachprogrammier AG Mai 2004

79 Wie erstellt man einen Plan
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mensch versus Maschine Wie erstellt man einen Plan Beurteilung der Stellung Eigenarten (Schwächen/Stärken) Mögliche Pläne erfassen Entscheidung für einen Plan Schachprogrammier AG Mai 2004

80 Brute-Force vs Intuition
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mensch versus Maschine Brute-Force vs Intuition Computer Mensch + keine taktischen Fehler im Berechnungshorizont - begrenzter Horizont - Figuren werden bestmöglich positioniert + Intuition und Erfahrung + Selektive Suche + keinen beschränkten Horizont - macht Fehler - Konzentration Schachprogrammier AG Mai 2004

81 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Eröffnungsbücher EröffnungsDatenbank Schachwissen aus mindestens 1500 Jahren steht zur Verfügung. e4 d4 c4 e5 c5 e6 statisch Ziel ist eine evolutionäre Eröffnungsdatenbank. Pfade werden aktualisiert, das Programm „lernt“ schlechte, bzw. gut Wege. e4 d4 c4 e5 c5 e6 a5 a6 70% 30% 50% 90% 40% 20% dynamisch Schachprogrammier AG Mai 2004

82 Eröffnungsbücher FUSC#-EvoBook ZIEL: verteiltes FUSC#-EvoBook
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Eröffnungsbücher EröffnungsDatenbank FUSC#-EvoBook - bla Idee: Hashtabelle bla bla bla ZIEL: verteiltes FUSC#-EvoBook - bla Idee: Hashtabelle bla bla bla Schachprogrammier AG Mai 2004

83 UCI/WinBoard Schachmotor UCI-Protokoll -> Kommunikation mit GUI
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung UCI/WinBoard UCI-Protokoll -> Kommunikation mit GUI Konsole Schachmotor Fritzoberfläche Schachprogrammier AG Mai 2004

84 UCI/WinBoard UCI-Protokoll (Beispiel) Schachprogrammier AG Mai 2004
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung UCI/WinBoard UCI-Protokoll (Beispiel) uci id name Shredder 5 id author Stefan MK option name Hash type spin default 1 min 1 max 128 option name NalimovPath type string name c:\ option name NalimovCache type spin default 1 min 1 max 32 option name Nullmove type check default true option name Style type combo default Normal var Solid var Normal var Risky uciok setoption name Hash value 32 setoption name NalimovCache value 1 setoption name NalimovPath value d:\tb;c\tb isready readyok position startpos moves e2e4 e7e5 go infinite info depth 1 seldepth 0 info score cp 13 depth 1 nodes 13 time 15 pv f1b5 info depth 2 seldepth 2 info nps 15937 info score cp 14 depth 2 nodes 255 time 15 pv f1c4 f8c5 info depth 2 seldepth 7 nodes 255 info depth 3 seldepth 7 info nps 26437 info score cp 20 depth 3 nodes 423 time 15 pv f1c4 g8f6 b1c3 info nps 41562 .... stop bestmove g1f3 ponder d8f6 Schachprogrammier AG Mai 2004

85 Forschungsideen DarkFUSC# neue Engine Stellungsklassifikation
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Forschungsideen DarkFUSC# neue Engine Stellungsklassifikation n-dimensionaler Raum, Planvorgabe Der Plan im Schach Züge, die strategischen Plänen entsprechen, werden höher bewertet Einsatz von Neuronalen Netzen Zugvorhersage, Planvorgabe, Stellungsbewertung Reinforcement Learning Anpassung des Evaluationsvektors, Erlernen der Pläne FUSCH goes to Linux/Handy Portierung nach Linux mit mono ... Schachprogrammier AG Mai 2004

86 Forschungsideen Reinforcement Learning
Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Forschungsideen Reinforcement Learning Anpassung des Evaluationsvektors Schachprogrammier AG Mai 2004

87 Ende vielen Dank fürs zuhören ... Schachprogrammier AG Mai 2004

88 Hilfsfolie Schachprogrammier AG Mai 2004 Gründung der AG
Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Hilfsfolie Schachprogrammier AG Mai 2004


Herunterladen ppt "AG Schachprogrammierung FUSC# Stand: Mai 2004"

Ähnliche Präsentationen


Google-Anzeigen