mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-06 10:53:50 +08:00
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
This commit is contained in:
committed by
Stéphane Nicolet
parent
8a74c08928
commit
f7494961de
@@ -1081,33 +1081,22 @@ Value Eval::evaluate(const Position& pos) {
|
|||||||
|
|
||||||
Value v;
|
Value v;
|
||||||
|
|
||||||
if (!useNNUE)
|
// Deciding between classical and NNUE eval: for high PSQ imbalance we use classical,
|
||||||
v = Evaluation<NO_TRACE>(pos).value();
|
// 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
|
else
|
||||||
{
|
{
|
||||||
// Scale and shift NNUE for compatibility with search and classical evaluation
|
int scale = 883
|
||||||
auto adjusted_NNUE = [&]()
|
+ 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())
|
if (pos.is_chess960())
|
||||||
nnue += fix_FRC(pos);
|
v += 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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Damp down the evaluation linearly when shuffling
|
// Damp down the evaluation linearly when shuffling
|
||||||
|
|||||||
Reference in New Issue
Block a user