Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / Blogs / Echte und pseudo Gamepairs
- - By Frank Sanders Date 2023-12-30 19:27 Edited 2023-12-31 12:05 Upvotes 1
Was sind echte Gamepairs?
Angenommen ich habe ein EPD-Testset mit 300 Testpositionen aus der STS. Dann kann ich, mit einem Programm wie cutechess, diese 300 Positionen zwei Schachprgramme doppelrundig ausspielen lassen. Das Ergebnis der beiden Programme gegeneinander pro Position kann dann lauten 2-0, 0-2, 1-1 oder 1/2-1/2. Aus dem PGN der Spiele kann ich mir dann mit dem Gamepairs Tool eine Tabelle errechnen lassen, die auf den ausgespielten Testpositionen beruht. Diese Tabelle basierend auf echten Gamepairs könnte dann so aussehhen:

   # PLAYER                     :  RATING  ERROR  PLAYED     W     D     L   (%)  CFS(%)
   1 stockfish_23100805.exe     :    3840   ----    2700  1721   914    65  80.7     100
   2 berserk-12.exe             :    3718     16    2700  1178  1227   295  66.4      75
   3 dragon-3.3.exe             :    3713     14    2700  1136  1275   289  65.7     100
   4 Ethereal-14.25-avx2.exe    :    3622     15    2700   737  1390   573  53.0     100
   5 RubiChess-20230918.exe     :    3581     15    2700   583  1375   742  47.1     100
   6 Koivisto_9.2.exe           :    3537     15    2700   459  1285   956  40.8      79
   7 caissa-1.14.1.exe          :    3531     15    2700   401  1358   941  40.0      99
   8 Clover_6.0.exe             :    3515     15    2700   356  1326  1018  37.7      95
   9 rofChade_3.1.exe           :    3504     15    2700   325  1303  1072  36.2     100
  10 seer_v2.7.exe              :    3477     16    2700   252  1251  1197  32.5     ---

-------------------------------------------------------------------
--- Number of all Gamepairs          : 13500
--- Number of drawn Gamepairs overall: 6352 (= 47.05%)
--- Number of 1:1 drawn Gamepairs    : 4576 (= 33.90%)
--- Number of 2-draws drawn Gamepairs: 1776 (= 13.16%)
-------------------------------------------------------------------


Und pseudo Gamepairs?
Ich glaube es war Frank Schubert, der für eine Version von EloStat die Idee verwirklicht hat, dass wenn ein Programm den Lösungszug findet und das andere nicht, dass als Ergebnis 1-0 bzw. 0-1 genommen wird, so als wäre das Spiel ausgespielt worden. Finden beide den Lösungszug bzw. beide nicht, ist das Ergebnis 1/2-1/2. Das nur die prinzipielle Erklärung, bei Frank Schubert war es etwas komplexer, da auch die Lösungszeit eine Rolle spielte.
Ich habe ein Testset mit 656 Positionen aus der STS genommen und verschiedene Schachprogramme mit dem MEA Tool die Lösungen suchen lassen. Danach habe ich daraus pseudo Gamepairs gemacht und danach diese ausgewertet, so als wären sie ausgespielt worden.
Hier die dazugehörige Tabelle:

   # PLAYER                :  RATING  ERROR  PLAYED     W     D     L   (%)  CFS(%)
   1 stockfish_23100805    :    3821   ----    5904  1373  3762   769  55.1     100
   2 dragon-3.3            :    3804      9    5904  1233  3730   941  52.5      93
   3 berserk-12            :    3798      8    5904  1138  3799   967  51.4      97
   4 Ethereal_14.25        :    3790      9    5904  1149  3627  1128  50.2      63
   5 Koivisto_9.2          :    3788      9    5904  1044  3810  1050  49.9      68
   6 Obsidian90-bmi2       :    3786      8    5904  1062  3737  1105  49.6      75
   7 caissa-1.15-x64       :    3783      8    5904  1034  3739  1131  49.2      97
   8 Clover_6.0            :    3775      8    5904   955  3746  1203  47.9      78
   9 RubiChess-20230918    :    3772      8    5904  1033  3529  1342  47.4      82
  10 rofChade_3.1          :    3768      9    5904   941  3637  1326  46.7     ---

-------------------------------------------------------------------
--- Number of all Gamepairs          : 29520
--- Number of drawn Gamepairs overall: 18558 (= 62.87%)
--- Number of 1:1 drawn Gamepairs    : 11338 (= 38.41%)
--- Number of 2-draws drawn Gamepairs: 7220 (= 24.46%)
-------------------------------------------------------------------
Parent - - By Peter Martan Date 2023-12-30 19:42 Edited 2023-12-30 19:50 Upvotes 1
Frank Sanders schrieb:

Ich habe ein Testset mit 656 Positionen aus der STS genommen und verschiedene Schachprogramme mit dem MEA Tool die Lösungen suchen lassen. Danach habe ich daraus pseudo Gamepairs gemacht und danach diese ausgewertet, so als wären sie ausgespielt worden.

Wie hast du die Auswertung gemacht bzw. machen lassen, Frank?
Hast du ein Tool dem EloStatTS ähnlich geschrieben? Ich hab' das bisher hin und wieder händisch abgezählt, aber immer nur zwischen 2 runs einzelner Engines. Du kannst das für mehrere Engines automatisiert laufen lassen? Oder hast du nur die Lösungs-(Punkte-) Summen zwischen je 2 Engines in Pseudo- WDL- Zahlen umgerechnet (also die Mehr- Lösungen bzw. -Punkte der einen Engine relativ zur anderen von der Gesamtzahl der Stellungen bzw. Punkte abgezogen)?

Dazu noch eine weitere Frage im selben Sinn, wenn du STS- Stellungen nimmst, haben die ja (meistens) statt eines einzelnen single best move multiple Lösungen mit verschieden vielen Punkten, wie bewertest du da WDL? Anhand der Punkte pro Stellung zwischen je 2 Engines?
Parent - - By Frank Sanders Date 2023-12-31 10:53 Upvotes 2
Hier der Ablauf wie ich zu den Ergebnistabellen komme. Der Einfachheit halber mit 3 Programmen und dem Testset:
1) Als erstes lasse ich mit MEA jedes Programm das Testset lösen
2) Wichtig für das weiter Vorgehen sind die log-Files der 3 Programme, die sich im MEA Ordner log befinden. Hier ist eingetragen wie viele Punkte ein Programm für die jeweilige Teststellung erreicht hat. Hier ein Beispiel:

[ 2023-12-27 06:40:25,013 -     INFO ] Score for this test: 29

3) Dann kopiere ich die drei log-Files in einen Ordner, in dem sich ein Python Programm dass ich geschrieben habe befindet. Dieses Programm macht folgendes:
Es generiert ein Turnier (Prog1 gegen Prog2, Prog1 gegen Prog3 und Prog2 gegen Prog3) und wertet dann die jeweiligen log-Files aus, z.B.

erste Teststellung: Prog1 100 Punkte Prog2 100 Punkte > Ergebnis 1/2-1/2
zweite Teststellung: Prog1 100 Punkte Prog2 0 Punkte > Ergebnis 1-0
dritte .... usw.

Danach werden die Ergebnisse vom Programm in ein pgn-File geschrieben dass man entweder mit Ordo oder BayesElo oder EloStat auswerten kann.
Falls du es ausprobieren möchtest kann ich dieses Programm auch gerne zumailen.

Was die Auswertung der STS Stellungen angeht so hatte ich anfangs nur gelöst (100 Punkte) und ungelöst (alle anderen Ergebnisse als bm). Bessere Ergebniss gibt es aber wenn man sagt, dass Programm das den besseren Zug findet gewinnt, also Prog1 87 Punkte, Prog2 31 Punkte > Ergebnis 1-0.
Parent - By Peter Martan Date 2023-12-31 11:01 Edited 2023-12-31 11:09
Suppi!
Was natürlich trotzdem Suite- immanent bleibt, ist die Auswahl und die Punktebewertung der Stellungen, aber prinzipiell ist das das Vorgehen von EloStatTS, nur dass dieses, wie du auch schon schreibst, auch noch die Lösezeiten zwischen je 2 Engines anhand jeder Stellung, die von beiden verglichenen Engines gelöst werden, zur Entscheidung herangezogen werden.
Und was man bei MEA halt auch nicht hat, sind die Extrahalbzüge (die bei VSTC aber auch nicht so viel Rolle spielen) und die Streuung der Resultate zwischen den einzelnen runs bleibt auch gleich.
Dennoch, die Elo, die du so bekommst, sind nicht mehr nur aus Punktesummen relativ zum Maximum ermittelt, sondern WDL- Elo.
Vergleichbar mit irgendwelchen anderen Elo auch nicht, aber solche (übertragbare) gibt's ja sowieso keine

Und ja, danke fürs Angebot, wenn du mir bitte dein Programm per Mail schickst, probier' ich's sicher bald mal aus.
Guten Rutsch, Frank!
Parent - By Peter Martan Date 2024-01-02 08:52 Edited 2024-01-02 09:15
Danke nochmals für dein Tool, Frank!
Wie schon per Mail geschrieben, die Elo, die damit aus der Suite gemacht werden, entstehen natürlich aus denselben Punkteabständen wie in der direkten MEA- Auswertung, aber es sind dadurch, dass sie auf WDL- Vergleichen aller Teilnehmer head to head und Stellung für Stellung mit dem Gampairs Rescoring Tool neu berechnet werden, weniger gespreizte Elo und natürlich vorausgesetzt, die Ergebnisse der Suite sind aussagekräftig in Hinblick auf die Auswahl und die Punktevergabe der Stellungen für die verwendete TC und die verglichenen Engines, sollten die Elo- Abstände damit den Ergebnissen aus dem game playing ähnlicher sein.

   # PLAYER                    :  RATING  ERROR  PLAYED    W     D    L   (%)  CFS(%)
   1 SF240101                  :    3500   ----    3003  179  2709  115  51.1      66
   2 Lc0a4877961-2860M         :    3498     11    3003  178  2685  140  50.6      51
   3 SF231202                  :    3498     11    3003  166  2707  130  50.6     100
   4 Dragon3.3                 :    3482     11    3003  102  2661  240  47.7     ---


Und nur zum Vergleich ein kurzes 3'+1" single thread head to head zwischen den beiden selben SF- Versionen und UHO 6movs 110-119 (in der verwendeten Suite sind's solche aus 6mvs 120-129 bis hinauf zu 8mvs 180-189 selektierte 1001 Stellungen):

Score of Stockfish_240101 vs Stockfish_231202: 99 - 97 - 304 [0.502]
Elo difference: 1.4 +/- 19.1, LOS: 55.7 %, DrawRatio: 60.8 %
500 of 500 games finished.

Natürlich viel zu wenig Partien, nur um einen ersten kleinen Vergleich zu haben.
Was dabei vor allem für mich zählt: die Suite hätte man mit allen Engines gleichzeitig laufen lassen können (single thread 200msec./Stellung, nur Lc0 hatte 2 CPU- Threads zusätzlich zur 3070ti GPU) und wäre damit in 3einhalb Minuten durch gewesen, das Match ist über Nacht gelaufen und hat damit doch ein paar Stunden 30 Threads (auf 30 Concurrencies im Cutechess verteilt) der Hardware gebraucht, und es ist nur ein einzelnes head to head Ergebnis. In der Suite kann man beliebig viele Engines nachträglich hinzufügen mit ihren einzelnen Runs und die Elo werden jeweils aus dem neuen Kollektiv mit allen insgesamt teilnehmenden Engines neu berechnet, damit sollte die error bar mit wachsender Zahl an Runs  für alle sinken, die schon im Lauf der Zeit insgesamt miteinander verglichen wurden.
Feines Tool!
- By Peter Martan Date 2024-01-11 13:31
Mal ein direkter Vergleich zwischen einer EloStatTS- Auswertung und dem neuen WDL- Tool von Frank Sanders. Dieselben 333 Stellungen, 8 Threads und 1000msec. Leider nicht genau dieselben Engines, weil ich im Fritz schon ein paar gespeichert hatte, keine alten löschen wollte und nicht alle aus dem letzten MEA- run neu laufen lassen.

EloStatTS:

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

  1 CrystalMZ040823-8T-Iccf2                 : 3515    2   4980    52.3 %   3499   311/333    1.0s    1.0s   0.97
  2 CoolIris11.80-8T                         : 3514    2   4923    52.2 %   3499   306/333    1.0s    1.0s   0.99
  3 CoolIris11.80-8T-MuPV1                   : 3510    2   4798    51.6 %   3499   298/333    1.0s    1.0s   0.97
  4 Stockfishdev-20231202-8T                 : 3510    2   4806    51.5 %   3499   298/333    1.0s    1.0s   0.98
  5 Stockfishdev-20240101-8T                 : 3508    2   4751    51.2 %   3499   291/333    1.0s    1.0s   0.98
 
12 Dragon3.3byKomodoChess-8T                 : 3497    2   4675    49.5 %   3500   273/333    1.0s    1.0s   0.96
13 Berserk12-8T                              : 3489    2   4580    48.2 %   3501   257/333    1.0s    1.0s   0.95
14 Lc0v0.31.0-dag+git.e429eeb-2790           : 3488    2   4633    48.2 %   3501   257/333    1.0s    1.0s   0.96
15 Ethereal14.25.8T                          : 3488    2   4553    48.2 %   3501   254/333    1.0s    1.0s   0.97
16 Lc0v0.31.0-dag+git.a4877961-2860M         : 3487    2   4614    48.0 %   3501   255/333    1.0s    1.0s   0.98
17 Koivisto9.2-8T                            : 3477    2   4531    46.5 %   3502   237/333    1.0s    1.0s   0.93

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


Und MEA + New Tool + Gamepairs Rescoring- Tool:

   # PLAYER                :  RATING  ERROR  PLAYED    W     D    L   (%)  CFS(%)
   1 CoolIris11.80mupv3    :    3521     13    2997  595  2337   65  58.8      84
   2 CorChess240103        :    3514     12    2997  558  2354   85  57.9      99
   3 SF240101              :    3500   ----    2997  463  2411  123  55.7      63
   4 SF231202              :    3498     12    2997  459  2401  137  55.4     100
   5 Dragon3.3             :    3472     13    2997  374  2332  291  51.4      67
   6 Lc0a4877961-2860M     :    3470     12    2997  360  2336  301  51.0      69
   7 Lc0a4877961-2790M     :    3467     12    2997  347  2335  315  50.5     100
   8 Berserk12             :    3408     12    2997  163  2160  674  41.5      80
   9 Ethereal14.25         :    3403     13    2997  143  2150  704  40.6     100
  10 Koivisto9.2           :    3380     12    2997  105  2020  872  37.2     ---


Und dann noch MEA + New Tool + Elostat:

    Program                               Score     %    Av.Op.  Elo    +   -    Draws

  1 CoolIris11.80mupv3             : 3527.0/5994  58.8   3494   3556    4   4   78.0 %
  2 CorChess240103                 : 3470.0/5994  57.9   3495   3550    4   4   78.5 %
  3 SF240101                       : 3337.0/5994  55.7   3496   3536    4   4   80.4 %
  4 SF231202                       : 3319.0/5994  55.4   3496   3534    4   4   80.1 %
  5 Dragon3.3                      : 3080.0/5994  51.4   3499   3509    4   4   77.8 %
  6 Lc0a4877961-2860M              : 3056.0/5994  51.0   3499   3506    4   4   77.9 %
  7 Lc0a4877961-2790M              : 3029.0/5994  50.5   3500   3504    4   4   77.9 %
  8 Berserk12                      : 2486.0/5994  41.5   3506   3446    5   5   72.1 %
  9 Ethereal14.25                  : 2436.0/5994  40.6   3507   3441    5   5   71.7 %
10 Koivisto9.2                     : 2230.0/5994  37.2   3509   3418    5   5   67.4 %
Up Topic Hauptforen / Blogs / Echte und pseudo Gamepairs

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill