Enable pure NNUE for most variants
authorFabian Fichter <ianfab@users.noreply.github.com>
Wed, 23 Dec 2020 22:41:52 +0000 (23:41 +0100)
committerFabian Fichter <ianfab@users.noreply.github.com>
Wed, 23 Dec 2020 22:44:13 +0000 (23:44 +0100)
Since NNUE is faster and better than classical evaluation,
use pure NNUE for all variants except 3check.

makpong STC
ELO: 94.32 +-43.1 (95%) LOS: 100.0%
Total: 200 W: 102 L: 49 D: 49

makpong LTC
ELO: 96.19 +-59.2 (95%) LOS: 100.0%
Total: 100 W: 49 L: 22 D: 29

minixiangqi STC
ELO: 75.88 +-34.3 (95%) LOS: 100.0%
Total: 200 W: 72 L: 29 D: 99

minixiangqi LTC
ELO: 70.44 +-49.4 (95%) LOS: 99.8%
Total: 100 W: 36 L: 16 D: 48

racingkings STC
ELO: 57.86 +-25.8 (95%) LOS: 100.0%
Total: 400 W: 147 L: 81 D: 172

racingkings LTC
ELO: 56.07 +-50.4 (95%) LOS: 98.7%
Total: 100 W: 35 L: 19 D: 46

losers STC
ELO: 63.23 +-65.5 (95%) LOS: 97.5%
Total: 100 W: 53 L: 35 D: 12

losers LTC
ELO: 31.35 +-65.9 (95%) LOS: 82.8%
Total: 100 W: 50 L: 41 D: 9

src/evaluate.cpp

index 98b2145..6880f69 100644 (file)
@@ -1507,7 +1507,7 @@ Value Eval::evaluate(const Position& pos) {
       // If there is PSQ imbalance use classical eval, with small probability if it is small
       Value psq = Value(abs(eg_value(pos.psq_score())));
       int   r50 = 16 + pos.rule50_count();
-      bool  pure = pos.capture_the_flag_piece() && pos.checking_permitted();
+      bool  pure = !pos.check_counting();
       bool  largePsq = psq * 16 > (NNUEThreshold1 + pos.non_pawn_material() / 64) * r50 && !pure;
       bool  classical = largePsq || (psq > PawnValueMg / 4 && !(pos.this_thread()->nodes & 0xB) && !pure);