Fix premature using of all available time in x/y TC
authorIIvec <ivan.ivec@gmail.com>
Sun, 15 Oct 2017 14:44:29 +0000 (16:44 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 22 Oct 2017 05:43:37 +0000 (07:43 +0200)
In x/y time controls there was a theoretical possibility
to use all available time few moves before the clock will
be updated with new time. This patch fixes that issue.

Tested at 60/15 time control:

LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 113963 W: 20008 L: 20042 D: 73913

The test was done without adjudication rules!

Bench 5234652

src/timeman.cpp

index 2612fb52fa88762474170f182a1ef98846180b04..0c5224642c191856bc458426597abdcee8e7edbb 100644 (file)
@@ -52,6 +52,9 @@ namespace {
         else
             ratio *= 1.5;
 
+        if (movesToGo > 1)
+            ratio = std::min(0.75, ratio);
+
         ratio *= 1 + inc / (myTime * 8.5);
     }
     // Otherwise we increase usage of remaining time as the game goes on