Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

AG Schachprogrammierung FUSC# Stand: Mai 2004 FUSC#-Projektgruppe d4c4 a5a6 30%50% 40%20% e4 60%

Ähnliche Präsentationen


Präsentation zum Thema: "AG Schachprogrammierung FUSC# Stand: Mai 2004 FUSC#-Projektgruppe d4c4 a5a6 30%50% 40%20% e4 60%"—  Präsentation transkript:

1 AG Schachprogrammierung FUSC# Stand: Mai 2004 FUSC#-Projektgruppe d4c4 a5a6 30%50% 40%20% e4 60%

2 Schachprogrammier AG 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 Mai 2004

3 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 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 Oktober März Juni Juni Juni September 2003 Januar 2004 Mai 2004

4 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 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 Oktober März Juni Juni Juni September 2003 Januar 2004 Mai 2004

5 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 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 Oktober März Juni Juni Juni September 2003 Januar 2004 Mai 2004

6 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 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 Oktober März Juni Juni Juni September 2003 Januar 2004 Mai 2004

7 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 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 Oktober März Juni Juni Juni September 2003 Januar 2004 Mai 2004

8 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 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 Oktober März Juni Juni Juni September 2003 Januar 2004 Mai 2004

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

10 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 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 Oktober März Juni Juni Juni September 2003 Januar 2004 Mai 2004

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

12 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Gründung der AG 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 Oktober März Juni Juni Juni September 2003 Januar 2004 Mai 2004

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

14 Schachprogrammier AG 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 Mai 2004

15 Schachprogrammier AG 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 Mai 2004 pageant

16 Schachprogrammier AG 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 NET V1.0 Mai 2004

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

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

19 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung BitBoards 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) #7#6#5#4#3#2#1#0Bit/Byte a8b8c8d8e8f8g8h8#7 a7b7c7d7e7f7g7h7#6 a6b6c6d6e6f6g6h6#5 a5b5c5d5e5f5g5h5#4 a4b4c4d4e4f4g4h4#3 a3b3c3d3e3f3g3h3#2 a2b2c2d2e2f2g2h2#1 a1b1c1d1e1f1g1h1#0 Das Brett in Bitboard-Darstellung Mai 2004

20 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung BitBoards Beispiel: Springerzüge[d3] & gegnerischeBauern & => X X 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 Mai 2004

21 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Rotated BitBoards 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 #7#6#5#4#3#2#1#0Bit/Byte a8a7a6a5a4a3a2a1#7 b8b7b6b5b4b3b2b1#6 c8c7c6c5c4c3c2c1#5 d8d7d6d5d4d3d2d1#4 e8e7e6e5e4e3e2e1#3 f8f7f6f5f4f3f2f1#2 g8g7g6g5g4g3g2g1#1 h8h7h6h5h4h3h2h1#0 Die um 90° gedrehte Brett-Darstellung Mai 2004

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

23 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Evaluation Mai 2004 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. dynamische Faktoren - Entwicklung - Koordination - Figurendruck - schlechtstehende Figuren 0-+ 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 -...

24 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Material Mai x1.0 WeissSchwarz p mn vl tr wq 2x3.0 2x4.5 1x x1.0 2x3.0 2x4.5 1x p mn vv:l tr wq k Material - Figurenbewertungen (weisse Figurensumme - schwarze) - verwendeten Daten von Kasparov vorgeschlagen

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

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

27 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Algorithmen 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 W am Zug Knoten Kante Zugwahlalgorithmen... Mai 2004

28 Schachprogrammier AG 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) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

29 Schachprogrammier AG 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) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

30 Schachprogrammier AG 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) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004 W am Zug S am Zug W am Zug

31 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

32 Schachprogrammier AG 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) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai W am Zug S am Zug W am Zug Bewertungsroutine an den Blättern

33 Schachprogrammier AG 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 Bewertungsroutine an den Blättern Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

34 Schachprogrammier AG 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 Bewertungsroutine an den Blättern Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

35 Schachprogrammier AG 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 Bewertungsroutine an den Blättern Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

36 Schachprogrammier AG 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 Bewertungsroutine an den Blättern Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004 Jede Partei spielt immer den für sich besten Zug.

37 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

38 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

39 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

40 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

41 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

42 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

43 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004 W am Zug S am Zug W am Zug Bewertungsroutine an den Blättern

44 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai W am Zug S am Zug W am Zug Bewertungsroutine an den Blättern [ MinWert, MaxWert ]

45 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai W am Zug S am Zug W am Zug Bewertungsroutine an den Blättern Alpha = - 8 [ MinWert, MaxWert ]

46 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai W am Zug S am Zug W am Zug Bewertungsroutine an den Blättern Alpha = - 8 [ - 8, MaxWert ]

47 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai W am Zug S am Zug W am Zug Bewertungsroutine an den Blättern Alpha = - 8 [ - 8, MaxWert ]

48 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai W am Zug S am Zug W am Zug Bewertungsroutine an den Blättern Alpha = - 8 [ - 8, MaxWert ] < - 8 !

49 Schachprogrammier AG 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 W am Zug Bewertungsroutine an den Blättern Alpha = - 8 [ - 8, MaxWert ] < - 8 ! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

50 Schachprogrammier AG 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 W am Zug Bewertungsroutine an den Blättern Alpha = - 8 [ - 8, MaxWert ] < - 8 ! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

51 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

52 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

53 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

54 Schachprogrammier AG 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 Schlechter Fall: Bester Fall: < - 4 ! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

55 Schachprogrammier AG 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 Schlechter Fall: Bester Fall: < - 4 ! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

56 Schachprogrammier AG 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!) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

57 Schachprogrammier AG 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!) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

58 Schachprogrammier AG 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!) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

59 Schachprogrammier AG 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!) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

60 Schachprogrammier AG 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!) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

61 Schachprogrammier AG 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!) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

62 Schachprogrammier AG 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!) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

63 Schachprogrammier AG 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!) Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

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

65 Schachprogrammier AG 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!! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

66 Schachprogrammier AG 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!! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

67 Schachprogrammier AG 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!! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

68 Schachprogrammier AG 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!! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

69 Schachprogrammier AG 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!! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

70 Schachprogrammier AG 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!! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

71 Schachprogrammier AG 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!! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

72 Schachprogrammier AG 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!! Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

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

74 Schachprogrammier AG 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 Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Mai 2004

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

76 Schachprogrammier AG 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 langfristige Planung des Spielverlaufes Kombinationen Mai 2004

77 Schachprogrammier AG 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 Bauernschwächen ausnutzen - Figuren besser stellen - schlechte Figuren abtauschen spezielle /kurzfristige Pläne Mai 2004

78 Schachprogrammier AG 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 Mai 2004

79 Schachprogrammier AG 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 Mai 2004

80 Schachprogrammier AG 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 + keine taktischen Fehler im Berechnungshorizont - begrenzter Horizont - Figuren werden bestmöglich positioniert Mensch + Intuition und Erfahrung + Selektive Suche + keinen beschränkten Horizont - macht Fehler - Konzentration Mai 2004

81 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Eröffnungsbücher Eröffnungs Datenbank Schachwissen aus mindestens 1500 Jahren steht zur Verfügung. Ziel ist eine evolutionäre Eröffnungsdatenbank. Pfade werden aktualisiert, das Programm lernt schlechte, bzw. gut Wege. e4d4c4 e5c5e6 statisch dynamisch e4d4c4 e5c5e6a5a6 70%30%50% 90%70% 50%40%20% Mai 2004

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

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

84 Schachprogrammier AG Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung UCI/WinBoard Mai 2004 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 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 info score cp 20 depth 3 nodes 423 time 15 pv f1c4 g8f6 b1c3 info nps stop bestmove g1f3 ponder d8f6

85 Schachprogrammier AG 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... Mai 2004

86 Schachprogrammier AG 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 Mai 2004

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

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


Herunterladen ppt "AG Schachprogrammierung FUSC# Stand: Mai 2004 FUSC#-Projektgruppe d4c4 a5a6 30%50% 40%20% e4 60%"

Ähnliche Präsentationen


Google-Anzeigen