Currently we use original sorting after a fail low to
research at wider window. This patch instead sorts the
moves according to the last available move's scores.
Strangely no functional change, but should be.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
while (Iteration < PLY_MAX)
{
// Initialize iteration
while (Iteration < PLY_MAX)
{
// Initialize iteration
Iteration++;
BestMoveChangesByIteration[Iteration] = 0;
if (Iteration <= 5)
Iteration++;
BestMoveChangesByIteration[Iteration] = 0;
if (Iteration <= 5)
beta = Min(ValueByIteration[Iteration - 1] + AspirationDelta, VALUE_INFINITE);
}
beta = Min(ValueByIteration[Iteration - 1] + AspirationDelta, VALUE_INFINITE);
}
- // Search to the current depth
+ // Search to the current depth, rml is updated and sorted
value = root_search(p, ss, rml, alpha, beta);
// Write PV to transposition table, in case the relevant entries have
value = root_search(p, ss, rml, alpha, beta);
// Write PV to transposition table, in case the relevant entries have
// If we are pondering or in infinite search, we shouldn't print the
// best move before we are told to do so.
if (!AbortSearch && (PonderSearch || InfiniteSearch))
// If we are pondering or in infinite search, we shouldn't print the
// best move before we are told to do so.
if (!AbortSearch && (PonderSearch || InfiniteSearch))
while (1) // Fail low loop
{
while (1) // Fail low loop
{
+ // Sort the moves before to (re)search
+ rml.sort();
+
// Loop through all the moves in the root move list
for (int i = 0; i < rml.move_count() && !AbortSearch; i++)
{
// Loop through all the moves in the root move list
for (int i = 0; i < rml.move_count() && !AbortSearch; i++)
{
break;
// Remember beta-cutoff and searched nodes counts for this move. The
break;
// Remember beta-cutoff and searched nodes counts for this move. The
- // info is used to sort the root moves at the next iteration.
+ // info is used to sort the root moves for the next iteration.
int64_t our, their;
TM.get_beta_counters(pos.side_to_move(), our, their);
rml.set_beta_counters(i, our, their);
int64_t our, their;
TM.get_beta_counters(pos.side_to_move(), our, their);
rml.set_beta_counters(i, our, their);
+ // Sort the moves before to return
+ rml.sort();
+