Value minScore = this->rootMoves[0].score;
// Find out minimum score and reset votes for moves which can be voted
- for (Thread* th: Threads){
+ for (Thread* th: Threads)
+ {
minScore = std::min(minScore, th->rootMoves[0].score);
votes[th->rootMoves[0].pv[0]] = 0;
}
// Vote according to score and depth
for (Thread* th : Threads)
- votes[th->rootMoves[0].pv[0]] += int(th->rootMoves[0].score - minScore) + int(th->completedDepth);
+ votes[th->rootMoves[0].pv[0]] += int(th->rootMoves[0].score - minScore)
+ + int(th->completedDepth);
// Select best thread
int bestVote = votes[this->rootMoves[0].pv[0]];
- for (Thread* th : Threads){
- if (votes[th->rootMoves[0].pv[0]] > bestVote){
- bestVote = votes[th->rootMoves[0].pv[0]];
- bestThread = th;
+ for (Thread* th : Threads)
+ {
+ if (votes[th->rootMoves[0].pv[0]] > bestVote)
+ {
+ bestVote = votes[th->rootMoves[0].pv[0]];
+ bestThread = th;
}
}
}
-
previousScore = bestThread->rootMoves[0].score;
// Send again PV info if we have a new best thread
{
Depth r = reduction<PvNode>(improving, depth, moveCount);
- if (captureOrPromotion) // (~5 Elo)
- {
- // Decrease reduction by comparing opponent's stat score
- if ((ss-1)->statScore < 0)
- r -= ONE_PLY;
- }
- else
- {
- // Decrease reduction if opponent's move count is high (~5 Elo)
- if ((ss-1)->moveCount > 15)
- r -= ONE_PLY;
+ // Decrease reduction if opponent's move count is high (~10 Elo)
+ if ((ss-1)->moveCount > 15)
+ r -= ONE_PLY;
+ if (!captureOrPromotion)
+ {
// Decrease reduction for exact PV nodes (~0 Elo)
if (pvExact)
r -= ONE_PLY;