Computerschach: Neue Testaufgaben für Programme

Der «Eigenmann Rapid Engine Test» (ERET)

von Walter Eigenmann

Der sog. Eigenmann Rapid Engine Test (ERET) ist eine neue Sammlung von 111 Aufgaben für Schach-Programme. Er wurde konzipiert, um schnell einen ersten Eindruck von der Spielstärke einer neuen Engine ausmachen zu können. Die Computerschach-Anwenderschaft erhält mit diesem ERET erstmals eine Test-Suite an die Hand, deren Ergebnisse innert zehn Minuten eine grobe, aber recht verlässliche Einschätzung eines (neuen) Programms erlauben.

Die 111 Stellungen bzw. ihre Hauptvarianten können hier nachgespielt und als PGN-Datei heruntergeladen werden. Downloadbar ist ausserdem der Test im CBH-Format (für Chessbase-Software) sowie als EPD-Datei für den Import in diverse Schach-GUI’s.

Die Vorzüge des ERET gegenüber älteren Sammlungen sind namentlich:

  • Grosse Bandbreite der Schachmotivik
  • Eindeutigkeit der Lösungen
  • Ausgewogenheit der Partiephasen
  • Mittlerer bis hoher Schwierigkeitsgrad
  • Keine Auswertungsformeln
  • Schnelle Programm-Resultate bereits nach 10 Min.
  • Auch für zukünftige Engine-Generationen tauglich

Die Axiomatik des ERET-Stellungstests

Eine Aufgaben-Sammlung wie der ERET-Stellungstest für Schachprogramme basiert auf einer eigenen Axiomatik.

Diese lässt sich in den folgenden fünf Punkten zusammenfassen:

  1. Die 111 Aufgaben des ERET decken einen grossen Bereich der (computer-)schachlichen Realität ab; diese abgestimmte Kompaktheit der Zusammenstellung ist weder durch Hinzufügungen noch Wegstreichungen antastbar.
  2. Für Computerprogramme (anders als für Menschen) ist eine Schachpartie grundsätzlich eine Sammlung von Einzel-Aufgabenstellungen unter definierten Bedingungen – ein Stellungstest also.
  3. Die Denk- bzw. Rechengeschwindigkeit beim Schachspielen ist eine maßgebliche Komponente der «Spielstärke».
  4. Das vom Test-Autor empfohlene Test-Setting ist ein integraler Bestandteil des Stellungstests.
  5. Unter Berücksichtigung bzw. Wahrung der Punkte 1 bis 4 garantiert der ERET keine 100%ige, aber eine weitgehende Übereinstimmung seiner Testergebnisse mit den durchschnittlichen Resultaten des praktischen Engine-Turnierbetriebes.

Test-Setting / Anmerkungen

Die technische Durchführung des Tests ist einfach und bei den verschiedenen Schach-Interfaces wie z.B. Arena, Shredder, Aquarium oder Fritz im Grundsatz ähnlich, wobei der Autor auf aktueller Computer-Hardware (2017) das folgende Test-Setting empfiehlt:

  • Bedenkzeit: 5-10 Sekunden pro Aufgabe
  • Prozessoren/Threads: 1-4
  • Hash-Memory: 256-512Mb
  • Opening-Books: beliebig
  • Endgame-Tablebases: beliebig
  • Extra Halbzüge: 2-99
  • eret-rochadeangriff-carlsen
    Der ERET-Schachtest für Computer-Programme deckt ein weites Spektrum an Eröffnungs-, Mittelspiel- und Endspiel-Elementen ab. Namentlich enthält er exemplarische Beispiele der folgenden taktischen und positionellen Motive (alphabetisch): Ablenkung – Abtausch – Damenopfer – Entlastung – Entwicklung – Festung – Freibauer – Initiative – Königsangriff – Königssicherheit – Läuferopfer – Linienöffnen -Mobilität – Offene Linien – Positionelles Opfer – Qualitätsopfer – Räumung – Rochadeangriff – Springeropfer – Starke Felder – Unterverwandlung – Vergifteter Bauer – Verteidigung – Zentralisierung – Zentrum – Zugzwang – Zwischenzug (Bild: Die Brennpunkte des weißen Rochadangriffs in einer Fernschachpartie Copie-Patrici 1986)

    Die Anzahl Lösungen einer Engine ergibt deren wichtigstes Testergebnis; dieses erlaubt bereits einen groben Vergleich mit anderen Programmen. Um die Resultate mehrerer Engines noch zu differenzieren, empfiehlt der Autor das Interface «Fritz» ab Version 11, dessen Testergebnisse – aus der CBH- in eine PGN-Datei konvertiert – dann mit dem Freeware-Tool von Dr. Frank Schubert EloStatTS104 abgeglichen werden sollten. Diese mathematisch-statistisch fundierte Methode der Test-Auswertung ist wenn immer möglich vorzuziehen. Außerdem ist bei einer Verwendung des Testes mit «Fritz» die von EloStatTS104 mitgelieferte «Offset»-Test-File zu berücksichtigen: Mit ihm lassen sich die unterschiedlichen Reaktions- bzw. Initialisierungszeiten der Engines unter diesem Interface eruieren, womit nochmals genauere Ergebnisse generiert werden können (siehe hierzu die entspr. Readme-Datei).
    Eine Alternative zum «Fritz»-GUI ist die Freeware-Oberfläche «Arena», die mit zusätzlichen Features beim Automatisierten Stellungstesten aufwartet und auch einen Output der Engine-Berechnungen bietet, allerdings auf jegliche Ranglisten-Generierung verzichtet bzw. nur die Anzahl Lösungen angibt, so dass keine weitergehende Differenzierung der Testergebnisse möglich ist bzw. manuell erfolgen müsste. Andere Benutzeroberflächen bieten ebenfalls nur rudimentäre Optionen bezüglich Stellungstests und sind deshalb für den ERET nur bedingt zu empfehlen.

  • Moderne Rechner mit Multi-Prozessoren- bzw. -Threads-Technik neigen zu Fluktuationen in ihrer Zug-Generierung. Deren Auswirkung in der Praxis wird zwar generell sehr überschätzt, aber wer auf Nummer sicher gehen will, macht pro Engine drei bis fünf Test-Durchläufe und nimmt den Durchschnitt oder die kürzeste der jeweiligen Lösungszeiten.
  • Um Software-übergreifende Vergleiche zu ermöglichen, sollten die Engines grundsätzlich mit ihren Default-Parametern getestet werden – natürlich abgesehen von Thread-, Hash- oder Tablebase-Einstellungen.
  • Auf schneller Hardware reichen 5 Sekunden pro Aufgabe aus; das entspricht ungefähr der im modernen Engine-Turnier-Betrieb häufig angewendeten Bedenkzeit von 40 Zügen in 4 Minuten. Bei langsameren Rechnern empfehlen sich 7-10 Sekunden.
  • Bei der Generierung von Ranglisten mit dem ERET sollten nicht die absoluten Zahlen-Ergebnisse, sondern vielmehr die Engine-Relationen beachtet werden – so wie bei den Rankings der verschiedenen bekannten Engine-Turnieren auch. Diese können bekanntlich (je nach Turnier-Settings und Berechnungsgrundlage) überraschend unterschiedlich ausfallen – siehe die einschlägigen Engine-Ranglisten CEGT, CCRL, FCP, OHCR, SPCC, FGRL u.a.
    Hier findet sich ein Vergleich von fünf häufig zitierten Ranglisten im Internet mit den ERET-Ergebnissen (März 2017). Dabei zeigte sich, wie überraschend genau die Ergebnisse des ERET-Stellungstestes mit den übrigen „regulären“ Rankings übereinstimmen (natürlich von ein paar üblichen „Ausreißern“ abgesehen, die in jedem Ranglisten-Vergleich zu finden sind).
  • Die einzelnen Stellungen hat der Autor hauptsächlich mit den drei Programmen Deep-Shredder 11/12, Critter 1.6 und RybkaWinFinder 2.2 im Hinblick auf ihre taktische Korrektheit untersucht. Ansonsten hat er auf weiteres Einzeltesten bewusst verzichtet, um den Test möglichst objektiv und nicht «geeicht» auf bestimmte Programme gestalten zu können. (Entsprechende Resultat-Meldungen aus der Leser- bzw. Anwenderschaft via „Kommentar“-Funktion würde sich der Autor freuen).
  • Trotz der relativ kurzen Zeit-Vorgabe von 5 Sekunden/Stellung sind die ERET-Aufgaben keineswegs trivial. Viele der Stellungen dürften sogar ganz besondere Knacknüsse auch für heutige Engines sein. Die umfangreichen persönlichen Analysen mithilfe der obengenannten Programme legen den Schluss nahe, dass dieser Test eher im oberen Schwierigkeitsbereich angesiedelt ist. Der Autor ist deshalb zuversichtlich, dass der ERET auch noch in fünf oder zehn Jahren interessant sein wird…

Die aktuelle ERET-Rangliste

Bald nach Erscheinen des Tests unterwarf der Autor fast 120(!) Engines diesem Test – alle damaligen Test-Ergebnisse können im Detail nach wie vor nachgelesen werden (PDF-Datei).

Nun wurde der ERET nochmals auf stärkerer Hardware von ausschließlich Multi-Prozessor-fähigen Programmen absolviert. Jedes Programm hatte jede Aufgabe drei Mal zu lösen; das jeweils beste Ergebnis floss in das Ranking ein (zurzeit noch ohne Nutzung des oben beschriebenen Tools EloStatTS104; dieses könnte die Rangliste noch deutlicher differenzieren).
Hier lassen sich die Einzelresultate nachlesen (Excel-Datei; Sekunden-genau auf-/abgerundet gemäß copy/paste des Outputs der „Fritz“-Oberfläche ).

Nachfolgend die entsprechende Rangliste:

   Program               solved

01 Houdini 6             75/111
02 AsmFish 2017-08-10    73/111
03 Stockfish 8           71/111
04 SugaR XPrO 1.2        71/111
05 Komodo 11.01          66/111
06 Houdini 5.01          65/111
07 Fizbo 1.9             50/111
08 Fire 6                49/111
09 Fire 5                48/111
10 Deep Shredder 13      48/111
11 Fritz 15              47/111
12 Critter 1.6           46/111
13 Protector 1.9         45/111
14 Gull.3.1              44/111
15 Andscacs 0.92         43/111
16 NirvanaChess 2.4      43/111
17 Andscacs 0.91         42/111
18 Bouquet 1.8           40/111
19 Sting SF 8.5          39/111
20 Hannibal 1.7          38/111
21 Texel 1.07            38/111
22 Naum 4.6              36/111
23 Deep Rybka 4.1        35/111
24 Chiron 4              35/111
25 Arasan 20.2           34/111
26 Equinox 3.30          34/111
27 Spark 1.0             32/111
28 Rybka WinFinder 2.2   31/111
29 Pedone 1.5            28/111
30 Deep Hiarcs 14        28/111
31 Wasp 2.0              28/111
32 Spike 1.4             27/111
33 Deep Junior 13.3      25/111
34 Vajolet 2 2.2         25/111
35 Deep Fritz 13         24/111
36 Deep Fritz 10         23/111
37 Deep Gandalf 7        20/111
38 Zappa Mexico II       19/111
39 Crafty 25.2           18/111
40 The King 3.50         17/111
42 Deep Sjeng WC2008     16/111
42 Deep Onno 1-2-70      16/111

Hard- und Software:
i7(4790)-5sec-4CPU-256MBHash-NoBooks-AllTBs
Windows-10 / Fritz 15 (Extra Halbzüge/Extra Ply: 10)

Weiterführende Links

  • Für jene Leser, die sich näher mit der Thematik Computerschach&Stellungstests befassen möchten, nachfolgend ein paar weiterführende Links:
  • Dr. Frank Schubert: Lösung eines alten Problems – Autor Schubert untersucht zuerst die seinerzeit gängigen Auswerteverfahren verschiedener bekannter Stellungstests und stellt dann einen mathematisch neuen, dem FIDE-Elo-Verfahren ähnlichen Ansatz zur Differenzierung von Test-Ergebnissen vor. In einem historischen Exkurs wird auch Bezug genommen auf noch vor einigen Jahren gebräuchliche Tests von Autoren wie Bednorz, Schumacher, Gurevich oder Scheidl. Zum Schluss stellt Schubert seine eigene Methode vor, «welche die Schwächen der bisherigen Formeln beseitigt und erstmalig auf einer soliden schachlichen Theorie basiert.»
  • Lars Bremer: Was Stellungstests testen – IT-Journalist und Programmierer Bremer repliziert darin auf den seinerzeit heftig umstrittenen CSS-WM-Test von M. Gurevich, wobei er ebenso unverhohlen wie amüsant in die Trick-Kiste greift, um seine Test-kritische These zu untermauern: Er löscht mit einem eigens dafür geschriebenen Tool in dem als Gesamtheit konzipierten Test jeweils so lange einzelne Aufgaben, bis immer wieder Top-Resultate der zufällig gewählten (ggf. schwachen) Engine resultieren, womit Bremer den zufälligen Charakter von Test-Ergebnissen beweisen möchte. Aber da selbstverständlich ein umfangreicher und durchdachter Stellungstest immer kompakt gemeint ist, seine Aufgaben aufeinander abgestimmt sind und darum nicht einfach willkürlich zusammengestrichen werden können, ist der ganze Artikel eher satirisch denn wissenschaftlich einzustufen und darum ein einziger «Quatsch» (Zitat) – aber dennoch witzig zu lesen.
  • Lars Bremer: Chaos-System Deep Engine – Ein sehr viel «seriöserer» und informativer Artikel des obigen Autors zur Problematik des «Zufälligen Zuges» bei Deep-Engines. Mit seinem «Fazit» bezüglich der Aussagekraft von Stellungstests bei MP-Rechnern ist der Schreibende zwar nicht einverstanden: Ausgedehnte Untersuchungen könnten sehr wohl dokumentieren, dass ein durchdachtes Design eines Stellungstestes diesen «MP-Effekt» zwar nicht restlos ausschalten, aber entscheidend abfedern kann, so dass er bezüglich Ranking schliesslich auch statistisch irrelevant wird. Doch Bremer erklärt das Phänomen aus der Sicht des Programmierers äusserst anschaulich und auch für Laien nachvollziehbar. Es wird erklärt, warum sich moderne «Deep»-Programme zuweilen völlig nicht-deterministisch, ja «chaotisch» verhalten beim Ausspielen von Zügen.
  • Tord Romstad (Stockfish): Eine kurz zusammengefasste Erklärung dieses «MP-Effektes» findet sich auch in einem Interview, das Frank Quisinsky vor Jahren mit Tord Romstad, dem verantwortlichen Stockfish-Programmierer, sowie dessen Co-Autoren geführt hat. Zitat: «Wenn ein Schachprogramm eine Position, irgendwo tief innerhalb des Suchbaums, untersucht, macht es Gebrauch bzw. erinnert sich an frühere bereits untersuchte Positionen der gleichen Suche. Die Zugbeschneidung, Verkürzung oder Verlängerung hängen davon ab, welche Positionen vorher überprüft wurden und wie die Ergebnisse der Untersuchung dieser Positionen waren. Der Großteil der Informationen, der für eine Entscheidung verwendet wird, liegt im Arbeitsspeicher. Der Arbeitsspeicher steht allen Prozessoren zur Verfügung.
    Solange es nur einen Thread gibt, ist alles zu 100% reproduzierbar. Aber bei mehreren Threads beginnen seltsame Dinge zu geschehen, weil diese Threads nie synchron mit gleicher Geschwindigkeit aktiv sein können. Immer wieder wird eine CPU für ein paar Millisekunden eine Pause einlegen müssen und das Betriebssystem weist dann sofort eine andere Aufgabe zu. Das geschieht zufällig und ist nicht vorhersehbar, eine Kontrolle gibt es hierfür nicht. Als Konsequenz erreicht jeder Prozessor eine bestimmte Position eher zufällig und das wirkt sich dann auf die Suche nach Entscheidungen zur aktuellen Position aus.»
  • Chess Programming Wiki: Test-Positions – Diese informative Seite (anmeldepflichtig) verlinkt eine Vielzahl interessanter Artikel zur Thematik «Stellungstest» bzw. zu deren Autoren und stellt eine Fundgrube dar für jene, die sich mit der Materie näher befassen möchten. Gleichzeitig bietet die Webseite einen umfassenden Überblick auf die Historie und listet sogar interessante Forum-Beiträge aus früheren Jahren auf. ♦

Lesen Sie im Glarean Magazin zum Thema „Teststellungen für Engines“ auch: „Nightmare 2“ – 30 Albträume für Schachprogramme


Kommentare sind willkommen!