AG Schachprogrammierung FUSC# Stand: Mai 2004

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Definition Überlappung und Überdeckung
Entscheidungsunterstützungssysteme -
Gruppenwettbewerb. Gruppenwettbewerb Aufgabe G1 (8 Punkte)
GIN2 SS05 Prof. Dr. W. Conen, Nullsummen-Spiele - Min-Max-Suche - Alpha-Beta-Pruning (späterer Termin)
Grenzen endlicher Automaten
Projekt zur Evaluation, Reaktivierung vorhandener Kenntnisse und Festigung des Arbeitens mit Größen im Mathematikunterricht mit Schülern der 7. Klassen.
Müll 1NaturEinkaufenMüll 2Vermischtes
Wie lernt FUSC# mit TD( )? Marco Block... X1X1 X2X2 XNXN x1x1 x2x2 pd[i] =w1f1(x) + w2f2(x) + w3f3(x) wnfn(x)... w1f1(x) + w2f2(x) + w3f3(x) +...
Reinforcement Learning in der Schachprogrammierung
Marco Barz Seminar über Algorithmen SoSe2007
Mathematik des Bridge Tanja Schmedes.
Spielbäume Richard Göbel.
A1. RECHTSBEZIEHUNGEN IM ÜBERBLICK.
BCD Ripple Carry Adder von Enrico Billich.
Algorithmentheorie 6 – Greedy-Verfahren
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Gottfried Vossen 5. Auflage 2008 Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme Kapitel 16: Grundlagen des Data Mining.
Vom Amateur zum Grossmeister
Algorithmen des Internets 2005 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität 1 Klausuraufgaben.
1/25 UNIVERSITY OF PADERBORN Projektgruppe KIMAS Projektgruppe KIMAS MultiAgenten-Systeme Andreas Goebels.
Ergebnisse der Makrozoobenthos-Beprobung März 2007 Vergleich detaillierter Nachweisverfahren nach BWK-Merkblatt 3 für das Morsbacheinzugsgebiet Wuppertal,
Classification of Credit Applicants Using Data Mining. Thema.
Hinweise zum 10. Übungsblatt zu GIN1b, WS04/05 Prof. Dr. W. Conen (Version 1.0alpha, )
I. Determinismus oder Indeterminismus
Informationstechnologie
So, ein paar Fragen.. Wo sind mehr Bälle? Wo sind mehr Steine?
Von Tom Wehnert & Konstantin Preißer
20:00.
Computational Thinking Wie spielen Computer? [Sind sie unbesiegbar?]
Herzlich Willkommen in Bergisch Born
Fachschaft Psychologie Mitwirken.Mitsprechen.Mitentscheiden. FUN. Fragen sind erwünscht | Fachbereich 03 | Institut für Psychologie | Fachschaft.
...ich seh´es kommen !.
... Unternehmens- leitung
Karte 1 Lösungen Die Zahl über dem Bruchstrich nennt man Zähler und die Zahl unter dem Bruchstrich nennt man Nenner . Der Nenner gibt das Ganze an. Der.
Leo Hamminger, Martina Prinz, Elisabeth Winklehner Instrumente Schule Bewusst Instrumente Schule Bewusst Strategien der Datenreduktion Inhaltliche.
6 Effektives Arbeiten mit Formeln und Funktionen
Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke.
Tabellenkalkulation mit Excel
Klicken Sie in der Meldungsleiste auf Bearbeitung aktivieren,
Halfadder a =1 s & cout b.
Präsentation läuft auch vollautomatisch ab … wie du möchtest
… oder wie finde ich den Weg
Symmetrische Blockchiffren DES – der Data Encryption Standard
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
Eine mannschaftstaktische Maßnahme im Volleyball
1. Grundkörper: Verschmelzung Zylinder mit Pyramide
1. Grundkörper: Verschmelzung Vierkantpyramide und Vierkantpyramide Vierkantpyramide stehend xyz G1G G2G2 0 0 G3G G4G4 0 0 S1S Vierkantpyramide.
1.Grundkörper: Verschmelzung Zylinder mit Quader
1.Grundkörper: Steckung Zylinder mit Pyramidenstumpf
Driften Spiel des Lebens. Anzahl der Ziehung en Absolute Häufigk eit blau Absolute Häufigk eit rot Relative Häufigk eit blau Relative Häufigk eit rot.
Seite 1 Computeria Wallisellen Peter Furger PC Akademie Steinacherstr. 44 Excel (Auszug) Seite 1.
2014 Januar 2014 So Mo Di Mi Do Fr Sa So
Microsoft Corporation
Computer-Kurse © 2009 Michaela Behling Relative und absolute Bezüge Kopieren von Berechnungen.
Brüche-Quartett Klasse 6-8 Spieler 4-6. Brüche-Quartett A1 Brüche-Quartett A2 Brüche-Quartett A3 Brüche-Quartett A4 Brüche-Quartett B1 Brüche-Quartett.
Physik - Mechanik Vektoraddition - Kräfteaddition F2 F1 F2 F1 F2
Der Erotik Kalender 2005.
„MarITim – Mit Kurs auf IT“ OpenNet – Ein frei verfügbares Kommunikationsnetz „selbstgestrickt“ Dr. René Ejury Rostock, 23. März 2006.
Vegetationsplot 43 m 10 m Sammlerplot Reserveplot Bodenplot A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4 D1 D2 D3 D4 Streusammler Schneesammler Regensammler Vegetationsquadrat.
You need to use your mouse to see this presentation © Heidi Behrens.
B Bühnen- technik Bühne DRKGrillen Kaffe+Kuchen B12 Getränke Platzplanung Overather KirchenSonntag Stand: Bestuhlung Brunnen Chor Orchester.
Philosophie BA-KiJu Überblick über den Studienverlauf Philosophisches Seminar.
Computeria Wallisellen
Schattenspeicher S1 S2 Segmente P11 P12 P13 • • • • P1n P21 P22 P23
Philosophie BA-2Fach Überblick über den Studienverlauf Philosophisches Seminar.
Der gläserne Wähler Über Möglichkeiten und Unmöglichkeiten der Schätzung von Wähler-Wechsel-Wahrscheinlichkeiten Thomas Ledl Universität Wien Österreichische.
1.6.3 Test auf Verlustfreiheit (Verbundtreue) (4|10)
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
 Präsentation transkript:

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

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

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 1800-1900 zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

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 1800-1900 zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

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 1800-1900 zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

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 1800-1900 zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

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 1800-1900 zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

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 1800-1900 zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

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  2290 2.Düster, Christian  2100 3.Domingo, Miguel  2038 4.Lane, Robin  1300 5.Steffen, Rico  1971 6.Kuprat, Thomas  1975 7.Burghardt, Michael  1975 8.Martin, Mario  1900 9.Trösch, Thomas  2166 10.FUSC# V1.07  1400 11.Kärcher, David  1368 12.Minski, Martin  2024 13.Rauch, Felix  1350 14.Schaller, Peter  1750 15.Wölter, Ulrich  1300 16.Remmo, Abdulrahim 1300 Schachprogrammier AG Mai 2004

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 1800-1900 zweites offizielles Internet-Turnier (V 1.10) buggi, 21ter von 23 Schachprogrammier AG Mai 2004

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

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 1800-1900 zweites offizielles Internet-Turnier buggy, 21ter von 23 Schachprogrammier AG Mai 2004

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 1.2.1209 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

Projektgruppe Homepage Mitgliedschaft Gründung der AG Schachprogrammierung Brettrepräsentation Evaluation Algorithmen Mensch versus Maschine Eröffnungsbücher UCI/WinBoard weitere Planung Projektgruppe Homepage http://page.mi.fu-berlin.de/~fusch/ 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

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 http://page.mi.fu-berlin.de/~fusch/ - integriertes CVS - Gruppe schachs - Tutorial online Schachprogrammier AG pageant Mai 2004

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

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

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 0100110 11001 ... 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

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

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 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00101000 00000000 00000000 01000100 & 00000000 => 00000000 000X0000 00000000 000X0000 01000100 11111111 01000100 00101000 00000000 00000000 Schachprogrammier AG Mai 2004

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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