Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Manfried Katch Geändert vor über 10 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.