]> git.sesse.net Git - stockfish/commit
Normalize evaluation
authorJoost VandeVondele <Joost.VandeVondele@gmail.com>
Mon, 31 Oct 2022 19:36:43 +0000 (20:36 +0100)
committerJoost VandeVondele <Joost.VandeVondele@gmail.com>
Sat, 5 Nov 2022 08:15:53 +0000 (09:15 +0100)
commitad2aa8c06f438de8b8bb7b7c8726430e3f2a5685
tree04612829bebb6b0b833debd97d337a5a4d5becd5
parent61a2cb84a60b8a48a0e1d34955d8a4d1acdcf497
Normalize evaluation

Normalizes the internal value as reported by evaluate or search
to the UCI centipawn result used in output. This value is derived from
the win_rate_model() such that Stockfish outputs an advantage of
"100 centipawns" for a position if the engine has a 50% probability to win
from this position in selfplay at fishtest LTC time control.

The reason to introduce this normalization is that our evaluation is, since NNUE,
no longer related to the classical parameter PawnValueEg (=208). This leads to
the current evaluation changing quite a bit from release to release, for example,
the eval needed to have 50% win probability at fishtest LTC (in cp and internal Value):

June 2020  :   113cp (237)
June 2021  :   115cp (240)
April 2022 :   134cp (279)
July 2022  :   167cp (348)

With this patch, a 100cp advantage will have a fixed interpretation,
i.e. a 50% win chance. To keep this value steady, it will be needed to update the win_rate_model()
from time to time, based on fishtest data. This analysis can be performed with
a set of scripts currently available at https://github.com/vondele/WLD_model

fixes https://github.com/official-stockfish/Stockfish/issues/4155
closes https://github.com/official-stockfish/Stockfish/pull/4216

No functional change
src/nnue/evaluate_nnue.cpp
src/uci.cpp
src/uci.h