mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Fix bestThread selection
If multiple threads have the same best move, pick the thread with the largest contribution to the confidence vote. This thread will later be used to display PV, so this patch is about user-friendliness and/or least surprises, it non-functional for playing strenght. closes https://github.com/official-stockfish/Stockfish/pull/4246 No functional change
This commit is contained in:
parent
c7118fb46d
commit
d60f5de967
1 changed files with 8 additions and 6 deletions
|
@ -221,11 +221,14 @@ Thread* ThreadPool::get_best_thread() const {
|
|||
minScore = std::min(minScore, th->rootMoves[0].score);
|
||||
|
||||
// Vote according to score and depth, and select the best thread
|
||||
for (Thread* th : *this)
|
||||
{
|
||||
votes[th->rootMoves[0].pv[0]] +=
|
||||
(th->rootMoves[0].score - minScore + 14) * int(th->completedDepth);
|
||||
auto thread_value = [minScore](Thread* th) {
|
||||
return (th->rootMoves[0].score - minScore + 14) * int(th->completedDepth);
|
||||
};
|
||||
|
||||
for (Thread* th : *this)
|
||||
votes[th->rootMoves[0].pv[0]] += thread_value(th);
|
||||
|
||||
for (Thread* th : *this)
|
||||
if (abs(bestThread->rootMoves[0].score) >= VALUE_TB_WIN_IN_MAX_PLY)
|
||||
{
|
||||
// Make sure we pick the shortest mate / TB conversion or stave off mate the longest
|
||||
|
@ -236,9 +239,8 @@ Thread* ThreadPool::get_best_thread() const {
|
|||
|| ( th->rootMoves[0].score > VALUE_TB_LOSS_IN_MAX_PLY
|
||||
&& ( votes[th->rootMoves[0].pv[0]] > votes[bestThread->rootMoves[0].pv[0]]
|
||||
|| ( votes[th->rootMoves[0].pv[0]] == votes[bestThread->rootMoves[0].pv[0]]
|
||||
&& th->rootMoves[0].pv.size() > bestThread->rootMoves[0].pv.size()))))
|
||||
&& thread_value(th) > thread_value(bestThread)))))
|
||||
bestThread = th;
|
||||
}
|
||||
|
||||
return bestThread;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue