Skip to content

Commit

Permalink
Fix rootComplexity calculation
Browse files Browse the repository at this point in the history
The calculation of rootComplexity can't call eval when in check.
Doing so triggers an assert if compiled in debug mode when
the rootpos is evaluated using classical eval.

Fixes #4512

Passed STC:
https://tests.stockfishchess.org/tests/view/6432697431feee5c6d306876
LLR: 2.93 (-2.94,2.94) <-1.75,0.25>
Total: 41096 W: 11017 L: 10815 D: 19264
Ptnml(0-2): 113, 4172, 11780, 4366, 117

Running LTC:
https://tests.stockfishchess.org/tests/view/6432974d31feee5c6d306fc0
LLR: 1.76 (-2.94,2.94) <-1.75,0.25>
Total: 73200 W: 19792 L: 19728 D: 33680
Ptnml(0-2): 24, 6659, 23182, 6699, 36

closes #4515

No functional change
  • Loading branch information
vondele committed Apr 9, 2023
1 parent 59f2085 commit b36d39d
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
2 changes: 2 additions & 0 deletions src/evaluate.cpp
Expand Up @@ -1048,6 +1048,8 @@ namespace {

Value Eval::evaluate(const Position& pos, int* complexity) {

assert(!pos.checkers());

Value v;
Value psq = pos.psq_eg_stm();

Expand Down
10 changes: 6 additions & 4 deletions src/search.cpp
Expand Up @@ -295,10 +295,12 @@ void Thread::search() {
if (mainThread)
{

int rootComplexity;
Eval::evaluate(rootPos, &rootComplexity);

mainThread->complexity = std::min(1.03 + (rootComplexity - 241) / 1552.0, 1.45);
if (!rootPos.checkers())
{
int rootComplexity;
Eval::evaluate(rootPos, &rootComplexity);
mainThread->complexity = std::min(1.03 + (rootComplexity - 241) / 1552.0, 1.45);
}

if (mainThread->bestPreviousScore == VALUE_INFINITE)
for (int i = 0; i < 4; ++i)
Expand Down
1 change: 1 addition & 0 deletions src/thread.cpp
Expand Up @@ -160,6 +160,7 @@ void ThreadPool::clear() {
main()->bestPreviousScore = VALUE_INFINITE;
main()->bestPreviousAverageScore = VALUE_INFINITE;
main()->previousTimeReduction = 1.0;
main()->complexity = 1.0;
}


Expand Down

0 comments on commit b36d39d

Please sign in to comment.