1
0
Fork 0

Reformat Eval::evaluate()

Non functional simplification: the goal of this patch is to make
the style in the evaluate() function similar to the rest of the code.

passed STC:
LLR: 2.94 (-2.94,2.94) <-2.50,0.50>
Total: 95608 W: 24058 L: 24026 D: 47524
Ptnml(0-2): 292, 10379, 26396, 10479, 258
https://tests.stockfishchess.org/tests/view/616c64fd99b580bf37797e4f

closes https://github.com/official-stockfish/Stockfish/pull/3744

Non-functional change
pull/3746/head
Stefano Cardanobile 2021-10-17 19:01:45 +02:00 committed by Stéphane Nicolet
parent 8a74c08928
commit f7494961de
1 changed files with 12 additions and 23 deletions

View File

@ -1081,33 +1081,22 @@ Value Eval::evaluate(const Position& pos) {
Value v;
if (!useNNUE)
v = Evaluation<NO_TRACE>(pos).value();
// Deciding between classical and NNUE eval: for high PSQ imbalance we use classical,
// but we switch to NNUE during long shuffling or with high material on the board.
if ( !useNNUE
|| abs(eg_value(pos.psq_score())) * 5 > (850 + pos.non_pawn_material() / 64) * (5 + pos.rule50_count()))
v = Evaluation<NO_TRACE>(pos).value(); // classical
else
{
// Scale and shift NNUE for compatibility with search and classical evaluation
auto adjusted_NNUE = [&]()
{
int scale = 883
+ 32 * pos.count<PAWN>()
+ 32 * pos.non_pawn_material() / 1024;
int scale = 883
+ 32 * pos.count<PAWN>()
+ 32 * pos.non_pawn_material() / 1024;
Value nnue = NNUE::evaluate(pos, true) * scale / 1024;
v = NNUE::evaluate(pos, true) * scale / 1024; // NNUE
if (pos.is_chess960())
nnue += fix_FRC(pos);
return nnue;
};
// If there is PSQ imbalance we use the classical eval, but we switch to
// NNUE eval faster when shuffling or if the material on the board is high.
int r50 = pos.rule50_count();
Value psq = Value(abs(eg_value(pos.psq_score())));
bool classical = psq * 5 > (850 + pos.non_pawn_material() / 64) * (5 + r50);
v = classical ? Evaluation<NO_TRACE>(pos).value() // classical
: adjusted_NNUE(); // NNUE
if (pos.is_chess960())
v += fix_FRC(pos);
}
// Damp down the evaluation linearly when shuffling