Simplify connected pawn scoring
authorprotonspring <mike@whiteley.org>
Mon, 23 Sep 2019 01:48:52 +0000 (19:48 -0600)
committerStéphane Nicolet <cassio@free.fr>
Mon, 23 Sep 2019 05:12:32 +0000 (07:12 +0200)
When scoring the connected pawns, replace the intricate ternary expressions
choosing the coefficient by a simpler addition of boolean conditions:

` value = Connected * (2 + phalanx - opposed) `

This is the map showing the old coefficients and the new ones:

```
phalanx and unopposed:     3x   -> 3x
phalanx and opposed:       1.5x -> 2x
not phalanx and unopposed: 2x   -> 2x
not phalanx and opposed:   1x   -> 1x
```

STC
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 11354 W: 2579 L: 2437 D: 6338
http://tests.stockfishchess.org/tests/view/5d8151f00ebc5971531d244f

LTC
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 41221 W: 7001 L: 6913 D: 27307
http://tests.stockfishchess.org/tests/view/5d818f930ebc5971531d26d6

Bench: 3959889

blah

src/evaluate.cpp
src/pawns.cpp

index a7a091abd154d711a127909f8c0705312dc2713d..9521cd100282487f44ba3926f01afde124797bc6 100644 (file)
@@ -353,7 +353,7 @@ namespace {
 
             // Bonus for rook on an open or semi-open file
             if (pos.is_on_semiopen_file(Us, s))
-                score += RookOnFile[bool(pos.is_on_semiopen_file(Them, s))];
+                score += RookOnFile[pos.is_on_semiopen_file(Them, s)];
 
             // Penalty when trapped by the king, even more if the king cannot castle
             else if (mob <= 3)
index 1ae65bf181bcb74dac8755704776bf95a31a3a4c..f60411993fcc0877ed83a8a632f25945018aa9db 100644 (file)
@@ -130,7 +130,7 @@ namespace {
         // Score this pawn
         if (support | phalanx)
         {
-            int v =  Connected[r] * (phalanx ? 3 : 2) / (opposed ? 2 : 1)
+            int v =  Connected[r] * (2 + bool(phalanx) - opposed)
                    + 17 * popcount(support);
 
             score += make_score(v, v * (r - 2) / 4);