Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Lc0 Zeiteinteilung
- - By Eduard Nemeth Date 2020-01-23 07:21
Es gibt bei Lc0 zwar einige Parameter mit welchen man bestimmen kann in welcher Partiephase Lc0 schneller, bzw. langsamer ziehen soll, am Ergebnis dass nach 60 Zügen die Zeit aufgebraucht ist, ändert das alles nicht! Soeben spielte ich auf Schach.de eine 16+0 Partie mit Lc0 und bei etwa Zug 60 war die Stellung noch so kompliziert, dass selbst wenige Sekunden pro Zug kaum reichen. Doch Lc0 hatte nur noch die Overhead Zeit übrig (ich stelle dafür mindestens 60s ein weil es auf Schach.de sein kann dass eine Partie länger als 200 Züge gehen kann). So hat Lc0 ab Zug 60 fast sofort gezogen. Ein Verändern von MoveOverhead würde im Prinzip nichts ändern, weil Lc0 immer diese 60 Züge im Kopf hat! Weiss jemand wie man dieses Problem lösen könnte? Wenn die Lc0 Macher meinen dass eine Partie bei 60 Zügen gegessen ist, dann ist das total falsch. Ich weiss mir keinen Rat.
Parent - - By Eduard Nemeth Date 2020-01-24 06:03 Edited 2020-01-24 06:10 Upvotes 1
Könnte jemand im Lc0 Forum, oder bei den Verantwortlichen auf das angesprochene Zeitproblem hinweisen. Lc0 teilt sich bei Partien ohne Bonuszeit die gesamte Zeit auf die ersten 60 Züge auf! Der Rest wird entweder mit der Bonuszeit gespielt, oder mit MoveOverhead. Nur ist es keineswegs so dass die übriggebliebene Zeit von MoveOverhead auch genutzt wird! Spiele ich 16+0 und bei Zug 61 bleiben noch 70s übrig (das ist eine Zeit die ich für MoveOverhead einstelle) dann spielt Lc0 trotzdem so als hätte sie gar keine Zeit mehr! Die Züge werden sofort ausgespielt. Im Onlineschach wird jedoch immer Zeit verbraucht, auch dann wenn die Engine sofort zieht. Lc0 benötigt immer zwischen 0,2s und 0,3s für einen solchen Zug. Geht eine Partie mehrere hundert Züge, was öfter vorkommt, dann benötigt man diese Reservezeit. Fast alle Partien von Lc0 (wenn ich nicht Bullet spiele) gehen deutlich über 60 Züge!

Dieses Problem mit Lc0 zu lösen ist für mich deshalb weit wichtiger, als Lösungen anderer Art, wie z.B. mit schnellen GPUs zu suchen. Man könnte auch mit langsamen GPUs schöne Partien mit Lc0 spielen, aber was nutzt alles Schöne wenn es nach Zug 60 vermasselt wird?

Habe soeben 4 Partien gespielt, zwei mit Sergio 256x20 und 2 mit Fat Fritz (alles Remis). In der zweiten Partie mit dem Sergio Netz hatte Lc0 Glück dass nach dem 60. Zug ein leichtes Damenendspiel auf dem Brett stand, und bei Fat Fritz gab es ein Turmendspiel. Hier ist das Beispiel mit Fat Fritz (die komplette PGN mit allen Zeiten sieht man wenn auf "Quote" gedrückt wird):

Event:
Ort:
Datum:

Weiss:
Schwarz:

Ergebnis
Board
Parent - - By Lothar Jung Date 2020-01-24 10:31
Ich habe Dein Zeit-Bonus-Problem im Expertenforum bei Discord gepostet.
Parent - - By Eduard Nemeth Date 2020-01-24 14:13
Danke! Es geht auch nicht darum neue Voreinstellungen zu bekommen. Wenn mit Bonuszeiten gespielt wird, und nicht online, sondern so wie bei TCEC dann kann man die Voreinstellung gerne so lassen. Aber man kann doch einen Parameter entwickeln (vielleicht gibt es ihn ja bereits?) mit dem der Anwender selber bestimmen könnte, in welchem Zug-Rahmen sich Lc0 die Zeit aufteilen soll. Mir zB. wären 80 Züge (statt 60) oder gar mehr viel lieber.
Parent - By Lothar Jung Date 2020-01-24 14:27
Dieser Parameter löst ein Teil Deines Problems:

       --move-overhead=0..100000000
               Amount of time, in milliseconds, that the engine subtracts from it's total
               available time (to compensate for slow connection, interprocess communication,
               etc).
               [UCI: MoveOverheadMs  DEFAULT: 200  MIN: 0  MAX: 100000000]
Parent - - By Lothar Jung Date 2020-01-25 11:45
Hier ein Thread bei Discord:

<@!115054542860713989> since you are here, I made a new branch to test out some of my time management ideas: <https://github.com/borg323/lc0/tree/moves_estimator>
This separates the time curve from the moves remaining estimator. As a result there are 6 parameters, namely (UCI names):
```
TimeFactor
TimeFactorSlope
TimeMidpointMove
TimeSteepness
GameMidpointMove
GameMovesSteepness
```
`GameMidpointMove` and `GameMovesSteepness` are the old `TimeMidpointMove` and `TimeSteepness`, now used as a real moves remaining estimator (with default values fit to a sample of actual games, see issue 869)
The remaining define a generic time curve on top of this.

https://cdn.discordapp.com/attachments/425419999096733706/670577418716708864/time_curve.jpg
Parent - - By Eduard Nemeth Date 2020-01-25 12:03
Danke.
An der Grafik sieht man aber auch dass das alles nur bis Zug 60 beeinflussbar ist. Bis Zug 60 komme ich aber klar. Es geht um die Zeit danach! Und da ist keine mehr! Nach Zug 60 spielt man nur noch mit der Bonuszeit und Move Overhead. Ich möchte Lc0 aber so einstellen dass auch nach Zug 60 noch normale Zeit vorhanden ist.
Parent - By Lothar Jung Date 2020-01-25 12:55
Hier die Reichweite der Parameter:

What ranges are plausible for these parameters? (Err on the side of too large here, due to leverage this is beneficial for convergence)

I'm doing a clop with:
```
LinearParameter TimeFactor  1.0 1.5
LinearParameter TimeFactorSlope  0.0 0.005
LinearParameter TimeMidpointMove 40.0 80.0
LinearParameter TimeSteepness 3.0 10.0
```

Demnach kannst Du den TimeMidpointMove auf 80 erhöhen.
Parent - By Lothar Jung Date 2020-01-25 13:29
Für technische Themen sind die Unterforen von Discord LC0
„dev-public“ und „general„ zu empfehlen.
Parent - By Lothar Jung Date 2020-01-25 16:43 Edited 2020-01-25 16:50
Hier die Formel für die MoveTimeAllocation:

1+(TimeFactor-1+move*TimeFactorSlope)/(1+exp(TimeSteepness\*(move-TimeMidpointMove)/20)

Der blaue Graph ist der Default-Wert:

https://cdn.discordapp.com/attachments/425419999096733706/670649501538713670/unknown.png
Up Topic Hauptforen / CSS-Forum / Lc0 Zeiteinteilung

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill