Einzelnen Beitrag anzeigen
  #4970  
Alt 24.06.2022, 14:52
fhub fhub ist gerade online
Lebende Foren Legende
 
Registriert seit: 19.04.2010
Beiträge: 2.030
Abgegebene Danke: 233
Erhielt 3.579 Danke für 899 Beiträge
Activity Longevity
6/20 14/20
Today Beiträge
1/3 sssss2030
AW: Mess Emulator für diverse Schachcomputer ist fertig!

Hi,

ich hätte hier wieder ein Plugin-Update, das ein kleines und ein größeres Problem löst (bzw. lösen sollte).

Das erste waren die doch recht häufigen Programm-Abbrüche beim Conchess, von denen Markus ('Mapi') berichtet hat. Es war relativ aufwändig und hat mich einen ganzen Tag gekostet, bis ich dieses Problem endlich gelöst hatte - auf jeden Fall ist bei mir in 30 Partien kein Hänger des Conchess mehr vorgekommen, sodaß das jetzt hoffentlich nicht mehr vorkommt.

Das größere Problem (das auch Markus festgestellt hat) war aber, daß bei Engine-Matches immer extrem viele Dubletten vorkommen, und gestern habe ich eine Email bekommen, wo z.B. auch bei einem 100-Partien Engine-Match (Polgar vs. Excel Mach IV) der Polgar 50 seiner Weiß-Partien mit e4 eröffnet hat, obwohl er sonst auch mit d4 und c4 beginnt, wenn man selber gegen ihn spielt.

Wie schon anderswo erwähnt, liegt die Ursache in der Automatisierung so eines Matches durch eine GUI, wobei natürlich alle Aktionen (Start der Engine, Level-Einstellung, Partie-Start usw.) immer zeitlich(!) gleich ablaufen.
Und diese identischen Bedingungen bewirken eben auch viele gleiche Partien.

Wie ist das zu erklären und was könnte man dagegen tun?
Jede vernünftige Engine hat ja softwaremäßig einen (Pseudo)Zufallsgenerator eingebaut, sonst würde sie ja immer die gleichen Züge spielen und ein Eröffnungsbuch würde auch nicht viel Sinn machen. Und so ein Zufallsgenerator benötigt natürlich einen (bzw. verschiedene) Startwert(e), um jedesmal andere Zufallszahlen zu liefern.
Beim PC ist das z.B. entweder die aktuelle Uhrzeit oder die Zeit seit dem letzten Einschalten, und ich bin mir ziemlich sicher, daß das auch bei Schachcomputern so ist, d.h. daß sie ihren Startwert ('random seed') aus ihrem Timer generieren - vermutlich aus der Zeitspanne zwischen Einschalten (d.h. Timer startet) und erster Aktion des Benutzers (wie z.B. Level einstellen oder Partie starten).
Das ist natürlich bei manueller Benutzung des Gerätes jedesmal anders, sodaß es eben auch immer zu unterschiedlichen Partien kommt - bei Engine-Matches trifft das aber nicht zu, weil hier die Aktionen ja automatisiert ablaufen und daher immer identisch sind.

Was also dagegen tun? Nun, eigentlich ganz einfach:
Man muß einfach nur dafür sorgen, daß zwischen Start der Engine (entspricht Einschalten des Schachcomputers) und der jeweils ersten Aktion (Level einstellen oder Partie starten) bei jeder neuen Partie eine andere Zeitspanne dazwischen liegt - dann hat eben der Timer (und damit auch der Startwert des Zufallsgeneratos) einen anderen Wert, und es kommt infolgedessen zu größerer Vielfalt (bzw. weniger Dubletten) bei den Partien.

Praktisch läßt sich das ganz einfach im Haupt-Plugin 'init.lua' durchführen, das ja für die Steuerung der Engines zuständig ist, und da habe ich jetzt nur eine einzige Zeile eingefügt, die zwischen Starten der Engine und Beginn jeder neuen Partie ein kurze Zufalls-Pause einlegt (0-1 sec) - diese zufällige Zeitspanne sorgt nun für unterschiedliche Timerwerte und damit für unterschiedliche Bedingungen bei jeder Partie, hat aber sonst keinerlei andere Auswirkungen (diese kurze Pause von max. 1 sec vor jedem Partie-Start merkt man praktisch auch gar nicht).

Ein kurzer Test von mir mit jeweils 10 Enginestarts (wobei sie automatisch sofort den 1. Zug machen sollten) beim Polgar und Excel Mach IV ergaben folgendes Ergebnis:
Mit der bisherigen 'init.lua' startete der Polgar 10-mal mit e4 und der Mach IV ebenfalls 10-mal mit e4.
Mit dieser neuen Zufalls-Pause in der 'init.lua' sieht die Sache schon wesentlich besser aus:
Polgar: 5-mal e4, 4-mal d4 und 1-mal c4
Mach IV: 6-mal e4 und 4-mal d4

So, der langen Rede kurzer Sinn:
Mit dieser neuen 'init.lua' sollten also bei Engine-Matches in Zukunft wesentlich weniger Dubletten vorkommen!
(ganz ausgeschlossen sind sie natürlich nicht)

Grüße,
Franz

Geändert von fhub (11.07.2022 um 22:26 Uhr)
Mit Zitat antworten
Folgende 10 Benutzer sagen Danke zu fhub für den nützlichen Beitrag:
achimp (24.06.2022), Agep (24.06.2022), Chessguru (24.06.2022), dsommerfeld (27.06.2022), Mapi (24.06.2022), Mark 1 (24.06.2022), MichaelN (24.06.2022), mickihamster (24.06.2022), Plextor (24.06.2022), Robert (27.06.2022)