Neue Testaufgaben für Schach-Programme

Der «Eigenmann Rapid Engine Test» (ERET)

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.
    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 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 u.a. hier: CEGT, CCRL, FCP, OHCR, SPCC, FGRL
    Ein Vergleich von fünf häufig zitierten Ranglisten im Internet mit den ERET-Ergebnissen findet sich hier (März 2017).
  • 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 und konsequent verzichtet, um den Test möglichst objektiv und nicht irgendwie «geeicht» auf bestimmte Programme gestalten zu können. (Über entsprechende Resultat-Meldungen aus der Leser- bzw. Anwenderschaft per E-Mail würde sich der Autor also sehr 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…

Aktuelle ERET-Rangliste (März 2017)   –   Generiert mit EloStatTS104

     Program                                    Elo   +/-  Matches  Score   Av.Op.   S.Pos.   MST1    MST2   RIndex

  1 AsmFish 2017-03-15(4CPU)                  : 3420    3   6971    68.3 %   3287    72/111    2.0s    3.1s   0.69
  2 Komodo 10.4(4CPU)                         : 3410    4   6869    67.0 %   3287    68/111    2.1s    3.2s   0.64
  3 Stockfish 8(4CPU)                         : 3409    4   6751    66.8 %   3287    64/111    1.8s    3.2s   0.69
  4 Brainfish 190317(4CPU)                    : 3406    4   6807    66.5 %   3287    64/111    1.9s    3.2s   0.65
  5 Houdini 5.01(4CPU)                        : 3401    4   6450    65.7 %   3288    62/111    2.0s    3.3s   0.65
  6 Komodo 10.3(4CPU)                         : 3396    4   6645    65.1 %   3288    60/111    1.9s    3.3s   0.62
  7 Stockfish 8(1CPU)                         : 3389    4   6098    64.1 %   3288    57/111    2.0s    3.4s   0.58
  8 Fizbo 1.9(4CPU)                           : 3380    5   5745    62.4 %   3292    50/111    1.7s    3.5s   0.56
  9 Houdini 5.01(1CPU)                        : 3380    4   5742    62.7 %   3290    54/111    2.1s    3.6s   0.55
 10 Komodo 10.4(1CPU)                         : 3380    4   6034    62.8 %   3289    56/111    2.3s    3.6s   0.47
 11 Komodo 10.3(1CPU)                         : 3378    4   5706    62.4 %   3290    52/111    1.9s    3.6s   0.56
 12 Stockfish 7(1CPU)                         : 3371    4   5849    61.5 %   3290    53/111    2.3s    3.7s   0.46
 13 Komodo 10(1CPU)                           : 3366    5   5311    60.4 %   3292    48/111    2.1s    3.7s   0.51
 14 DeepShredder 13(4CPU)                     : 3360    4   5292    59.8 %   3292    46/111    2.0s    3.8s   0.44
 15 Houdini4 (4CPU)                           : 3359    5   5351    59.4 %   3293    45/111    1.9s    3.8s   0.46
 16 Komodo9.42 (1CPU)                         : 3357    5   5237    59.3 %   3292    45/111    2.1s    3.8s   0.43
 17 Stockfish6 (1CPU)                         : 3351    5   4871    58.3 %   3293    42/111    1.9s    3.8s   0.49
 18 Komodo 9.2(1CPU)                          : 3351    5   5101    58.3 %   3293    44/111    2.2s    3.9s   0.46
 19 Fritz 15(4CPU)                            : 3347    5   5065    57.3 %   3295    41/111    2.0s    3.9s   0.40
 20 Komodo 9(1CPU)                            : 3346    5   4955    57.5 %   3293    40/111    1.9s    3.9s   0.44
 21 Andscacs 0.89(4CPU)                       : 3345    5   5034    57.3 %   3294    43/111    2.2s    3.9s   0.39
 22 Fizbo 1.9(1CPU)                           : 3344    5   5177    56.8 %   3296    42/111    2.2s    3.9s   0.38
 23 Critter 1.6a(4CPU)                        : 3343    5   5045    56.8 %   3295    41/111    2.2s    4.0s   0.43
 24 Gull 3(4CPU)                              : 3338    5   4921    56.1 %   3295    40/111    2.1s    4.0s   0.39
 25 Protector 1.9.0(4CPU)                     : 3337    5   4936    56.0 %   3295    39/111    2.2s    4.0s   0.40
 26 Stockfish 5(1CPU)                         : 3336    5   4772    56.0 %   3294    41/111    2.4s    4.1s   0.42
 27 Andscacs 0.87(4CPU)                       : 3328    5   4837    54.6 %   3296    36/111    2.1s    4.1s   0.35
 28 Houdini 4(1CPU)                           : 3326    5   4421    54.2 %   3297    34/111    1.8s    4.0s   0.46
 29 Fire 5(1CPU)                              : 3325    5   4527    54.0 %   3297    33/111    1.7s    4.0s   0.39
 30 Shredder 13(1CPU)                     : 3324    5   4550    54.0 %   3297    36/111    2.2s    4.1s   0.30
 31 Komodo 8(1CPU)                            : 3320    5   4533    53.4 %   3296    33/111    2.0s    4.1s   0.38
 32 Critter 1.6a(1CPU)                        : 3316    5   4511    52.6 %   3298    33/111    2.2s    4.2s   0.36
 33 Andscacs 0.89(1CPU)                       : 3315    5   4640    52.5 %   3297    34/111    2.4s    4.2s   0.28
 34 Nirvanachess 2.3(4CPU)                    : 3314    5   4298    52.3 %   3298    33/111    2.1s    4.1s   0.35
 35 Andscacs 0.86(4CPU)                       : 3312    5   4331    51.9 %   3299    32/111    2.2s    4.2s   0.35
 36 Equinox 3.30(4CPU)                        : 3310    6   4362    51.4 %   3300    32/111    2.0s    4.1s   0.36
 37 Equinox 3.30(1CPU)                        : 3305    6   4285    50.6 %   3301    31/111    2.2s    4.2s   0.34
 38 Naum 4.6(4CPU)                            : 3303    5   4196    50.3 %   3301    33/111    2.6s    4.3s   0.32
 39 Fizbo 1.8(1CPU)                           : 3302    6   4362    50.4 %   3299    28/111    1.8s    4.2s   0.30
 40 Fritz 15(1CPU)                            : 3300    5   4201    49.9 %   3301    30/111    2.2s    4.3s   0.30
 41 Spark 1.0(4CPU)                           : 3299    6   4560    49.8 %   3301    30/111    2.5s    4.3s   0.23
 42 Andscacs 0.87(1CPU)                       : 3299    5   4182    49.8 %   3301    31/111    2.4s    4.3s   0.28
 43 Rybka 4.1(1CPU)                           : 3295    6   4173    48.9 %   3303    27/111    2.1s    4.3s   0.30
 44 Andscacs 0.86(1CPU)                       : 3293    6   4140    49.0 %   3300    29/111    2.3s    4.3s   0.32
 45 Texel 1.06(4CPU)                          : 3293    6   4224    48.8 %   3301    28/111    2.1s    4.3s   0.24
 46 Nirvanachess 2.3(1CPU)                    : 3292    6   4126    48.8 %   3301    28/111    2.2s    4.3s   0.27
 47 Hannibal 1.7(1CPU)                        : 3292    6   3977    48.7 %   3301    24/111    1.2s    4.2s   0.37
 48 Arasan 19.2(4CPU)                         : 3292    6   4297    48.5 %   3302    29/111    2.5s    4.4s   0.26
 49 Gull 3(1CPU)                              : 3291    6   4107    48.6 %   3300    26/111    1.8s    4.3s   0.30
 50 Protector 1.9(1CPU)                       : 3286    6   3997    47.9 %   3301    25/111    1.9s    4.3s   0.28
 51 BlackMamba 2.0(4CPU)                      : 3282    6   3863    47.1 %   3302    25/111    1.9s    4.3s   0.32
 52 Fizbo 1.7(1CPU)                           : 3280    6   4090    46.8 %   3303    23/111    1.7s    4.3s   0.27
 53 iCE 3.0(1CPU)                             : 3280    6   3935    46.8 %   3303    24/111    1.9s    4.3s   0.28
 54 Protector 1.6(1CPU)                       : 3280    6   3996    46.8 %   3303    26/111    2.5s    4.4s   0.22
 55 Protector 1.8(1CPU)                       : 3280    6   3933    46.8 %   3302    25/111    2.1s    4.3s   0.30
 56 Chiron 4(4CPU)                            : 3272    6   3941    45.4 %   3304    24/111    2.3s    4.4s   0.23
 57 DeepJunior 13.3(1CPU)                     : 3272    6   3858    45.1 %   3306    21/111    1.6s    4.4s   0.28
 58 RybkaWinFinder 2.2(4CPU)                  : 3271    6   3910    45.1 %   3305    22/111    1.9s    4.4s   0.27
 59 Nirvanachess 2.2(1CPU)                    : 3271    6   3868    45.4 %   3303    23/111    2.0s    4.4s   0.22
 60 Booot 6.1(1CPU)                           : 3271    5   4046    45.6 %   3302    28/111    3.3s    4.6s   0.10
 61 Texel 1.06(1CPU)                          : 3271    6   3965    45.2 %   3304    25/111    2.8s    4.5s   0.21
 62 Chiron 3.01(4CPU)                         : 3270    6   3925    45.0 %   3305    25/111    2.7s    4.5s   0.22
 63 Fritz 10(4CPU)                            : 3267    6   4023    44.6 %   3305    23/111    2.5s    4.5s   0.19
 64 Chiron 2(1CPU)                            : 3266    6   3926    44.3 %   3305    22/111    2.2s    4.4s   0.18
 65 Rybka 3(1CPU)                             : 3265    6   3755    44.4 %   3305    21/111    2.0s    4.4s   0.29
 66 Chiron 1.5(1CPU)                          : 3264    6   3901    44.2 %   3305    22/111    2.4s    4.5s   0.20
 67 Naum 4.6(1CPU)                            : 3264    6   3731    44.1 %   3305    20/111    1.7s    4.4s   0.28
 68 Texel 1.05(1CPU)                          : 3257    6   3699    42.9 %   3307    22/111    2.4s    4.5s   0.22
 69 Arasan 19.1(4CPU)                         : 3257    6   3727    42.9 %   3307    21/111    2.4s    4.5s   0.23
 70 Hakkapeliitta 3.0(1CPU)                   : 3255    6   3843    42.8 %   3305    23/111    2.8s    4.5s   0.15
 71 Chiron 4(1CPU)                            : 3252    6   3818    42.2 %   3306    22/111    2.9s    4.6s   0.15
 72 Vajolet2 2.2(1CPU)                        : 3251    6   3647    42.2 %   3306    22/111    2.8s    4.6s   0.17
 73 Arasan 19.2(1CPU)                         : 3250    6   3684    42.0 %   3307    22/111    2.8s    4.6s   0.21
 74 Arasan 19.1(1CPU)                         : 3249    6   3730    41.8 %   3307    18/111    1.9s    4.5s   0.16
 75 Spark 1.0(1CPU)                           : 3244    6   3724    41.2 %   3306    20/111    2.8s    4.6s   0.16
 76 Fritz 10(1CPU)                            : 3241    6   3590    40.3 %   3309    16/111    1.7s    4.5s   0.20
 77 ZappaMexico II(1CPU)                      : 3238    6   3512    40.0 %   3309    15/111    1.2s    4.5s   0.24
 78 Senpai 1.0(1CPU)                          : 3238    6   3552    40.2 %   3307    17/111    2.0s    4.5s   0.19
 79 Naum 4(1CPU)                              : 3235    6   3484    39.5 %   3309    15/111    1.4s    4.5s   0.21
 80 Fruit 2.3(1CPU)                           : 3235    6   3403    39.3 %   3311    15/111    1.4s    4.5s   0.25
 81 Ruffian 1.0.1(1CPU)                       : 3235    6   3584    39.4 %   3309    15/111    1.8s    4.6s   0.18
 82 RodentII 0.9.64(1CPU)                     : 3225    6   3433    38.1 %   3310    17/111    2.8s    4.7s   0.15
 83 Quazar0.4(1CPU)                          : 3223    6   3423    37.8 %   3309    15/111    2.3s    4.6s   0.13
 84 Spike 1.4(1CPU)                           : 3222    6   3520    37.7 %   3309    15/111    2.4s    4.7s   0.15
 85 Fruit 2.2.1(1CPU)                         : 3222    6   3401    37.5 %   3311    13/111    1.5s    4.6s   0.21
 86 Junior 13.8Yokohama(1CPU)                 : 3216    7   3375    36.8 %   3310    12/111    1.1s    4.6s   0.19
 87 Amoeba 1.2(1CPU)                          : 3215    6   3347    36.4 %   3312    14/111    2.3s    4.7s   0.16
 88 Komodo 1.3(1CPU)                          : 3212    6   3283    36.3 %   3310    14/111    2.1s    4.6s   0.14
 89 Deuterium 14.3.34.130(1CPU)               : 3207    6   3270    35.4 %   3311    12/111    1.7s    4.6s   0.16
 90 Tao 5.7b(1CPU)                            : 3206    6   3325    35.3 %   3311    13/111    2.2s    4.7s   0.17
 91 Tao 5.6(1CPU)                             : 3204    6   3307    35.0 %   3312    12/111    1.9s    4.7s   0.16
 92 Wasp 1.25(1CPU)                           : 3197    6   3187    33.9 %   3313    13/111    2.7s    4.7s   0.12
 93 Tao 5.4(1CPU)                             : 3190    7   3279    33.0 %   3313    10/111    2.0s    4.7s   0.11
 94 Gaviota 1.0(1CPU)                         : 3189    6   3155    33.1 %   3312    11/111    2.0s    4.7s   0.15
 95 Laser 1.2(1CPU)                           : 3189    6   3212    32.8 %   3313    10/111    2.0s    4.7s   0.13
 96 ChessMind 0.82(1CPU)                      : 3186    6   3182    32.5 %   3313     9/111    1.4s    4.7s   0.14
 97 Minko 1.3(1CPU)                           : 3177    6   3043    31.1 %   3315     9/111    1.5s    4.7s   0.15
 98 SmarThink 1.70(1CPU)                      : 3176    6   3076    31.1 %   3315     8/111    1.1s    4.7s   0.16
 99 Ktulu 9(1CPU)                             : 3176    6   3116    31.1 %   3314     8/111    1.4s    4.7s   0.13
100 Murka 3(1CPU)                             : 3173    6   3153    30.8 %   3313     8/111    1.9s    4.8s   0.08
101 Octochess r5190                           : 3143    6   2962    27.0 %   3316     6/111    2.6s    4.9s   0.08

MST1  : Mean solution time (solved positions only)
MST2  : Mean solution time (solved and unsolved positions)
RIndex: Score according to solution time ranking for each position

AMD 8350-FX  -  5sec/move  -  512Mb Hash  -  Fritz 15  -  Windows 10 / 64bit

Der Output jeder Engine bei jeder Aufgabenstellung – auf die hundertstel Sekunde genau – lässt sich hier downloaden (PGN-Datei).

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

Computerschach-Beiträge im Glarean Magazin

Ihre Meinung ist willkommen!

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s