mirror of
https://github.com/opelly27/Stockfish.git
synced 2026-05-20 08:37:44 +00:00
Introduce LastIterations variable
Is set during the last iteration. Sometime also during the second last. During the last iteration is set in the 95% of cases. During the second last is set in the 40% of cases. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
+9
-4
@@ -144,7 +144,7 @@ namespace {
|
|||||||
bool UseFutilityPruning = true;
|
bool UseFutilityPruning = true;
|
||||||
|
|
||||||
// Margins for futility pruning in the quiescence search, at frontier
|
// Margins for futility pruning in the quiescence search, at frontier
|
||||||
// nodes, and at pre-frontier nodes:
|
// nodes, and at pre-frontier nodes
|
||||||
Value FutilityMargin0 = Value(0x80);
|
Value FutilityMargin0 = Value(0x80);
|
||||||
Value FutilityMargin1 = Value(0x100);
|
Value FutilityMargin1 = Value(0x100);
|
||||||
Value FutilityMargin2 = Value(0x300);
|
Value FutilityMargin2 = Value(0x300);
|
||||||
@@ -167,21 +167,22 @@ namespace {
|
|||||||
Depth PawnEndgameExtension[2] = {OnePly, OnePly};
|
Depth PawnEndgameExtension[2] = {OnePly, OnePly};
|
||||||
Depth MateThreatExtension[2] = {Depth(0), Depth(0)};
|
Depth MateThreatExtension[2] = {Depth(0), Depth(0)};
|
||||||
|
|
||||||
// Search depth at iteration 1:
|
// Search depth at iteration 1
|
||||||
const Depth InitialDepth = OnePly /*+ OnePly/2*/;
|
const Depth InitialDepth = OnePly /*+ OnePly/2*/;
|
||||||
|
|
||||||
// Node counters
|
// Node counters
|
||||||
int NodesSincePoll;
|
int NodesSincePoll;
|
||||||
int NodesBetweenPolls = 30000;
|
int NodesBetweenPolls = 30000;
|
||||||
|
|
||||||
// Iteration counter:
|
// Iteration counter
|
||||||
int Iteration;
|
int Iteration;
|
||||||
|
bool LastIterations;
|
||||||
|
|
||||||
// Scores and number of times the best move changed for each iteration:
|
// Scores and number of times the best move changed for each iteration:
|
||||||
Value ValueByIteration[PLY_MAX_PLUS_2];
|
Value ValueByIteration[PLY_MAX_PLUS_2];
|
||||||
int BestMoveChangesByIteration[PLY_MAX_PLUS_2];
|
int BestMoveChangesByIteration[PLY_MAX_PLUS_2];
|
||||||
|
|
||||||
// MultiPV mode:
|
// MultiPV mode
|
||||||
int MultiPV = 1;
|
int MultiPV = 1;
|
||||||
|
|
||||||
// Time managment variables
|
// Time managment variables
|
||||||
@@ -617,6 +618,7 @@ namespace {
|
|||||||
ValueByIteration[0] = Value(0);
|
ValueByIteration[0] = Value(0);
|
||||||
ValueByIteration[1] = rml.get_move_score(0);
|
ValueByIteration[1] = rml.get_move_score(0);
|
||||||
Iteration = 1;
|
Iteration = 1;
|
||||||
|
LastIterations = false;
|
||||||
|
|
||||||
EasyMove = rml.scan_for_easy_move();
|
EasyMove = rml.scan_for_easy_move();
|
||||||
|
|
||||||
@@ -675,6 +677,9 @@ namespace {
|
|||||||
if (ExtraSearchTime > 0 && TimeAdvantage > 2 * MaxSearchTime)
|
if (ExtraSearchTime > 0 && TimeAdvantage > 2 * MaxSearchTime)
|
||||||
ExtraSearchTime += MaxSearchTime / 2;
|
ExtraSearchTime += MaxSearchTime / 2;
|
||||||
|
|
||||||
|
// Try to guess if the current iteration is the last one or the last two
|
||||||
|
LastIterations = (current_search_time() > ((MaxSearchTime + ExtraSearchTime)*58) / 128);
|
||||||
|
|
||||||
// Stop search if most of MaxSearchTime is consumed at the end of the
|
// Stop search if most of MaxSearchTime is consumed at the end of the
|
||||||
// iteration. We probably don't have enough time to search the first
|
// iteration. We probably don't have enough time to search the first
|
||||||
// move at the next iteration anyway.
|
// move at the next iteration anyway.
|
||||||
|
|||||||
Reference in New Issue
Block a user