Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Software für Schachprogrammtests
1 2 Previous Next  
- - By Frank Sanders Date 2023-01-08 11:55 Upvotes 1
Auf der Suche für ein Programm für Computerturniere habe ich gefunden, dass dafür hauptsächlich cutechess-cli verwendet wird. Ich habe aber auch ein Programm littleblitzer gefunden. Meine Frage wäre, hat eines der beiden Programme entscheidende Vorteile oder sind sie etwa gleichwertig?
Rein vom Lesen der Anleitung kommt mir littleblitzer einfacher zu bedienen vor, spricht etwas gegen little blitzer?
Parent - - By Stefan Pohl Date 2023-01-09 07:21 Edited 2023-01-09 07:46 Upvotes 1
Frank Sanders schrieb:

Auf der Suche für ein Programm für Computerturniere habe ich gefunden, dass dafür hauptsächlich cutechess-cli verwendet wird. Ich habe aber auch ein Programm littleblitzer gefunden. Meine Frage wäre, hat eines der beiden Programme entscheidende Vorteile oder sind sie etwa gleichwertig?
Rein vom Lesen der Anleitung kommt mir littleblitzer einfacher zu bedienen vor, spricht etwas gegen little blitzer?


Einiges.
Ich habe LittleBlitzer früher viel genutzt. bin aber auf cutechess-cli umgestiegen. Erstens schreibt LB keine Rechentiefen und Evals und Bedenkzeiten in die PGN-Partien.
Zweitens hat LB 2 üble Bugs:
1) Enthält eine pgn-Eröffnungsvorgabe-Zugfolge einen en-passant Zug, wird der geschlagene Bauer nicht vom Brett genommen. Man muß also entweder sicher sein, daß die Eröffnungsvorgaben keinen ep-Zug enthalten oder man muß eine epd-Endstellung (FEN-Code) benutzen, statt der pgn-Zugfolgen Vorgabe.
2) Die 50 Zug Remisregel ist falsch implementiert, es gibt nämlich Remis erst nach 101 plies, also 50.5 Zügen.

Außerdem schreibt LB die Partien ins result.pgn-File in der Reihenfolge, in der sie beendet wurden. Währen cutechess-cli sie in der Reihenfolge dort speichert, in der sie gestartet wurden. Hat man also ein TestGauntlet einer Engine und läßt mehrere Partien parallel laufen, ist das Ergebnis-File der LB chaotisch und unsortiert.

Weiterer großer Vorteil von cutechess-cli: Man kann mehrere Testruns in einem .bat-File nacheinander auflisten und diese werden dann automatisch nacheinander abgearbeitet!

Ergo: cutechess-cli nutzen, nicht LittleBlitzer. Empfehle ich dringend!
Parent - - By Stefan Pohl Date 2023-01-09 07:35 Edited 2023-01-09 07:37 Upvotes 1
Außerdem ist cutechess-cli total simpel in der Benutzung, wenn man es richtig anstellt. Falls allerdings nicht, wirds kryptisch.

Man erstellt sich einfach ein Textfile mit dem Editor, wo man alle Engines mit ihren Optionen einzeln auflistet und eine oder mehrere Zeilen mit den restlichen Turniersettings. Hier am Ende des Postings mal mein File, für meine SPCC-Rangliste.

Für ein Testgauntlet setzt man sich nun einfach die Befehlszeile per copy&paste zusammen. Also zunächst der Befehl cutechess-cli.exe, dann die Engines, dann die Turniersettings. Als Beispiel hier nur mal ein Gauntlet von Stockfish gegen KomodoDragon und Berserk (wichtig: Am Ende der Zeilen muß immer ein Leerzeichen stehen!):

cutechess-cli.exe
-engine name="Stockfish 15.1 221204" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="stockfish_15.1_221204_avx2.exe" proto=uci
-engine name="KomodoDragon 3.2 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="dragon-3.2-64bit-avx2.exe" proto=uci
-engine name="Berserk 10 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="berserk-10-x64-avx2.exe" proto=uci
-pgnout "results.pgn" -event "CPU-engine testing" -each tc=/180+1 timemargin=2000 -recover -concurrency 20 -tournament gauntlet -ratinginterval 10 -wait 500 -tb "C:/Cutechess/syzygy_5" -tbpieces 5 -games 2 -rounds 500 -openings file="C:/Cutechess/Hert500.pgn" format=pgn order=sequential policy=round -repeat

Hat man diese Zeilen, macht man daraus einfach eine lange Zeile, die sieht dann monströs aus, aber so kann man eigentlich nix falsch machen:
cutechess-cli.exe -engine name="Stockfish 15.1 221204" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="stockfish_15.1_221204_avx2.exe" proto=uci -engine name="KomodoDragon 3.2 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="dragon-3.2-64bit-avx2.exe" proto=uci -engine name="Berserk 10 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="berserk-10-x64-avx2.exe" proto=uci -pgnout "results.pgn" -event "CPU-engine testing" -each tc=/180+1 timemargin=2000 -recover -concurrency 20 -tournament gauntlet -ratinginterval 10 -wait 500 -tb "C:/Cutechess/syzygy_5" -tbpieces 5 -games 2 -rounds 500 -openings file="C:/Cutechess/Hert500.pgn" format=pgn order=sequential policy=round -repeat

Diese monströse Zeile kopiert man in ein .bat File und startet das per Doppelklick und es geht los...

PS: Man kann hinter diese Befehlszeile in dem .bat File noch
shutdown -S
anfügen, dann fährt der PC herunter, wenn das Turnier durch ist.

Wenn man so vorgeht, kann man Testtuniere sehr einfach und schnell aufsetzen und starten, das geht selbst mit LittleBlitzer nicht so einfach und schnell.

Hier mein SPCC-Ranglisten Vorgabefile, aus dem ich meine Testgauntlets "zusammenbaue":
Gegner:
-engine name="Stockfish 15.1 221204" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="stockfish_15.1_221204_avx2.exe" proto=uci
-engine name="KomodoDragon 3.2 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="dragon-3.2-64bit-avx2.exe" proto=uci
-engine name="KomodoDragon 3.2 MCTS" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=128 option.Threads=1 option."Use MCTS"=true option."MCTS Hash"=256 cmd="dragon-3.2-64bit-avx2.exe" proto=uci
-engine name="Berserk 10 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="berserk-10-x64-avx2.exe" proto=uci
-engine name="Revenge 3.0 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="Revenge_3.0_avx2.exe" proto=uci
-engine name="Koivisto 8.13 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="Koivisto_8.13_avx2.exe" proto=uci
-engine name="RubiChess 221120 avx2" dir="C:/Cutechess/Engines/AB_testruns/RubiChess_221120" option.Hash=256 option.Threads=1 cmd="RubiChess_221120_avx2.exe" proto=uci
-engine name="Ethereal 13.75 nnue" dir="C:/Cutechess/Engines/AB_testruns/Ethereal_13.75" option.EvalFile=e1375.standard.nnue option.Hash=256 option.Threads=1 cmd="Ethereal-13.75-avx2.exe" proto=uci
-engine name="Rebel 16.1" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="Rebel-16.1.exe" proto=uci
-engine name="Fire 8.NN avx2" dir="C:/Cutechess/Engines/AB_testruns/Fire_8.NN_x64" option.Hash=256 option.Threads=1 cmd="Fire_8.NN_x64_avx2.exe" proto=uci
-engine name="Seer 2.6.0 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="seer_v2.6_x64_avx2_popcnt.exe" proto=uci
-engine name="Slow Chess 2.9 avx2" cmd="slow64-avx2.exe" dir="C:/Cutechess/Engines/AB_testruns/SlowChess-2.9" option.Hash=256 option.Threads=1 proto=uci
-engine name="Stockfish final HCE" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="stockfish_finalHCE_modern.exe" proto=uci
-engine name="Fire 8.NN MCTS avx2" dir="C:/Cutechess/Engines/AB_testruns/Fire_8.NN.MC.3_x64" option.MCTS=true option.NnueEvalFile="C:/Cutechess/Engines/AB_testruns/Fire_8.NN.MC.3_x64/raptor.bin" option.Hash=256 option.Threads=1 cmd="Fire_8.NN.MC.3_x64_avx2.exe" proto=uci
-engine name="rofChade 3.0 avx2" dir="C:/Cutechess/Engines/AB_testruns/Rofchade_3.0" option.Hash=256 option.Threads=1 cmd="rofchade_3.0_avx2.exe" proto=uci
-engine name="Minic 3.32 znver3" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="minic_3.32_mingw_x64_znver3.exe" proto=uci
-engine name="Igel 3.2.0 popavx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="igel_3.2.0_popcnt_avx2.exe" proto=uci
-engine name="Arasan 23.4 avx2" dir="C:/Cutechess/Engines/AB_testruns/Arasan_23.4" option.Hash=256 option.Threads=1 cmd="arasan_23.4_avx2.exe" proto=uci
-engine name="PowerFritz 18 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="PowerFritz_18_AVX2.exe" proto=uci
-engine name="Black Marlin 7.0 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="blackmarlin_7.0_avx2.exe" proto=uci
-engine name="Nemorino 6.00 avx2" dir="C:/Cutechess/Engines/AB_testruns/Nemorino_6" option.Hash=256 option.Threads=1 option.UseNNUE=true cmd="nemorino_6.00_avx2.exe" proto=uci
-engine name="Clover 3.2.1 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="Clover.3.2.1-avx2.exe" proto=uci
-engine name="Wasp 6.00 avx" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="Wasp_6.00_avx.exe" proto=uci
-engine name="Devre 4.0 avx2" dir="C:/Cutechess/Engines/AB_testruns" cmd="devre_4.0-avx2.exe" proto=uci
-engine name="Caissa 1.4 avx2" dir="C:/Cutechess/Engines/AB_testruns/Caissa_1.4" option.Hash=256 option.Threads=1 cmd="Caissa_1.4_AVX2_BMI2.exe" proto=uci
-engine name="Halogen 11.4 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="Halogen11.4_popcnt_avx2.exe" proto=uci
-engine name="Velvet 5.0.0 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="Velvet_5.0.0_avx2.exe" proto=uci
-engine name="Marvin 6.1.0 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="marvin_6.1.0_avx2.exe" proto=uci
-engine name="Tucano 10.00 avx2" dir="C:/Cutechess/Engines/AB_testruns/Tucano_10" option.Hash=256 option.Threads=1 cmd="tucano_10_avx2.exe" proto=uci
-engine name="Coiled 1.1 avx2" dir="C:/Cutechess/Engines/AB_testruns/Coiled_1.1" option.Hash=256 cmd="Coiled_1.1_x64.exe" proto=uci
-engine name="Scorpio 3.0.14d cpu" dir="C:/Cutechess/Engines/AB_testruns/Scorpio/bin/Windows" cmd="scorpio.exe" proto=uci
-engine name="Smallbrain 6.0 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="smallbrain6.0_x86-64-avx2.exe" proto=uci
-engine name="Weiss 220905 popc" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="weiss_220905_popcnt.exe" proto=uci
-engine name="Zahak 10.0 avx" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="zahak_10.0_avx.exe" proto=uci
-engine name="Dragon 3 aggressive" dir="C:/Cutechess/Engines/AB_testruns" option.Personality=Aggressive option.Hash=256 option.Threads=1 cmd="dragon-3-64bit-avx2.exe" proto=uci
-engine name="Gogobello 3 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="gogobello_3.0_avx2.exe" proto=uci
-engine name="Counter 5.0 amd64" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="counter_5.0_amd64.exe" proto=uci
-engine name="Alexandria 3.1.0" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="Alexandria-3.1.0.exe" proto=uci
-engine name="Lc0 0.29 dnll 791921" dir="C:/Cutechess/Engines/AB_testruns/Lc0_cpu_791921" option.Threads=1 cmd="lc0.exe" proto=uci
-engine name="Combusken 2.0.0 amd64" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="combusken_2.0.0_amd64.exe" proto=uci
-engine name="Mantissa 3.7.2 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="mantissa_3.7.2_avx2.exe" proto=uci
-engine name="Stash 34.0 popc" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="stash-34.0-windows-x86_64-modern.exe" proto=uci
-engine name="Chiron 5 x64" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 option.Threads=1 cmd="Chiron-5-64bit.exe" proto=uci
-engine name="Viridithas 6.0.0 avx2" dir="C:/Cutechess/Engines/AB_testruns" option.Hash=256 cmd="viridithas6.0.0-avx2.exe" proto=uci
-engine name="Danasah 9.0 avx2" dir="C:/Cutechess/Engines/AB_testruns/danasah_9.0" option."EndGames Tablebases"=None option.Hash=256 cmd="danasah90_64bit_avx2.exe" proto=uci

Turniersettings:
-pgnout "results.pgn" -event "CPU-engine testing" -each tc=/180+1 timemargin=2000 -recover -concurrency 20 -tournament gauntlet -ratinginterval 10 -wait 500 -tb "C:/Cutechess/syzygy_5" -tbpieces 5 -games 2 -rounds 500 -openings file="C:/Cutechess/Hert500.pgn" format=pgn order=sequential policy=round -repeat
Parent - - By Kurt Utzinger Date 2023-01-09 10:57 Upvotes 1
Stefan Pohl schrieb:

Außerdem ist cutechess-cli total simpel in der Benutzung, wenn man es richtig anstellt. Falls allerdings nicht, wirds kryptisch.


Guten Morgen Stefan

Bei allem Respekt: Mir scheint das alles andere als "... total simpel in der Benutzung ..."
Mit deiner guten Anleitung (danke dafür) kannst du hoffentlich einige Freaks von Cute Chess
überzeugen. Für mich ist es aber eigentlich klar, dass sich Otto-Normal-User total überfordert
fühlen. Gerne würde ich in diesem Forum dazu (gegensätzliche) Meinungen hören/lesen. Bin
echt gespannt darauf.

Freundliche Grüsse
Kurt
Parent - - By Stefan Pohl Date 2023-01-09 11:43 Edited 2023-01-09 11:52 Upvotes 1
Du musst dir klarmachen, dass die einzelnen Spezifikationszeilen der Engines in meinem Vorlagefile in einem Editor ohne Zeilenumbrüche als Einzeiler auf dem Bildschirm zu sehen sind. Damit kopiert man nur diese einzelne Zeile pro Engine und hängt dann nur noch die Turniersettings an. Damit kann ich einen Testrun in geschätzt 30 Sekunden aufsetzen und starten.
Das geht in keiner GUI so schnell und einfach.
Und für mich als Vieltester ist es Gold wert, dass ich mehrere Testruns nacheinander in ein .bat File schreiben kann, die dann automatisch direkt nacheinander abgearbeitet werden. Denn oft enden Testruns mitten in der Nacht oder, wenn ich nicht daheim bin. Das spart sehr viel Zeit. Auch das kann man mit keiner anderen GUI machen. Auch nicht mit LittleBlitzer.
Und, wenn man wie ich 20 Partien gleichzeitig laufen lässt, hat jede grafische Darstellung, also die Benutzung einer "echten" GUI, sowieso nicht nur keinen Sinn, sondern erzeugt nur unnötigen Rechenaufwand auf dem PC.
Damit ist cutechess-cli für jeden ernsthaften Tester (was ja bedeutet, sehr viele Partien zu spielen, um statistisch brauchbare Ergennisse zu erhalten) meiner Meinung nach momentan alternativlos. Schlicht weil es keine brauchbare Alternative gibt. Ich schaffe so auf einem PC gut 3500 Partien mit 3min+1sec Bedenkzeit pro 24 Stunden. Gut sortiert und alle Züge mit Eval, Rechentiefe und Zugzeit. Besser gehts schlicht nicht.
Parent - By Lothar Jung Date 2023-01-09 12:00 Edited 2023-01-09 12:05
Volle Zustimmung.
Hinsichtlich Lc0 Netz und Engine Tests auf Discord wird cutechess-cli fast ausschließlich verwandt.
Cutechess GUI stand bei der Entwicklung der BanksiaGUI bzw. des Tournament Manager Pate.

Ich hatte Cutechess einen eigenen Thread gewidmet.

Lothar
Parent - - By Kurt Utzinger Date 2023-01-09 17:56 Upvotes 1
Stefan Pohl schrieb:

Du musst dir klarmachen, dass die einzelnen Spezifikationszeilen der Engines in meinem Vorlagefile in einem Editor ohne Zeilenumbrüche als Einzeiler auf dem Bildschirm zu sehen sind. Damit kopiert man nur diese einzelne Zeile pro Engine und hängt dann nur noch die Turniersettings an. Damit kann ich einen Testrun in geschätzt 30 Sekunden aufsetzen und starten.
Das geht in keiner GUI so schnell und einfach.
Und für mich als Vieltester ist es Gold wert, dass ich mehrere Testruns nacheinander in ein .bat File schreiben kann, die dann automatisch direkt nacheinander abgearbeitet werden. Denn oft enden Testruns mitten in der Nacht oder, wenn ich nicht daheim bin. Das spart sehr viel Zeit. Auch das kann man mit keiner anderen GUI machen. Auch nicht mit LittleBlitzer.
Und, wenn man wie ich 20 Partien gleichzeitig laufen lässt, hat jede grafische Darstellung, also die Benutzung einer "echten" GUI, sowieso nicht nur keinen Sinn, sondern erzeugt nur unnötigen Rechenaufwand auf dem PC.
Damit ist cutechess-cli für jeden ernsthaften Tester (was ja bedeutet, sehr viele Partien zu spielen, um statistisch brauchbare Ergennisse zu erhalten) meiner Meinung nach momentan alternativlos. Schlicht weil es keine brauchbare Alternative gibt. Ich schaffe so auf einem PC gut 3500 Partien mit 3min+1sec Bedenkzeit pro 24 Stunden. Gut sortiert und alle Züge mit Eval, Rechentiefe und Zugzeit. Besser gehts schlicht nicht.


Nach meiner Einschätzung bringen 90% der Otto-Normal-User cutechess-cli nicht
zum Laufen, weil sie schon an der Installation unter Windows scheitern. Interessant,
aber erwartungsgemäss, dass sich bislang lauter "Experten" gemeldet haben.
Mfg
Kurt
Parent - By Lothar Jung Date 2023-01-09 18:42 Edited 2023-01-09 18:48 Upvotes 1
Nicht zu vernachlässigen ist der geringere Resourcenbedarf bei RAM und Prozessor, insbesondere bei schwächeren Rechnern bzw. Notebooks sowie Energie.
Unter Linux sogar noch etwas weniger.
Bei Lc0 Engines wird - mangels Bildwiedergabe durch die GUI - auf die GPU nicht (zusätzlich) zugegriffen.
Parent - - By Peter Martan Date 2023-01-09 18:48 Edited 2023-01-09 19:29
Bei cutechess cli ist nichts zu installieren, Kurt. Da startest du die App, die du als fertiges Compile runterlädst (wenn du dir nicht dein eigenes machst, was angeblich auch nicht so schwierig ist wie für ein Engine,  z.B. soll eines für Linux angeblich noch etwas schneller sein als für Windows), weiß nur gar nicht, welches man da momentan am besten woher bekommt, Stefan Pohl hat hier 2019 mal

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=123300#pid123300

einen direkten Download- Link gepostet, der ist aber nicht mehr aktiv, auf dieser seiner aktellen Download- Site

https://www.sp-cc.de/downloads--links.htm

gibt's einen neuen, ich hab mal runtergeladen von dort, aber noch nichts ausprobiert, ein Cutechess-cli_help.txt ist aber ebenso wie ein Hert- Set dabei.

Thomas Plaschke hatte, glaube ich, damals (siehe Thread vom ersten Link) das Compile gemacht, weiß nicht, ob's da überhaupt schon ein fertiges neueres gibt. die jüngste Version von cli ist, glaube ich 1.2, der Versions- Text von Stefans Link gibt 1.1.0 an.

Diese App kann halt nichts anderes, als Eng-Eng-Matches steuern, aber wie das so mit den speziellen Anwendungen ist, musst du ja dafür auch sonst nichts lernen als die Syntax für den Anlassfall, der dir vorschwebt.

https://www.chessprogramming.org/Cutechess-cli

Man kann's insofern meiner Meinung nach auch nicht wirklich mit einem GUI vergleichen. Wenn du dir überlegst, was du dir da alles an Menü- Befehlen und Eigenarten der Benutzeroberfläche aneigenen musst, bis du alles nutzen kannst, was es anbietet, ist das eigentlich viel komplizierter zu lernen, du hast halt mehr Erfahrung darin vermutlich, aber für Script- Kundige ist ein bisschen Tippen in der Regel das viel kleinere Problem als sich an ein neues graphisches Schema wie das eines neuen GUIs zu gewöhnen, das ja eigentlich erst recht immer auch ein Denkschema (des Programmierers) ür sich darstellt, halt eines in klickbaren Menüs und Icons statt in Ziffern und Buchstaben. Aber die Vielfalt an Programm- Abläufen, die ein durchschnittlich komplettes GUI bietet, ist mit dem einer reinen Eng-Eng-Match-Steuer-App allein rein vom programmtechnischen Aufwand her nicht in einer Kategorie.
Parent - By Stefan Pohl Date 2023-01-10 07:38 Upvotes 1
Peter Martan schrieb:


Thomas Plaschke hatte, glaube ich, damals (siehe Thread vom ersten Link) das Compile gemacht, weiß nicht, ob's da überhaupt schon ein fertiges neueres gibt. die jüngste Version von cli ist, glaube ich 1.2, der Versions- Text von Stefans Link gibt 1.1.0 an.



Ja, es gibt eine neuere Version, aber die Version von meiner Website läuft stabil und problemlos mit klassischem Schach (neuere Version unterstützt wohl noch mehr Schachvaraianten). Insofern sage ich da: Never change a running system...
Die Version von meiner Website war seinerzeit wohl die erste, die es ermöglichte, Engine-Testgauntlets zu spielen, mit einem Eröffnungsfile (z.B. eben das HERT 500 set), dergestalt, daß diese Eröffnungen in jedem einzelnen head-to-head Vergleich dieses Testgauntlets mit vertauschten Farben wiederholt, sequentiell abgespielt wurden. Das ging mit älteren Versionen nocht nicht, weswegen diese für mich auch unbrauchbar waren und mit zur LittleBlitzerGUI "zwangen".
Parent - - By Stefan Pohl Date 2023-01-10 07:31
Kurt Utzinger schrieb:

Stefan Pohl schrieb:

Du musst dir klarmachen, dass die einzelnen Spezifikationszeilen der Engines in meinem Vorlagefile in einem Editor ohne Zeilenumbrüche als Einzeiler auf dem Bildschirm zu sehen sind. Damit kopiert man nur diese einzelne Zeile pro Engine und hängt dann nur noch die Turniersettings an. Damit kann ich einen Testrun in geschätzt 30 Sekunden aufsetzen und starten.
Das geht in keiner GUI so schnell und einfach.
Und für mich als Vieltester ist es Gold wert, dass ich mehrere Testruns nacheinander in ein .bat File schreiben kann, die dann automatisch direkt nacheinander abgearbeitet werden. Denn oft enden Testruns mitten in der Nacht oder, wenn ich nicht daheim bin. Das spart sehr viel Zeit. Auch das kann man mit keiner anderen GUI machen. Auch nicht mit LittleBlitzer.
Und, wenn man wie ich 20 Partien gleichzeitig laufen lässt, hat jede grafische Darstellung, also die Benutzung einer "echten" GUI, sowieso nicht nur keinen Sinn, sondern erzeugt nur unnötigen Rechenaufwand auf dem PC.
Damit ist cutechess-cli für jeden ernsthaften Tester (was ja bedeutet, sehr viele Partien zu spielen, um statistisch brauchbare Ergennisse zu erhalten) meiner Meinung nach momentan alternativlos. Schlicht weil es keine brauchbare Alternative gibt. Ich schaffe so auf einem PC gut 3500 Partien mit 3min+1sec Bedenkzeit pro 24 Stunden. Gut sortiert und alle Züge mit Eval, Rechentiefe und Zugzeit. Besser gehts schlicht nicht.


Nach meiner Einschätzung bringen 90% der Otto-Normal-User cutechess-cli nicht
zum Laufen, weil sie schon an der Installation unter Windows scheitern. Interessant,
aber erwartungsgemäss, dass sich bislang lauter "Experten" gemeldet haben.
Mfg
Kurt


cutechess-cli ist eine einziges .exe file (plus eine Readme Anleitung). Da gibt es nichts zu installieren. Das verwechselst du wohl mit der cutechess GUI.
Parent - - By Kurt Utzinger Date 2023-01-10 09:12
Stefan Pohl schrieb:

cutechess-cli ist eine einziges .exe file (plus eine Readme Anleitung). Da gibt es nichts zu installieren. Das verwechselst du wohl mit der cutechess GUI.


Hallo Stefan
Nein, das habe ich nicht verwechselt. Die Cute Chess GUI habe ich installiert. Aber nirgends habe ich einen Download
für die cutechess-cli.exe gefunden, bzw. nur die Sourcen für Linux. Deshalb meine Meinung, dass durchschnittliche
Windows-User das nicht installieren können.
Gruss
Kurt
Parent - - By Kurt Utzinger Date 2023-01-10 12:42
Lothar Jung schrieb:

Hier:

<a class='ura' href='https://github.com/cutechess/cutechess/releases/tag/v1.3.0-beta4'>https://github.com/cutechess/cutechess/releases/tag/v1.3.0-beta4</a>


Danke Lothar
Da habe ich offenbar von irgendwo nur das Setup von Cute Chess
heruntergeladen und nicht das ganze Paket, inklusive cutechess-cli.exe.
Gruss
Kurt
Parent - - By Peter Martan Date 2023-01-10 13:07
Was mich aber wieder deshalb etwas wundern würde, Kurt, weil beim Release- Download zum Setup des GUIs

https://github.com/cutechess/cutechess/releases/tag/1.2.0

wird, wenn man das Setup laufen lässt, auch eine cutechess-cli.exe mit entpackt.
Schau vielleicht nochmal in den Ordner des installierten GUIs, bei mir ist's drin und ich glaube, das muss es auch sein, weil das GUI ja auch auf diese .exe zugreift, wie mir scheint.
Parent - By Kurt Utzinger Date 2023-01-10 13:22 Upvotes 1
Peter Martan schrieb:

Was mich aber wieder deshalb etwas wundern würde, Kurt, weil beim Release- Download zum Setup des GUIs

<a class='ura' href='https://github.com/cutechess/cutechess/releases/tag/1.2.0'>https://github.com/cutechess/cutechess/releases/tag/1.2.0</a>

wird, wenn man das Setup laufen lässt, auch eine cutechess-cli.exe mit entpackt.
Schau vielleicht nochmal in den Ordner des installierten GUIs, bei mir ist's drin und ich glaube, das muss es auch sein, weil das GUI ja auch auf diese .exe zugreift, wie mir scheint.


Hallo Peter
In der Tat liegst du richtig ... nachdem ich das erste Mal in meinen
Ordner geschaut habe, finde ich die cutechess-cli.exe ebenfalls.
Bis zur Diskussion in diesem Forum hatte ich nie irgendwelchen
Anlass, mich mit dem Befehlszeilen-Interface herumzuschlagen.
Gruss
Kurt
Parent - - By Peter Martan Date 2023-01-09 12:34 Edited 2023-01-09 12:58
Kurt Utzinger schrieb:

Bei allem Respekt: Mir scheint das alles andere als "... total simpel in der Benutzung ..."
Mit deiner guten Anleitung (danke dafür) kannst du hoffentlich einige Freaks von Cute Chess
überzeugen.

Cute Chess (ohne cli- Zusatz) ist ohnehin ein GUI, wie man's gewöhnt ist, das bietet aber halt nicht alles  so wie cutechess cli, das eine command line app ist. Z.B. habe ich im Cutechess GUI noch nicht einmal eine Möglichkeit gefunden bisher, das Pondern für eng-eng-matches einzuschalten, bin aber auch kein Cutechess Experte. In cutechess cli definierst du "einfach" den UCI- Parameter ponder on für die jeweilige Engine.
Cutechess cli ist so beliebt bei Testern, weil wenn du mal deine Settings im Script eingetragen hast, die Matches auf Knopfdruck laufen, ohne den GUI- Überbau mitzustarten und mitzuschleppen, und um das ist es nicht nur schneller, sondern halt vermutlich schon auch noch einmal eine Nummer stabiler. GUIs stürzen prinzipiell viel leichter und häufiger ab als Engines selbst für sich allein, weil die Hauptschwachstelle der Kommunikation der Engine mit dem GUI wegfällt, die eigentlich 2 solche Schwachstellen darstellt, eine von Seiten der Engine und eine vom GUI.
Parent - - By Wolfgang Battig Date 2023-01-09 13:30 Upvotes 1


Ist da bei Dir das Häkchen gesetzt?
Parent - By Peter Martan Date 2023-01-09 13:44 Edited 2023-01-09 13:50
Wolfgang Battig schrieb:

Ist da bei Dir das Häkchen gesetzt?

Uups, danke Wolfgang!
Parent - - By Peter Martan Date 2023-01-21 09:07 Edited 2023-01-21 09:09
Und weißt du auch, wie's mit cutechess cli geht, Wolfgang?
Das Kommando, das dafür passt, krieg' ich nicht hin.

In der Hilfe- Datei ist's unter den Engine- Options beschrieben

Zitat:
  ponder    Enable pondering if the engine supports it. By default pondering is disabled.


Aber mit option.ponder geht's auf keine Art, die ich schon probiert hab, Groß und Kleinschreibung, =on, =true, geht alles nicht.
Any expert around?

Danke im Voraus.
Parent - - By Thomas Plaschke Date 2023-01-21 09:51
Ohne es ausprobiert zu haben, würde ich erwarten, dass es im Engine-Abschnitt der Cutechess-Parameter so funktioniert:

-engine name="Stockfish 15.1" cmd="C:\Engines\Stockfish-15.1.exe" proto=uci ponder option.Ponder=true

Alternativ kann man es auch bei den Turnieroptionen nach -each eintragen. Bspw.

-each option.Hash=256 option.Threads=2 tc=/180+1.8 timemargin=100 ponder option.Ponder=true

Das letzte Beispiel setzt für alle Engines des Turniers die Optionen Hash, Threads, Ponder und die Zeitvorgabe. Engines, bei denen der UCI-Parameter nicht Ponder heißt (Groß- und Kleinschreibung spielt bei UCI-Parametern aber keine Rolle), bleiben in dieser Variante außen vor.

Ich verstehe die Optionen so, dass cutechess für jede Engine angewiesen werden muss, Pondern zu aktivieren (Cutechess-Parameter ponder). Zusätzlich muss für jede Engine Pondern mit ihrem eigenen Parameter aktiviert werden (für Stockfish mit: option.Ponder=true).

Haftungsausschluss: Ich erinnere daran, dass ich es noch nicht ausprobiert habe.

Viele Grüße
Th. Plaschke
Parent - - By Peter Martan Date 2023-01-21 10:00 Edited 2023-01-21 10:20
Thomas Plaschke schrieb:

Ohne es ausprobiert zu haben, würde ich erwarten, dass es im Engine-Abschnitt der Cutechess-Parameter so funktioniert:

<code>-engine name="Stockfish 15.1" cmd="C:\Engines\Stockfish-15.1.exe" proto=uci ponder option.Ponder=true</code>

Alternativ kann man es auch bei den Turnieroptionen nach <code>-each</code> eintragen. Bspw.

<code>-each option.Hash=256 option.Threads=2 tc=/180+1.8 timemargin=100 ponder option.Ponder=true</code>

Das letzte Beispiel setzt für alle Engines des Turniers die Optionen Hash, Threads, Ponder und die Zeitvorgabe. Engines, bei denen der UCI-Parameter nicht <code>Ponder</code> heißt (Groß- und Kleinschreibung spielt bei UCI-Parametern aber keine Rolle), bleiben in dieser Variante außen vor.

Ich verstehe die Optionen so, dass cutechess für jede Engine angewiesen werden muss, Pondern zu aktivieren (Cutechess-Parameter <code>ponder</code>). Zusätzlich muss für jede Engine Pondern mit ihrem eigenen Parameter aktiviert werden (für Stockfish mit: <code>option.Ponder=true</code>).

Danke, Thomas, aber vorläufig schaff' ich's auch wenn ich's genau so probiere, wie du schilderst, nicht.
Zitat:
Warning: SF_230114 doesn't have option Ponder
Warning: SF_230104 doesn't have option Ponder
Started game 1 of 1000 (SF_230104 vs SF_230114)


Nur, um zu zeigen, dass der Rest meiner batch funktioniert, aber egal, wie ich das für die einzelne engine, bei der ich's jetzt zusätzlich zu deinem each- Befehl mit proto uci (das hatte ich bisher nur bei den each commands einmal dabei) eingetragen habe, auseditiere, krieg' ich immer die Warnung vom zitierten Text (oder natürlich, wenn man's mit Leer- oder sonstigen falsch gesetzten Zeichen probiert, die gar nicht reingehören, startet's halt gar nicht mehr)
Parent - - By Thomas Plaschke Date 2023-01-21 10:26
Ich hab's jetzt auch probiert. Kausal für die Fehlermeldung ist Bezeichnung des Engine-Parameters. Ich habe die Bezeichnung in Stockfish von "ponder" zu "pb" (permanent brain) geändert. Die Fehlermeldung taucht nicht mehr auf - aber Stockfish pondert trotzdem nicht. Ich will schauen, ob ich vielleicht falsch codiert habe - obwohl da nur ein paar Strings zu ändern waren.

Viele Grüße
Th. Plaschke
Parent - - By Peter Martan Date 2023-01-21 10:36 Edited 2023-01-21 10:49
Danke neuerlich sehr herzlich für die prompte Hilfe, Thomas, ich warte mit weiteren eigenen Versuchen, bis du selbst vollen Erfolg hast.

Edit: das mit einfach pb statt ponder war aber auch, was die Fehlermeldung bei mir angeht, nicht die Syntax, die ccc wollte
Zitat:
Warning: SF_230104 doesn't have option pb
Warning: SF_230114 doesn't have option pb
Parent - - By Thomas Plaschke Date 2023-01-21 11:22
Vielleicht ein Missverständnis: Ich habe im SF-Quellcode nur die Optionsbezeichnung geändert. Standardmäßig versteht SF "pb" nicht. Ich habe also auch keine Option hinzugefügt, sondern ponder durch pb ersetzt. Der so geänderte SF hat keine Option "Ponder" mehr.
In den SF-Optionen im Aufruf durch cutechess wurde dann option.Ponder durch option.pb ersetzt. Danach gab es die Fehlermeldung von cutechess nicht. Aber leider ponderte der pb-SF immer noch nicht. Aus dem EffEff kann ich mich an keine Engine erinnern, deren permanent brain-Option nicht "Ponder" heißt. Mit denen könnte man auch überprüfen, ob der Fehler bei cutechess liegt.

Viele Grüße
Th. Plaschke
Parent - - By Peter Martan Date 2023-01-21 12:17 Edited 2023-01-21 12:32
Naja, dass die beiden SF- Compiles, die ich probiert habe, mit dem UCI- Kommando in der Konsole pondern, weiß ich, also an den Engines liegt's somit sicher nicht.
Ich hab' einfach noch keinen cutechess cli- Befehl gefunden, der das, was die Engines sicher können, auch an sie weitergibt, was das Pondern angeht. Auch "pondering", weil's in der Hilfe so genannt wird, statt ponder geht nicht. Solche Fehlversuche sieht man ja aber wenigstesn sofort als solche, weil dann die Batch nicht mehr läuft. Auch die Fehlermeldungen wie zitiert, kriegt man ja immer gleich, wenn's zu laufen scheint, ist's blöder, weil da muss man immer mit dem Task- Manager mit einer ausreichenen Thread- Zahl nachschauen. Hab's mit so ziemlich jeder möglichen Syntax probiert, mittlerweile.
Parent - - By Thomas Plaschke Date 2023-01-21 12:55
Jetzt wird der Hund in der Pfanne verrückt: Ich habe den pb-SF gegen den normalen SF in ein cutechess-Turnier gesteckt. Im -each-Abschnitt stand der cutechess-Parameter ponder. Der pb-SF bekam option.pb=true. Die Parameter des normalen SF blieben unverändert (keine Einstellung mittels option.ponder=). Das Turnier lief mit concurrency 1. Es fanden also keine weiteren Partien parallel statt, beide Versionen liefen mit option.Threads=1. Damit konnte ich feststellen, wann die Engines ihren Prozessor nutzten. Und nun die Überraschung: der normale SF erzeugte durchgehend Prozessorlast, der pb-Stockfish nicht. Ich interpretiere das so, dass der normale SF gepondert hat.

Die Gegenproben:
Code:
ohne cutechess-Parameter ponder: beide Engine erzeugen abwechselnd Last auf "ihren" CPU-Threads. Schlussfolgerung: keine Engine pondert.
ohne cutechess-Parameter ponder, pb-SF mit pb=true: beide Engine erzeugen abwechselnd Last auf "ihren" CPU-Threads. Schlussfolgerung: keine Engine pondert. Parameter wirkungslos.
mit cutechess-Parameter ponder, pb-SF (Parameter pb nicht gesetzt): nur der normale SF hat permanent Last auf "seinem" CPU-Thread. Schlussfolgerung: der normale SF pondert.

Ich vermute, dass Engines, deren Permanent-Brain-Parameter die Bezeichnung "ponder" hat, durch den cutechess-Parameter ponder zum Pondern gebracht werden können. Das Setzen ihres namensgleichen (Engine-)Parameters führt zu einer Fehlermeldung. Anders bezeichnete Permanent-Brain-Parameter (der Engines) bleiben wirkungslos. cutechess verarbeitet entsprechende UCI-Befehle oder -Meldungen schlicht nicht ("ponderhit" usw.).

Lange Rede kurzer Sinn: Es ist ein Fehler von Cutechess. Workaround: Im Abschnitt nach -each den cutechess-Parameter ponder hinzufügen und ausprobieren.

Viele Grüße
Th. Plaschke

P.S.: Bei WB-Engines könnte es wieder ganz anders aussehen
Parent - By Peter Martan Date 2023-01-21 13:05
Haha, suppi, danke für die viele Mühe.
Ich fasse zusammen für Dummis wie mich: wenn's der SF mit dem Compile von der abrok- site ist, nur pondern im each- Bereich und nix bei den einzelnen Engines.
Scheint bei mir auch wirklich zu funktionieren, was ich im Hardware Monitor sehe.

Natürlich müsste man's mit jeder anderen Engine oder jedem anderen Compile sicherheitshalber auch noch extra probieren.
Parent - - By Jörg Oster Date 2023-01-21 16:13
Hier liegt wohl ein Verständnisproblem vor.

Es geht nicht darum, die Engine mittels einer UCI-Option in den ponder-Modus zu versetzen.
Das macht das Interface mithilfe des 'go'-Befehls.

Engine:
* go
  start calculating on the current position set up with the "position" command.
  There are a number of commands that can follow this command, all will be sent in the same string.
  If one command is not sent its value should be interpreted as it would not influence the search.

  * ponder
    start searching in pondering mode.
    Do not exit the search in ponder mode, even if it's mate!
    This means that the last move sent in in the position string is the ponder move.
    The engine can do what it wants to do, but after a "ponderhit" command
    it should execute the suggested move to ponder on. This means that the ponder move sent by
    the GUI can be interpreted as a recommendation about which move to ponder. However, if the
    engine decides to ponder on a different move, it should not display any mainlines as they are
    likely to be misinterpreted by the GUI because the GUI expects the engine to ponder
     on the suggested move.


Soll eine Engine also auch auf Gegnerzeit rechnen, muss das GUI/Tool 'go ponder' an die zu pondernde Engine senden.
Die UCI-Option teilt dem GUI quasi nur mit, dass die Engine pondern kann ...

Eine Ergänzung der Befehlszeile um etwa option.Ponder=true macht also wenig Sinn!

Verwendet man zusätzlich den -debug switch, dann kan man schön sehen, dass anstelle des üblichen go wtime ... nun 44140 >Stockfish2(2): go ponder wtime 1668 btime 2918 winc 20 binc 20 gesendet wird.
Parent - By Peter Martan Date 2023-01-21 16:46
Danke, Jörg, aber mit dem Weg von Thomas, einfach nur das ponder bei den Befehlen, die alle nach each stehen, einzutragen, funktioniert mit den abrok- Compiles der Fische, die ich bisher probiert habe, klaglos.
Parent - - By Thomas Plaschke Date 2023-01-21 18:35
So wird's wohl sein. Aber welchen Sinn hat dann die Ponder-Option der Engines? Die Option steht bei SF default auf false. Müsste das GUI das nicht so interpretieren, dass SF nicht pondern kann? Und warum sollte der Programmierer Pondern den Optionen hinzufügen, wenn er es nicht implementiert hat - nur um dem GUI mitzuteilen, das Pondern nicht geht?  Und wenn ich beim kurzen Daraufblicken heute morgen richtig gesehen habe, wird mit der Option in SF das Pondern direkt gesteuert.

Viele Grüße
Th. Plaschke
Parent - - By Peter Martan Date 2023-01-21 18:44 Edited 2023-01-21 18:56
So wie ich das sehe, gibt's GUIs, in denen man's als UCI- Option der Engine wählen und abwählen kann, und in anderen wird gepondert, wenn's in Eng-Eng-Match- Einstellungen eigens auf die eine oder andere Art an- und abgewählt wird. Die Kommunikation zwischen dem jeweiligen GUI und der Engine funktioniert (wenn's als UCI- Engine installiert ist) je nach dem UCI- Protokoll des GUIs, bei Fritz z.B. wie gesagt automatisch ja im Spiel Mensch gegen Engine, und bei Eng-Eng muss man entweder das Eine oder das Andere wählen.
In der Konsole ohne eigenes

Zitat:
setoption name ponder value on


kein Pondern, also default nein.

Zitat:
option name Ponder type check default false


Im cutechess cli Hilfetext fand ich nur verwirrend, und das war ja auch der Grund, warum's nicht geklappt hat zunächst bei meinen Versuchen, dass die Option unter denen der Engine eingetragen ist, was mich zu der Annahme gebracht hatte, es mit option.ponder bei der jeweiligen Engine zu probieren, dass es nur als Befehl nach denen mit each gekennzeichnet eingetragen werden muss, ohne vorangestelltes option.
, nur als
ponder
allein ist aber halt hingegen einfach so, entspricht also dem, was diejenigen GUIs verlangen, die die Option auch nicht eigens der Engine zuordnen in den UCI- Parametern.
Damit die Engines (die pondern können) es auch tun, reicht das nachweislich, was passiert, wenn man da eine Engine, die nicht pondern kann (gibt's noch welche?) im cutechess cli mit dem entsprechenden each Befehl einträgt, weiß ich nicht, vermute aber, genau so wie im GUI, dem das auch egal ist, gar nichts. Die Fehlermeldung, dass die Engine die Option nicht hat, ist natürlich auch ein irreführende, aber das liegt halt einfach daran, dass option.ponder keine für cutechess cli passende ist, die man der Engine eigens zuordnet.
Parent - By Thomas Plaschke Date 2023-01-21 19:57 Upvotes 1
Ja, letztlich ist es so, wie es Jörg Oster beschrieben und erklärt hat, am praktischsten. Der UCI-Standard sieht fürs Pondern eine bestimmte Kommandosequenz vor. Unabhängig von der Optionsbezeichnung in der Engine werden Engines, die sie verstehen, dann pondern, die übrigen nicht. Alles ist gut, die Frage beantwortet.

Viele Grüße
Th. Plaschke
Parent - - By Jörg Oster Date 2023-01-21 19:17 Upvotes 2
Ich wollte mal wissen, wieviel Pondern bei der aktuellen Dev noch in etwa bringt.
Hier das Ergebnis eines kleinen 200 games Matches:

Finished game 200 (Stockfish-NoPonder vs Stockfish-Ponder): 1/2-1/2 {Draw by 3-fold repetition}
Score of Stockfish-Ponder vs Stockfish-NoPonder: 37 - 6 - 157  [0.578] 200
Elo difference: 54.3 +/- 21.6, LOS: 100.0 %, DrawRatio: 78.5 %
Finished match


Hier meine entsprechende cutechess-cli Befehlszeile:
Code:
./cutechess-cli -engine name=Stockfish-Ponder cmd=./sf-simpleMPV ponder -engine name=Stockfish-NoPonder cmd=./sf-simpleMPV -each proto=uci option.Threads=1 option.Hash=32 restart=on tc=12+0.02 -openings file=/home/joster/openings/largebook.pgn order=random plies=14 -rounds 100 -games 2 -repeat -ratinginterval 10 -resign movecount=5 score=600 -draw movenumber=70 movecount=10 score=15 -tb /media/joster/EGTB-SSD/syzygy-5men/syzygy -tbpieces 5 -wait 5 -pgnout SF-Pondertest3_12.pgn
Parent - - By Peter Martan Date 2023-01-21 19:40 Edited 2023-01-21 19:45
Sehr gut, danke, und jetzt dasselbe gegen LC0

Nein, im Ernst, 54 Elo bei 21 Elo error ist ja eigentlich eh ganz schön saftig, wird wohl an der doch eher kurzen TC auch liegen, interpretiere ich richtig, ganze Partie in 12" mit 0.2 Inkrement?
Heißt ja aber absolut nicht, dass es die "Leela- Ratio" bei Pondern auf der GPU gegen Pondern auf der CPU (je nach Anzahl der Threads) nicht auch wieder durchaus unterschiedlich beeinflusst, und es wird wohl sehr von der TC abhängen, ab einer gewissen very very short solchen immer weiter nach unten wird's sich dann vielleicht doch mehr und mehr auswirken, hmh?
Parent - - By Jörg Oster Date 2023-01-21 19:46
Das verwendete largebook.pgn ist ein Mix aus sehr kurzen und längeren Eröffnungsvorgaben.
Zeitkontrolle war zugegeben sehr kurz: tc=12+0.02
Parent - By Peter Martan Date 2023-01-21 19:49 Edited 2023-01-21 19:57
Ja, das mit dem Buch und der TC hab' ich dann eh noch richtig interpretiert, hab' wieder nach deiner Antwort etwas rumeditiert an meinem Posting.
Und so kurz würde ich das halt gegen LC0 nicht wirklich probieren. Ich schick dir morgen ein Mail mit einem 60/60+1- Ponder on- Match SF- LC0 (SF mit 8 threads und LC0 mit 3070ti) und du lässt dann das Gegenmatch laufen, wenn SF dabei nicht pondert, LC0 aber schon.

Nein, wieder Spaß beiseite, interessanter wäre,  wie sich andere kurze Eröffnungen (kostet ja auch Zeit relativ zu längeren) wie das UHO- Set von mehr und das von weniger Vorteil einer Seite, sich bei einer (nicht ganz so wie bei dir aber doch) kürzeren und kürzeren STC auswirkt zwischen wirklich irgendwie "verschiedenen" Engines. Solche Sachen untersucht ja kaum mehr jemand, weil man schon für die "normalen" Fragestellungen nicht mehr genug Hardware- Zeit für genug Partien zusammenbringt.
Just my two cents...
Parent - - By Peter Martan Date 2023-01-22 10:48
Wie gestern angekündigt, per Mail ein Gegenbeispiel mit beidseitigem Pondern von SF und LC0 geschickt, das hab' ich auch deshalb schon nach 100 Partien abgebrochen, weil es absehbar war, dass unter 1000 die erro bar wahrscheinlich nicht überboten worden wäre vom Abstand und mir einfach um die Hardware- Zeit leid war.
Hatte aber da dann sogar LC0 die Nase nach 101 Partien gerade vorn (SF war single thread unterwegs, hab' ich vergessen, im Mail dazu zu schreiben, auch ergänzen muss ich noch, dass es die 6mvs- UHO mit der geringsten Eval- Differenz von 110- 119 waren), hab' ich jetzt justamend doch noch einmal gestartet, diesmal SF 8 threads gegeben und die TC von1'+1"/60 (was zwischen diesen beiden Engines glaube ich so ziemlich die kürzeste vernünftige TC wäre für Ryzen 5950 CPU single thread gegen Nvidia 3070ti, egal ob mit oder ohne Pondern) auf 15"+0.25 insgesamt reduziert, mich also deinen Bedingungen etwas angenähert, wobei der Unterschied im Inkrement ja immer noch ziemlich gewaltig ist. Und das (Inkrement) zählt ja bei so kurz viel mehr als die 3" Unterschied in der Grundvorgabe, die Engines spielen dann im Wesentlichen sowieso immer hauptsächlich aus dem Zuschlag, also eigentlich entspricht das so immer noch ca. einer halben Sekunde pro Zug, das ist nach heutigen Begriffen noch nicht einmal so richtig very very short.
Jedenfalls dürfen Wetten abgeschlossen werden, nach wie vielen Partien ich das wohl diesmal abbrechen werde. Ein kleiner Tipp: SF hat diesmal schon nach 30 Partien mehr als die Nase vorn, Elo- Unterschied und error bar sind ziemlich gleich groß.

Mit diesem Setting könnte man sich wahrscheinlich, wollte man nur knapp mehr Diskrimination als Irrtumswahrscheinlichkeit haben, tatsächlich schon nach 100 Partien zufrieden geben. Kommt ja nur aufs Ranking an und nicht aufs Rating, das sowieso mit keinem anderen zu vergleichen wäre, insbesondere mit anderer Hardware- TC, mit oder ohne Pondern, größerem Teilnehmerfeld, anderen Eröffnungen...
Parent - - By Jörg Oster Date 2023-01-22 11:04
Interessant für mich wäre, wieviel Pondern bei Lc0 bringt.
Und wie das im Vergleich zu AB-Engines einzuordnen ist. 
Parent - By Peter Martan Date 2023-01-22 11:16 Edited 2023-01-22 11:31
Ja, find' ich auch. Aber was glaubst du, wieviele Partien und vor allem: bei welcher Hardware- TC, müsste man da spielen, um nicht nur mit den einzelnen Matches aus der error bar zu kommen, sondern auch aus einer ebensolchen zwischen den Match- Resultaten?

Im Ernst, wollte ich nur beweisen, dass höchstens noch das Ranking zwischen diesen beiden Engines übertragbar ist zwischen halbwegs vergleichbaren Bedinungen, aber so etwas wie Rating schon lange absolut nicht mehr, dann wär' das leicht. Jetzt stinkt gerade Dragon auf CCC mit 1'+1" ab, ja, ist ja nur Bullet (), aber die Hardware ist dafür stark.
Was hingegen bei LC0 eine "starke Hardware" und für welche Engine- Version und welches Netz ist, das kannst du dir mit der richtigen TC und den richtigen Eröffnungen praktisch beliebig vorab aussuchen und einstellen.

Ich würde schätzen (weil ich das ja gerade probiere, ist sie nicht so völlig aus der Luft gegriffen, die Schätzung), dass die Kürze der Hardware- TC, ab der's spannend wird, so bei den 1'1" liegen wird, die ich dir geschickt hab' mit SF single thread der 3.5GHz- CPU und LC0 auf 3070ti.

Mit Pondern halt einfach etwas relativieren zugunsten von LC0 nach unten, die kritische TC, weil die Engine mit der vollen GPU- Nutzung im VVSTC- Bereich vom Pondern mehr profiteren dürfte als SF, aber auch das natürlich nur so bald, (mit solchen TC- Unterschieden) wenn SF dabei single thread spielt, oder besser ausgedrückt, die Kürze der kritischen Hardware- Zeit nach unten wird mit Pondern etwas später erreicht werden als ohne, bei der LC0 unter einer für sie viel zu kurzen TC weniger leiden wird. Allein schon der Initialisierungszeit wegen, die spielt beim game playing nicht die ganz große Rolle, aber wenn sehr viele sehr kurze Partien immer wieder neu gestartet werden und die ersten Züge nach dem Buch ja auch viel mehr zählen...

Edit: kann natürlich auch durchaus genau umgekehrt sein, dass SF bei VSTC vom Pondern mehr profitiert als LC0, am wahrscheinlichsten wäre vermutlich, dass es für bestimmte Hardware- TCs so wäre und für bestimmte andere anders. Und wenn man jetzt auch noch wissen wollte, in welcher Range es sich bei welcher Hardware- TC wie stark änderte, dann hätte man viel zu tun, die früher sogenannte Leela- Ratio für ein bestimmtes Match zu bestimmen und vielleicht noch für ein bestimmtes Eröffnungstellungs- Set
Parent - By Peter Martan Date 2023-01-22 18:39 Edited 2023-01-22 18:46
Also dass war's mir jetzt aber schon noch wert, vor allem, weil's mit so kurzer TC ja eh recht flott geht und man auch schnell aus der error bar rauskommt.
Eigentlich ist der Unterschied ziemlich beachtlich.
Jetzt hab' ich, um's noch deutlicher sichtbar zu machen, bei denselben 15"+0.25, 8 Threads für SF genommen statt single thread mit der längeren TC im Match vom Mail.
Ist er mit ponder on noch "nur" im Bereich der doppelten error bar nach 105 Partien:

Score of lc0-BT2-325M vs SF230114: 9 - 38 - 58  [0.362] 105
Elo difference: -98.5 +/- 44.1, LOS: 0.0 %, DrawRatio: 55.2 %

, ist's bei ponder off mit sonst völlig gleichen Bedingungen (incl. derselben 50 Eröffnungsstellungen aus dem UHO 6mvs-Set mit Eval 110-119) gleich mehr als das 3fache, dieses Verhältnis zwischen Differenz und Irrtumswahrscheinlichkeit, auf das es mir immer in erster Linie ankommt:

Score of lc0-BT2-325M vs SF230114: 3 - 44 - 58  [0.305] 105
Elo difference: -143.3 +/- 42.9, LOS: 0.0 %, DrawRatio: 55.2 %

Also diese TC ist auf dieser Hardware schon eine für LC0 ziemlich schlimm kurze, wenn SF 8x13.5GHz bekommt und LC0 die 3070ti, Pondern hilft ein bisschen, ohne bekommt LC0 erst recht keinen Fuß auf den Boden. Ich erinnere daran, dass es bei 60"+1 gegen single thread SF noch ausgeglichen war und LC0 die Nase (mit Pondern) sogar immer wieder mal vorn hatte, hier haben allerdings die 100 Partien halt in keiner Weise gereicht. Wie gesagt hatte ich's da abgedreht, weil's nach 200 immer noch unklar gewesen wäre, und ich's mit der TC nicht bis 1000 weiterspielen lassen wollte. Da hatte LC0 beim Abbruch 52.5% (53 Punkte von 101 Partien) einen Elo- Vorsprung von 18 bei +-42 und einer ca. 61%igen Remisrate.
Parent - - By Wolfgang Battig Date 2023-01-21 10:27
Peter Martan schrieb:

Und weißt du auch, wie's mit cutechess cli geht, Wolfgang?
...

Nein, leider nicht, ich nutze Cutechess im allgemeinen und die "cli" Variante im speziellen nicht. Bei der GUI Version hatte ich es bei meinen Gehversuchen mal gesehen, daher konnte ich helfen.

Stefan vielleicht?
Parent - By Peter Martan Date 2023-01-21 10:37
Danke, Wolfgang, Thomas Plaschke hilft bereits.
Parent - - By Thomas Plaschke Date 2023-01-09 13:02 Upvotes 3
Hallo Kurt,

es geht auch etwas übersichtlicher und leichter zu handhaben.

Wie Stefan nutze ich eine Batchdatei, um cutechess-cli zu starten. Meine Vereinfachung liegt darin, die Startparameter in (Umgebungs-)Variablen zu speichern. Dabei bekommt jede Engine ihre eigene Variable. Z.B.:


SET An095=-engine name="Andscacs 0.95" cmd="C:\Engines\Andscacs\andscacs095\andscacs.exe" proto=uci restart=on option.NullMove=true option.Hash=256 option.Threads=1

Mit SET wird der Variablenname An095 festgelegt. Nach dem Gleichheitszeichen folgen die Parameter für curechess-cli.
-engine sagt cutechess, dass eine Enginedefinition folgt. Man beachte den Bindestrich. Die folgenden Parameter haben keinen.
cmd gibt den Speicherort der Engine an. Am besten in Anführungsstrichen, weil in Pfadangaben auch mal Leerzeichen sein können, die dann die Verarbeitung stören.
proto legt das Kommunikationsprotokoll fest. =uci heisst, dass die Engine das UCI-Protokoll versteht.
restart ist ein spezielleres Kommando. Mit on sagt man cutechess-cli, es möge die Engine für jede Partie neu starten.
option. leitet die Eingabe eines Engine-spezifischen Parameter ein. option.Hash=256 stellt bspw. die Zahl 256 als Hash-Wert ein. Ob es sich um MBytes, KBytes oder Bytes handelt, ist Sache der Engine. option.Threads=1 stellt den Thread-Parameter der Engine ein. Besteht ein Parametername aus mehreren Wörtern, setzt man ihn in Anführungszeichen. Bspw. option."Number of Threads"=1. Wie man die namen der Parameter der Engines herausbekommt, dürfte bekannt sein.

Das war jetzt viel Text. Aber diese Eingaben sind bei allen Engine ähnlich.

SET An095=-engine name="Andscacs 0.95" cmd="C:\Engines\Andscacs\andscacs095\andscacs.exe" proto=uci restart=on option.NullMove=true option.Hash=256 option.Threads=1
REM Als nächstes wird Gull3 definiert.
SET G3=-engine name="Gull 3" cmd="C:\Engines\GullChess\Gull 3\Gull 3 x64 BMI2.exe" proto=uci restart=on option."Large memory pages"=false option.Hash=256 option.Threads=1
REM Jetzt folgt die Definition von Spark 1.0
SET Spa1=-engine name="Spark 1.0" cmd="C:\Engines\Spark\spark-1.0\spark-1.0-win64-mp-corei.exe" proto=uci restart=on option.OwnBook=false option.Hash=256 option.Threads=1

REM Die Bibliotheksdatei.
SET BIB=C:\Cutechess\Books\HERT500.pgn

REM Dann folgen die Spielbedingungen/-parameter, die für alle Engines gelten sollen, in der Umgebungsvariablen TURNIER
SET TURNIER=-each option.Hash=1024
SET TURNIER=%TURNIER% option.Threads=4
-each wieder eine cutechess-cli-Option, die mehrere andere zusammengehörende Parameter einleitet.
%TURNIER% zitiert den bereits in der Umgebungsvariablen steckenden Inhalt. Mit SET TURNIER=%TURNIER% ergänzt man den Inhalt der Variablen TURNIER. Konkret wird hier aus aus
-each option.Hash=1024 der neue Inhalt -each option.Hash=1024 option.Threads=4.
REM Die Zeitkontrolle gehört auch noch zu each.
SET TURNIER=%TURNIER% tc=/180+1.8 timemargin=100
tc heißt timecontrol. /180+1.8 bedeutet eine Zeitvorgabe von 180 Sekunden plus 1,8 Sekunden Gutschrift pro Zug. Eine Vorgabe von 5 Minuten für 60 Züge sähe dagegen so aus tc=60/300. Es werden also die Zeiten in Sekunden angegeben und Kommazahlen mit dem Dezimalpunkt (nicht Komma, wie in Deutschland üblich).
timemargin gibt einen Zeitaufschlag in Millisekunden an, der Zeitverluste bei der Kommunikation zwischen cutechess-cli und den Engines kompensieren soll.

REM Weitere Turnierbedingungen
SET TURNIER=%TURNIER% -tournament round-robin
-tournament gauntlet ist Spießrutenlauf (alle Engines nur gegen die zuerst angebene Liste). round-robin ist der Parameter für ein Rundenturnier jeder gegen jeden.
SET TURNIER=%TURNIER% -games 2 -rounds 2
-games 10Jede Engine soll 10 Partienen gegen ihren Gegner spielen.
-rounds 2 Das Turnier soll 2-rundig sein.

REM Ein paar technische Parameter
SET TURNIER=%TURNIER% -concurrency 4 -ratinginterval 10 -wait 3000 -recover -repeat
-concurrency gibt an, wie viel Partien cutechess-cli parallel spielen soll. Dabei muss man darauf achten, dass dieser Wert (hier 4) multipliziert mit der Zahl der Engine-Threads nicht die Zahl der Prozessorkerne überschreiten sollte. Mit der Vorgabe von 1 Threads sollte bei -concurrency 4 die CPU mindestens 4 Kerne besitzen.
-ratinginterval gibt an, alle wie viel gespielte Partien ein Zwischenstand ausgegeben werden soll.
-wait ist die Zeit, die vor einem Start auf die Engine gewartet wird (in Millisekunden).
-recover -repeat sind Befehle zur Fehlerbehandlung (falls die Engine Probleme hat)

REM Festlegung der zu spielenden Eröffnungen
SET TURNIER=%TURNIER% -openings file=%BIB% format=pgn
-openings file legt die Datei mit den Eröffnungen fest. Hier ist sie in einer Umgebungsvariablen gespeichert, sodass nur weiter oben die entsprechende Datei festgelegt werden muss.
format konkretisiert das Dateiformat der Bibliothek.

REM Pfad zu den Endspieltabellen, mit den cutechess-cli Partien abschätzen kann
SET TURNIER=%TURNIER% -tb "E:\Endspieltabellen\szTB" -tbpieces 6

REM Ausgabe des Ergebnisses
SET TURNIER=%TURNIER% -pgnout "C:\Engines\Turniere\Results-001.pgn" -event "Schlachtrösser unter sich (%BIB%)"
-pgnout pgn-Datei, in die die Partien geschrieben werden sollen
-event Text, der in den PGN-tag [Event] jeder Partie geschrieben wird

REM Zuletzt erfolgt der Aufruf von CuteChess mit den gewünschten Engines und den Turnierbedingungen.
REM Alle gewünschten Engines werden nach cutechess-cli und vor %TURNIER% mit ihren Umgebungsvariablen (eingebettet in %-Zeichen) zitiert.
cutechess-cli %An095% %G3% %Spa1% %TURNIER%

Auf diese eine letzte Zeile ist in meiner Lösung dann der Aufruf verkürzt. Praktisch muss ich nichts kopieren, da sich bein meinen Tests die Turnierbedigungen selten oder nur etwas ändern und ich lediglich neue Engines ergänzen muss. Füge ich unter vor dem cutechess-cli-Aufruf bspw.
SET SF151=-engine name="Stockfish 15.1" cmd="C:\Engines\Stockfish-15.1.exe" proto=uci restart=on option.SyzygyPath="E:\Endspieltabellen\szTB" option.NNUE="C:\NNUE\nn-335a9b2d8a80.nnue" option.Hash=256 option.Threads=1
ein, kann ich Stockfish 15.1 mit der NN-Datei nn-335a9b2d8a80.nnue nutzen. Der Aufruf von cutechess-cli muss nur zu
cutechess-cli %An095% %G3% %Spa1% %SF151% %TURNIER%
geändert werden.

Code:
SET An095=-engine name="Andscacs 0.95" cmd="C:\Engines\Andscacs\andscacs095\andscacs.exe" proto=uci restart=on option.NullMove=true option.Hash=256 option.Threads=1
SET G3=-engine name="Gull 3" cmd="C:\Engines\GullChess\Gull 3\Gull 3 x64 BMI2.exe" proto=uci restart=on option."Large memory pages"=false option.Hash=256 option.Threads=1
SET Spa1=-engine name="Spark 1.0" cmd="C:\Engines\Spark\spark-1.0\spark-1.0-win64-mp-corei.exe" proto=uci restart=on option.OwnBook=false option.Hash=256 option.Threads=1

SET BIB=C:\Cutechess\Books\HERT500.pgn

SET TURNIER=-each option.Hash=1024
SET TURNIER=%TURNIER% option.Threads=4
SET TURNIER=%TURNIER% tc=/180+1.8 timemargin=100
SET TURNIER=%TURNIER% -tournament round-robin
SET TURNIER=%TURNIER% -games 2 -rounds 2

SET TURNIER=%TURNIER% -concurrency 4 -ratinginterval 10 -wait 3000 -recover -repeat

SET TURNIER=%TURNIER% -openings file=%BIB% format=pgn
SET TURNIER=%TURNIER% -tb "E:\Endspieltabellen\szTB" -tbpieces 6
SET TURNIER=%TURNIER% -pgnout "C:\Engines\Turniere\Results-001.pgn" -event "Schlachtrösser unter sich (%BIB%)"

cutechess-cli %An095% %G3% %Spa1% %TURNIER%
Das wäre die Batchdatei, die alles erledigt.

Viele Grüße
Th. Plaschke
Parent - - By Klaus S. Date 2023-01-09 14:23 Upvotes 1
...
> es geht auch etwas übersichtlicher und leichter zu handhaben. 
 
Parent - By Thomas Plaschke Date 2023-01-09 15:04

Mein Post ist ja nur deswegen ausgeufert, weil ich die Parameter und etwas darüber hinaus zu erklären versucht habe. Praktisch ergänzt man bei meiner Lösung den Engineabschnitt um neue Engines (nicht genutzte bleiben dort einfach stehen - alphabetische Reihung empfiehlt sich) und ändert die übrigen Sachen nur wo es nötig ist. Da das Ganze nicht in eine Zeile kopiert werden muss, ist es übersichtlicher.

Es lassen sich auch noch andere Sachen in Variablen stecken, worauf ich hier verzichtet habe. Alles was mehrfach gebraucht wird wie z.B. der Pfad der Syzygy-Tabellen bieten sich dafür an. Der eigentliche Aufruf von cutechess-cli bleibt dadurch sehr kurz. Ein weiterer Vorteil ist das einfachere Debuggen. Die zuletzt erfolgten Änderungen lassen sich so leichter kontrollieren.

Viele Grüße
Th. Plaschke
Parent - - By Stefan Pohl Date 2023-01-09 15:07
Ich weiss, du hattest mir mal diese Methode empfohlen. Und ich verstehe das natürlich auch, immerhin habe ich ja schon etliche weit komplexere Tools als batch-File realisiert. Aber ehrlich gesagt finde ich meine primitive Methode, einfach die kompletten -engine Zeilen im Editor per copy&paste zusammenzusetzen, in der Handhabung einfacher. Und wenn ich das schon so sehe, gilt das m.E. erst Recht für andere Anwender, die sich mit batch-files und Variablenhandhabung in denselben nicht so auskennen.
Kann natürlich jeder machen, wie er mag.
Parent - - By Volker Pittlik Date 2023-01-09 19:33 Upvotes 1
Ich denke sowohl Deine als auch Thomas Methode beide richtig und nützlich. Ich hatte mal ein paar Skripte für Linux geschrieben mit denen (mit cutechess-cli und anderen Kommadozeilenprogrammen) auch eine Turniersteuerung möglich war.

Wichtig an allen finde ich, dass cutechess(-cli) sehr zuverlässig läuft und auch aufwendige Test relativ einfach zu realisieren sind. Relativ im Verhältnis vor allem zu Versuchen, Tests von solchem Umfang manuell durchzuführen.

Schade finde ich, dass die konstruktiven Vorschläge die Du und andere hier einbringen mit Hinweisen auf "Normalanwender" in den Bereich des Unbrauchbaren gar Unnützen gerückt werden. Was ein solcher "normaler Benutzer" macht, möchte oder kann, darüber existieren wohl bei jedem andere Vorstellungen.

Gruss

Volker
Parent - By Kurt Utzinger Date 2023-01-09 22:45
Volker Pittlik schrieb:

Ich denke sowohl Deine als auch Thomas Methode beide richtig und nützlich. Ich hatte mal ein paar Skripte für Linux geschrieben mit denen (mit cutechess-cli und anderen Kommadozeilenprogrammen) auch eine Turniersteuerung möglich war.

Wichtig an allen finde ich, dass cutechess(-cli) sehr zuverlässig läuft und auch aufwendige Test relativ einfach zu realisieren sind. Relativ im Verhältnis vor allem zu Versuchen, Tests von solchem Umfang manuell durchzuführen.

Schade finde ich, dass die konstruktiven Vorschläge die Du und andere hier einbringen mit Hinweisen auf "Normalanwender" in den Bereich des Unbrauchbaren gar Unnützen gerückt werden. Was ein solcher "normaler Benutzer" macht, möchte oder kann, darüber existieren wohl bei jedem andere Vorstellungen.

Gruss

Volker


Hallo Volker
Aufgrund der mir nun vorliegenden Informationen sehe ich das so: cutechess.cli ist vor allem für Tester, die Turniere mit diversen Engines vollautomatisch und gar mit nacheinander folgenden Testruns ablaufen und auswerten wollen und dabei auf ein sehr stabiles Interface mit möglichst geringen Ressourcen (RAM, CPU) angewiesen sind. Kurzum für Vieltester wie Stefan Pohl bestimmt das Gelbe vom Ei. Für Leute, die ab und zu einfach Engine A gegen Engine B laufen lassen, spielt die verwendete GUI  (Shredder, Arena, Fritz) wohl keine so wichtige Rolle mehr. Und ob hier die Cute Chess GUI bezüglich Stabilität den anderen GUIs etwas voraus hat, vermag ich nicht zu beurteilen. Ein Testlauf mit der Cute Chess GUI zwischen zwei Engines im (für mich ganz ausnahmsweise) Blitzmodus 3m+2s mit dem Nunn2-Test ist jedenfalls absolut problemlos durchgelaufen.
Mfg
Kurt
Parent - - By Max Siegfried Date 2023-01-09 10:46
Stefan Pohl schrieb:

Frank Sanders schrieb:

Auf der Suche für ein Programm für Computerturniere habe ich gefunden, dass dafür hauptsächlich cutechess-cli verwendet wird. Ich habe aber auch ein Programm littleblitzer gefunden. Meine Frage wäre, hat eines der beiden Programme entscheidende Vorteile oder sind sie etwa gleichwertig?
Rein vom Lesen der Anleitung kommt mir littleblitzer einfacher zu bedienen vor, spricht etwas gegen little blitzer?


Einiges.
Ich habe LittleBlitzer früher viel genutzt. bin aber auf cutechess-cli umgestiegen. Erstens schreibt LB keine Rechentiefen und Evals und Bedenkzeiten in die PGN-Partien.
Zweitens hat LB 2 üble Bugs:
1) Enthält eine pgn-Eröffnungsvorgabe-Zugfolge einen en-passant Zug, wird der geschlagene Bauer nicht vom Brett genommen. Man muß also entweder sicher sein, daß die Eröffnungsvorgaben keinen ep-Zug enthalten oder man muß eine epd-Endstellung (FEN-Code) benutzen, statt der pgn-Zugfolgen Vorgabe.
2) Die 50 Zug Remisregel ist falsch implementiert, es gibt nämlich Remis erst nach 101 plies, also 50.5 Zügen.

Außerdem schreibt LB die Partien ins result.pgn-File in der Reihenfolge, in der sie beendet wurden. Währen cutechess-cli sie in der Reihenfolge dort speichert, in der sie gestartet wurden. Hat man also ein TestGauntlet einer Engine und läßt mehrere Partien parallel laufen, ist das Ergebnis-File der LB chaotisch und unsortiert.

Weiterer großer Vorteil von cutechess-cli: Man kann mehrere Testruns in einem .bat-File nacheinander auflisten und diese werden dann automatisch nacheinander abgearbeitet!

Ergo: cutechess-cli nutzen, nicht LittleBlitzer. Empfehle ich dringend!


Das alles kannst du mit der BanksiaGUI auch machen.
Up Topic Hauptforen / CSS-Forum / Software für Schachprogrammtests
1 2 Previous Next  

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill