Einzelnen Beitrag anzeigen
  #12  
Alt 06.08.2019, 17:54
Hartmut Hartmut ist offline
Lebende Foren Legende
 
Registriert seit: 01.04.2010
Ort: Nürnberg
Alter: 60
Land:
Beiträge: 2.174
Abgegebene Danke: 3.220
Erhielt 1.544 Danke für 898 Beiträge
Aktivitäten Langlebigkeit
3/20 14/20
Heute Beiträge
0/3 sssss2174
AW: Tips für Enginevergleiche/-tests unter MessEmu/Winboard

Bevor ich zum Teil 3 komme, noch ein kleiner Nachtrag.

Bei Enginevergleichen hat sich so einiges verbessert, einiges ist - zumindest für meine Tests - schlechter geworden.

Die meisten Probleme, dass Partien wegen einer Mattansage angehalten werden - scheinen zwischenzeitlich behoben zu sein. Scheinbar gibt es für solche Fälle nun entsprechende Abfragen in den lua-Dateien, zumindest bei den meisten Geräten

In einigen Fällen hingegen ist scheinbar leider keine Lösung möglich gewesen. Mattansagen des Savent (oder entsprechende Aufgabebekundungen, wenn ein unausweichliches Matt gesehen wird) enden immer noch mit einem Dauerton und Abbruch der Partie, d.h. der Savant spielt nicht weiter und wartet darauf, dass man sich mit Trace Forward das Matt zeigen lässt oder zumindest den nächsten Zug auf dem Brett anzeigen lässt. Danach läuft das Spiel weiter. Für automatische Enginevergleiche ist das etwas störend. Wer jedoch "über Nacht" einen Enginewettkampf startet, der wird sich wenig daran stören. Der Mattsetzende gewinnt im dümmsten Fall dadurch, dass (z.B. in Arena) der Gegner durch Zeitüberschreitung verliert. So gehts natürlich auch. Ist man dabei und sieht das Matt, kann man natürlich die Partie dann auch in Arena einfach durch klicken auf "1-0" oder entsprechend "0-1" beenden und die nächste Partie des Wettkampfes wird gestartet. Ein ähnliches Problem ergibt sich auch bei anderen Geräten, die vor dem Matt aufgeben. Hier wird dann einfach nichts mehr an die GUI übermittelt und das automatische Spiel steht bis die Zeit abgelaufen ist. Trotzdem ist durch verbesserte lua-Dateien die Fehleranfälligkeit bei automatischen Matches stark gesunken, was als positiv zu bewerten ist.

Allerdings sind die neuen lua-Dateien nun auch auf das eingebaute Sensorbrett von Mess abgestimmt. Das kann man als positiv werten, jedoch ist es in automatischen Matches teilweise störend. Lässt man Engines nicht mit normaler Geschwindigkeit sondern beschleunigt laufen kommt es zum Problem, dass die Engines immer mit diesem sichtbaren Brett starten. Dieses hat - ganz egal ob es nun benutzt wird oder nicht - schon mal eine weit umfangreichere Grafik als wenn man nun nur die Bedienelemente sichtbar hätte. Daraus ergibt sich, dass der Beschleunigungsfaktor bei "unlimited" nun deutlich geringer ist. Daran ändert leider auch das Ausblenden dieses Sensorboards (im Enginefenster von Mess unter Options-Video-Internal Layout) nur wenig. Zwar ist die Engine dann etwas schneller, erreicht aber nicht mehr die Geschwindigkeiten der Version von Anfang Juli mit der ich den Test begonnen hatte.

Und weil manche Verbesserung natürlich auch ihre Nachteile mit sich bringt, ist auch in dem nun weit umfangreicheren lua-Code eventuell ein Grund gegeben, dass die Engines in der Einstellung "unlimited" nun etwas träger reagieren wie früher. Immerhin wird ja im Hintergrund ständig Code abgearbeitet, der sich auf die Performance auswirkt. Bei normaler Geschwindigkeit merkt man das in der Regel nicht, bei maximal beschleunigten Engines hat es allerdings seine Auswirkungen.

Man sollte also, wenn man gerade ein Match durchführt, nicht während des Matches auf eine neue Version umsteigen, da jede neue Version aufgrund geänderter Optionen und geänderter lua-Dateien eventuell Änderungen in der Performance mit sich bringt. Vor Benutzung einer neuen Programmversion sollte man daher stets neue Messungen durchführen, inwieweit sich eine Engine beschleunigen lässt.

Damit komme ich nun zum letzten Punkt unserer Enginematches. In Arena und Winboard sollte man die Bedenkzeiteinstellung innerhalb der GUI etwas großzügig gestalten, damit die GUI nicht von sich aus eine Matchpartie wegen Zeitüberschreitung abbricht. Dies hat folgenden Hintergrund:

Sobald ein Zug ausgeführt wird, wird er an die GUI übertragen und die Bedenkzeit des Gegners beginnt zu laufen. Bei Sensorbrettern normalerweise kein Problem, da ein Zug normalerweise dadurch ausgeführt wird, dass man die Figur vom Ausgangsfelt anhebt und auf dem Zielfeld abstellt. Es gibt also nur 2 "Tastenaktionen", Ausgangsfeld und Zielfeld. Anders ist es jedoch bei Tastengeräten. Hier werden in der Regel mindestens 5 Tasten gedrückt. Buchstabe Ausgangsfeld, Zahl Ausgangsfeld, Buchstabe Zielfeld, Zahl Zielfeld, Enter. Während dieser ganzen Eingaben läuft in der GUI aber bereits die Bedenkzeit. Bei normaler Enginegeschwindigkeit gehen so wichtige Sekunden verloren, was sich über die Partie natürlich summiert. Noch länger dauert es, bei der Emulation des Mattel, der nur mit Cursortasten bedient wird. Bis der Cursor durch andauerndes Drücken der Richtungstasten das Anfangsfeld ausgewählt hat und die Figur dann zum Zielfeld bringt, können schon mal locker 10 Sekunden vergehen. 10 Sekunden in denen innerhalb der GUI aber bereits die Zeit des Mattel läuft.

Es macht also durchaus Sinn, innerhalb der GUI eine höhere Bedenkzeit einzugeben, als für die gewählte Spielstufe eigentlich erforderlich ist. Die Engines steuern ihre Bedenkzeit sowieso aufgrund ihrer eingestellten Spielstufen und richten sich nicht nach der GUI. Insofern kann man hier ruhig großzügig sein. Man könnte natürlich auch die Option abwählen, dass bei Zeitüberschreitung die Partie beendet wird oder eine Stufe wählen in der Zeitüberschreitungen von der GUI nicht angemahnt werden (z.B. Durchschnittlich x Sekunden/Zug oder Unendlich). Allerdings kommt einem da dann das oben bereits geschilderte "Aufgabeproblem" in die Quere, weswegen ich eher dazu neige eine höhere Turnierbedenkzeit einzustellen oder - was bei entsprechender Rechenleistung natürlich auch geht - beide Kontrahenten mit 110 % rechnen zu lassen (was dann diese zusätzliche Zeit auffängt und bei gleicher Einstellung beider Engines für keine einen Nachteil bedeutet)

Nun noch ein Tipp zum Schluss. Bevor man unter Arena ein Match startet, sollte man jede Engine einmal reingeladen und die entsprechende Spielstufe eingestellt haben. Erst danach sollte man das Match anlegen. Zudem sollte bei Arena in den Turnieroptionen eingestellt sein, dass nach Ende der Partien die Engines neu geladen werden. Ansonsten kann es vorkommen, dass sich eine Engine - warum auch immer - auf die Grundeinstellungen zurücksetzt, noch die alte Partie im Speicher hat, oder sonst irgendeinen Unsinn anstellt. Wird sie neu geladen, werden jedoch die in den Engineoptionen definierten Spielstufen neu eingestellt und die Engine ist auch definitiv im "New Game" Modus.

Nun noch kurz der 3. Punkt

3. automatische Turniere mit mehreren Teilnehmern

Das ist im Endeffekt schnell abgehakt. Grundsätzlich gilt unter Arena dasselbe wie bei einem Match zwischen 2 Engines. Es sind halt von vornherein alle nötigen Messungen vorzunehmen, von vornherein jede einzelne Engine einmal reinzuladen und die entsprechenden Leveleinstellungen durchzuführen und dann erst das Turnier entsprechend anzulegen. Bezüglich möglicher Probleme gilt das bereits vorher für Matchpartien gesagte.

Was ich allerdings nun noch nicht probiert habe sind Matches zwischen Engines, bei denen eine bestimmte Zeitstufe (also z.B. 40/120) definiert werden muss (z.B. neuere Mephistos), die also nicht über normale Levels oder feste Zeiteinstellungen wie die älteren Geräte verfügen. Daher an dieser Stelle nochmal...

... - to be continued -
__________________
Mein Profil beim ICCF (International Correspondence Chess Federation)
https://www.iccf.com/player?id=89948&tab=3

Geändert von Hartmut (06.08.2019 um 19:04 Uhr)
Mit Zitat antworten
Folgende 3 Benutzer sagen Danke zu Hartmut für den nützlichen Beitrag:
applechess (07.08.2019), Boris (27.08.2019), Solwac (07.08.2019)