Skip to content

Commit 82f6779

Browse files
committed
Don't blunder under extreme time pressure
We always attempt to keep at least this emergencyBaseTime at clock. But if available time is very low it means that we will force ourself to play immediately to satisfy the emergencyBaseTime constrain and so leading to blunders. Patch is good at short and very short TC (15secs and 5secs respectively) LLR: 2.96 (-2.94,2.94) [-1.50,4.50] Total: 26590 W: 5426 L: 5245 D: 15919 LLR: 2.96 (-2.94,2.94) [-1.50,4.50] Total: 5767 W: 1397 L: 1268 D: 3102 Instead seems has no influence at longer TC (60 secs) LLR: -2.96 (-2.94,2.94) [0.00,6.00] Total: 79862 W: 13623 L: 13339 D: 52900 So it is committed to have a broader testing but is to be consider still EXPERIMENTAL and can be reverted easily. No functional change.
1 parent 3abccdc commit 82f6779

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/timeman.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
*/
1919

20-
#include <cmath>
2120
#include <algorithm>
21+
#include <cmath>
2222

2323
#include "search.h"
2424
#include "timeman.h"
@@ -110,7 +110,12 @@ void TimeManager::init(const Search::LimitsType& limits, int currentPly, Color u
110110

111111
// Initialize to maximum values but unstablePVExtraTime that is reset
112112
unstablePVExtraTime = 0;
113-
optimumSearchTime = maximumSearchTime = limits.time[us];
113+
optimumSearchTime = maximumSearchTime = limits.time[us]; // In msec
114+
115+
// Scale down emergencyBaseTime if we are under very high time pressure to
116+
// avoid moving immediately and so blundering.
117+
if (maximumSearchTime)
118+
emergencyBaseTime /= std::max(emergencyBaseTime * 100 / maximumSearchTime, 1);
114119

115120
// We calculate optimum time usage for different hypothetic "moves to go"-values and choose the
116121
// minimum of calculated search time values. Usually the greatest hypMTG gives the minimum values.

0 commit comments

Comments
 (0)