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   7042    68.2 %   3287    72/111    2.0s    3.1s   0.69
  2 Komodo 10.4(4CPU)           : 3409    4   6940    66.9 %   3287    68/111    2.1s    3.2s   0.63
  3 Stockfish 8(4CPU)           : 3408    4   6817    66.8 %   3287    64/111    1.8s    3.2s   0.69
  4 Brainfish 190317(4CPU)      : 3407    4   6966    66.6 %   3287    65/111    1.9s    3.2s   0.65
  5 Houdini 5.01(4CPU)          : 3401    4   6517    65.6 %   3288    62/111    2.0s    3.3s   0.65
  6 Komodo 10.3(4CPU)           : 3395    4   6715    65.0 %   3288    60/111    1.9s    3.3s   0.62
  7 Stockfish 8(1CPU)           : 3388    4   6159    64.0 %   3288    57/111    2.0s    3.4s   0.58
  8 Fizbo 1.9(4CPU)             : 3379    4   5809    62.3 %   3292    50/111    1.7s    3.5s   0.56
  9 Houdini 5.01(1CPU)          : 3379    4   5802    62.6 %   3290    54/111    2.1s    3.6s   0.55
 10 Komodo 10.4(1CPU)           : 3379    4   6098    62.7 %   3289    56/111    2.3s    3.6s   0.47
 11 Komodo 10.3(1CPU)           : 3377    4   5766    62.3 %   3290    52/111    1.9s    3.6s   0.56
 12 Stockfish 7(1CPU)           : 3371    4   5908    61.4 %   3290    53/111    2.3s    3.7s   0.46
 13 Komodo 10(1CPU)             : 3365    5   5373    60.3 %   3293    48/111    2.1s    3.7s   0.51
 14 DeepShredder 13(4CPU)       : 3360    4   5349    59.7 %   3292    46/111    2.0s    3.8s   0.44
 15 Houdini 4(4CPU)             : 3358    5   5410    59.3 %   3293    45/111    1.9s    3.8s   0.46
 16 Komodo 9.42(1CPU)           : 3357    5   5298    59.2 %   3292    45/111    2.1s    3.8s   0.43
 17 Andscacs 0.90(4CPU)         : 3354    5   5223    58.6 %   3293    42/111    1.8s    3.8s   0.44
 18 Stockfish 6(1CPU)           : 3351    5   4924    58.2 %   3293    42/111    1.9s    3.8s   0.50
 19 Komodo 9.2(1CPU)            : 3350    5   5157    58.2 %   3293    44/111    2.2s    3.9s   0.46
 20 Fritz 15(4CPU)              : 3346    5   5126    57.2 %   3295    41/111    2.0s    3.9s   0.39
 21 Komodo 9(1CPU)              : 3345    5   5010    57.4 %   3293    40/111    1.9s    3.9s   0.44
 22 Andscacs 0.89(4CPU)         : 3344    5   5083    57.2 %   3294    43/111    2.2s    3.9s   0.39
 23 Fizbo 1.9(1CPU)             : 3343    5   5237    56.7 %   3296    42/111    2.2s    3.9s   0.38
 24 Critter 1.6a(4CPU)          : 3342    5   5104    56.7 %   3295    41/111    2.2s    4.0s   0.42
 25 Gull 3(4CPU)                : 3338    5   4977    56.0 %   3295    40/111    2.1s    4.0s   0.39
 26 Protector 1.9.0(4CPU)       : 3336    5   4991    55.9 %   3295    39/111    2.2s    4.0s   0.40
 27 Stockfish 5(1CPU)           : 3335    5   4826    55.8 %   3294    41/111    2.4s    4.1s   0.42
 28 Andscacs 0.87(4CPU)         : 3327    5   4888    54.5 %   3296    36/111    2.1s    4.1s   0.36
 29 Houdini 4(1CPU)             : 3326    5   4475    54.1 %   3297    34/111    1.8s    4.0s   0.46
 30 Fire 5(1CPU)                : 3324    5   4576    53.9 %   3297    33/111    1.7s    4.0s   0.39
 31 DeepShredder 13(1CPU)       : 3324    5   4601    53.9 %   3297    36/111    2.2s    4.1s   0.30
 32 Komodo 8(1CPU)              : 3319    5   4585    53.3 %   3296    33/111    2.0s    4.1s   0.38
 33 Critter 1.6a(1CPU)          : 3316    5   4569    52.5 %   3298    33/111    2.2s    4.2s   0.36
 34 Andscacs 0.89(1CPU)         : 3314    5   4689    52.4 %   3297    34/111    2.4s    4.2s   0.28
 35 Nirvanachess 2.3(4CPU)      : 3314    5   4348    52.2 %   3298    33/111    2.1s    4.1s   0.35
 36 Andscacs 0.86(4CPU)         : 3311    5   4381    51.7 %   3299    32/111    2.2s    4.2s   0.35
 37 Equinox 3.30(4CPU)          : 3310    6   4419    51.3 %   3300    32/111    2.0s    4.1s   0.36
 38 Equinox 3.30(1CPU)          : 3304    6   4342    50.5 %   3301    31/111    2.2s    4.2s   0.33
 39 Naum 4.6(4CPU)              : 3302    5   4249    50.2 %   3301    33/111    2.6s    4.3s   0.32
 40 Fizbo 1.8(1CPU)             : 3302    6   4416    50.3 %   3299    28/111    1.8s    4.2s   0.30
 41 Fritz 15(1CPU)              : 3299    5   4255    49.8 %   3301    30/111    2.2s    4.3s   0.30
 42 Spark 1.0(4CPU)             : 3299    6   4618    49.7 %   3301    30/111    2.5s    4.3s   0.23
 43 Andscacs 0.87(1CPU)         : 3298    5   4230    49.7 %   3301    31/111    2.4s    4.3s   0.28
 44 DeepRybka 4.1(1CPU)         : 3294    6   4228    48.8 %   3303    27/111    2.1s    4.3s   0.30
 45 Andscacs 0.86(1CPU)         : 3293    6   4188    48.9 %   3300    29/111    2.3s    4.3s   0.32
 46 Texel 1.06(4CPU)            : 3292    6   4277    48.7 %   3301    28/111    2.1s    4.3s   0.24
 47 Nirvanachess 2.3(1CPU)      : 3292    6   4177    48.7 %   3301    28/111    2.2s    4.3s   0.27
 48 Hannibal 1.7(1CPU)          : 3291    6   4027    48.6 %   3301    24/111    1.2s    4.2s   0.37
 49 Arasan 19.2(4CPU)           : 3291    6   4350    48.4 %   3302    29/111    2.5s    4.4s   0.26
 50 Gull 3(1CPU)                : 3290    6   4159    48.5 %   3300    26/111    1.8s    4.3s   0.30
 51 Protector 1.9(1CPU)         : 3286    6   4049    47.8 %   3301    25/111    1.9s    4.3s   0.28
 52 BlackMamba 2.0(4CPU)        : 3281    6   3913    46.9 %   3302    25/111    1.9s    4.3s   0.32
 53 Fizbo 1.7(1CPU)             : 3280    6   4143    46.7 %   3303    23/111    1.7s    4.3s   0.27
 54 iCE 3.0(1CPU)               : 3280    6   3983    46.6 %   3303    24/111    1.9s    4.3s   0.28
 55 Protector 1.6(1CPU)         : 3280    6   4049    46.7 %   3303    26/111    2.5s    4.4s   0.22
 56 Protector 1.8(1CPU)         : 3279    6   3984    46.6 %   3302    25/111    2.1s    4.3s   0.29
 57 Chiron 4(4CPU)              : 3271    6   3991    45.3 %   3304    24/111    2.3s    4.4s   0.23
 58 DeepJunior 13.3(1CPU)       : 3271    6   3911    45.0 %   3306    21/111    1.6s    4.4s   0.28
 59 RybkaWinFinder 2.2(4CPU)    : 3271    6   3964    45.0 %   3306    22/111    1.9s    4.4s   0.27
 60 Booot 6.1(1CPU)             : 3270    5   4096    45.5 %   3302    28/111    3.3s    4.6s   0.10
 61 Nirvanachess 2.2(1CPU)      : 3270    6   3915    45.3 %   3303    23/111    2.0s    4.4s   0.22
 62 Texel 1.06(1CPU)            : 3270    6   4016    45.1 %   3304    25/111    2.8s    4.5s   0.21
 63 Chiron 3.01(4CPU)           : 3270    6   3977    44.9 %   3305    25/111    2.7s    4.5s   0.22
 64 DeepFritz 10(4CPU)          : 3266    6   4075    44.5 %   3305    23/111    2.5s    4.5s   0.19
 65 Chiron 2(1CPU)              : 3265    6   3980    44.2 %   3306    22/111    2.2s    4.4s   0.18
 66 Rybka 3(1CPU)               : 3265    6   3803    44.3 %   3305    21/111    2.0s    4.4s   0.29
 67 Chiron 1.5(1CPU)            : 3264    6   3954    44.1 %   3305    22/111    2.4s    4.5s   0.19
 68 Naum 4.6(1CPU)              : 3263    6   3780    44.0 %   3305    20/111    1.7s    4.4s   0.28
 69 Texel 1.05(1CPU)            : 3257    6   3749    42.8 %   3307    22/111    2.4s    4.5s   0.22
 70 Arasan 19.1(4CPU)           : 3256    6   3780    42.8 %   3307    21/111    2.4s    4.5s   0.23
 71 Hakkapeliitta 3.0(1CPU)     : 3254    6   3894    42.7 %   3305    23/111    2.8s    4.5s   0.15
 72 Chiron 4(1CPU)              : 3251    6   3870    42.1 %   3306    22/111    2.9s    4.6s   0.15
 73 Vajolet2 2.2(1CPU)          : 3251    6   3697    42.1 %   3306    22/111    2.8s    4.6s   0.17
 74 Arasan 19.2(1CPU)           : 3250    6   3733    41.9 %   3307    22/111    2.8s    4.6s   0.21
 75 Arasan 19.1(1CPU)           : 3249    6   3780    41.7 %   3307    18/111    1.9s    4.5s   0.16
 76 Spark 1.0(1CPU)             : 3244    6   3774    41.1 %   3306    20/111    2.8s    4.6s   0.16
 77 DeepFritz 10(1CPU)          : 3240    6   3641    40.2 %   3309    16/111    1.7s    4.5s   0.20
 78 ZappaMexico II(1CPU)        : 3238    6   3558    39.8 %   3309    15/111    1.2s    4.5s   0.24
 79 Senpai 1.0(1CPU)            : 3238    6   3600    40.1 %   3307    17/111    2.0s    4.5s   0.19
 80 Naum 4(1CPU)                : 3234    6   3531    39.5 %   3309    15/111    1.4s    4.5s   0.21
 81 Fruit 2.3(1CPU)             : 3234    6   3449    39.2 %   3311    15/111    1.4s    4.5s   0.25
 82 Ruffian 1.0.1(1CPU)         : 3234    6   3631    39.3 %   3309    15/111    1.8s    4.6s   0.18
 83 RodentII 0.9.64(1CPU)       : 3225    6   3480    38.0 %   3310    17/111    2.8s    4.7s   0.15
 84 Quazar 0.4(1CPU)            : 3222    6   3470    37.7 %   3309    15/111    2.3s    4.6s   0.13
 85 Spike 1.4(1CPU)             : 3222    6   3568    37.7 %   3309    15/111    2.4s    4.7s   0.15
 86 Fruit 2.2.1(1CPU)           : 3221    6   3446    37.4 %   3311    13/111    1.5s    4.6s   0.21
 87 Junior 13.8Yokohama(1CPU)   : 3216    6   3424    36.8 %   3310    12/111    1.1s    4.6s   0.18
 88 Amoeba 1.2(1CPU)            : 3215    6   3393    36.3 %   3312    14/111    2.3s    4.7s   0.16
 89 Komodo 1.3(1CPU)            : 3212    6   3328    36.2 %   3310    14/111    2.1s    4.6s   0.14
 90 Deuterium 14.3.34.130(1CPU) : 3206    6   3315    35.3 %   3311    12/111    1.7s    4.6s   0.16
 91 Tao5.7b (1CPU)              : 3205    6   3370    35.2 %   3311    13/111    2.2s    4.7s   0.17
 92 Tao 5.6(1CPU)               : 3204    6   3352    34.9 %   3312    12/111    1.9s    4.7s   0.16
 93 Wasp 1.25(1CPU)             : 3196    6   3232    33.8 %   3313    13/111    2.7s    4.7s   0.12
 94 Tao 5.4(1CPU)               : 3190    6   3325    33.0 %   3313    10/111    2.0s    4.7s   0.11
 95 Gaviota 1.0(1CPU)           : 3189    6   3201    33.0 %   3312    11/111    2.0s    4.7s   0.15
 96 Laser 1.2(1CPU)             : 3188    6   3259    32.8 %   3313    10/111    2.0s    4.7s   0.13
 97 ChessMind 0.82(1CPU)        : 3186    6   3229    32.4 %   3313     9/111    1.4s    4.7s   0.14
 98 Minko 1.3(1CPU)             : 3176    6   3088    31.0 %   3315     9/111    1.5s    4.7s   0.15
 99 SmarThink 1.70(1CPU)        : 3176    6   3121    31.0 %   3315     8/111    1.1s    4.7s   0.15
100 Ktulu 9(1CPU)               : 3176    6   3161    31.1 %   3314     8/111    1.4s    4.7s   0.13
101 Murka 3(1CPU)               : 3172    6   3199    30.7 %   3313     8/111    1.9s    4.8s   0.08
102 Octochess r5190             : 3143    6   3005    26.9 %   3316     6/111    2.6s    4.9s   0.07

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