1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 08:43:09 +00:00

Fix rootComplexity calculation

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 https://github.com/official-stockfish/Stockfish/issues/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 https://github.com/official-stockfish/Stockfish/pull/4515

No functional change
This commit is contained in:
Joost VandeVondele 2023-04-09 09:18:29 +02:00
parent 59f2085469
commit b36d39de3d
3 changed files with 9 additions and 4 deletions

View file

@ -1048,6 +1048,8 @@ make_v:
Value Eval::evaluate(const Position& pos, int* complexity) { Value Eval::evaluate(const Position& pos, int* complexity) {
assert(!pos.checkers());
Value v; Value v;
Value psq = pos.psq_eg_stm(); Value psq = pos.psq_eg_stm();

View file

@ -295,10 +295,12 @@ void Thread::search() {
if (mainThread) if (mainThread)
{ {
if (!rootPos.checkers())
{
int rootComplexity; int rootComplexity;
Eval::evaluate(rootPos, &rootComplexity); Eval::evaluate(rootPos, &rootComplexity);
mainThread->complexity = std::min(1.03 + (rootComplexity - 241) / 1552.0, 1.45); mainThread->complexity = std::min(1.03 + (rootComplexity - 241) / 1552.0, 1.45);
}
if (mainThread->bestPreviousScore == VALUE_INFINITE) if (mainThread->bestPreviousScore == VALUE_INFINITE)
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)

View file

@ -160,6 +160,7 @@ void ThreadPool::clear() {
main()->bestPreviousScore = VALUE_INFINITE; main()->bestPreviousScore = VALUE_INFINITE;
main()->bestPreviousAverageScore = VALUE_INFINITE; main()->bestPreviousAverageScore = VALUE_INFINITE;
main()->previousTimeReduction = 1.0; main()->previousTimeReduction = 1.0;
main()->complexity = 1.0;
} }