From: Vizvezdenec Date: Wed, 15 Apr 2020 01:13:50 +0000 (+0300) Subject: Space bonus and number of blocked pawns X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=ca4e399ea6d88f8f71c8fd692566223496b10f78;hp=5c58f6712667076babe9ebaac1689436721c42be Space bonus and number of blocked pawns This patch refines the recently introduced interaction between the space bonus and the number of blocked pawns in a position. * pawns count as blocked also if their push square is attacked by 2 enemy pawns; * overall dependence is stronger as well as offset; * bonus increase is capped at 9 blocked pawns in position; passed STC https://tests.stockfishchess.org/tests/view/5e94560663d105aebbab243d LLR: 2.96 (-2.94,2.94) {-0.50,1.50} Total: 29500 W: 5842 L: 5603 D: 18055 Ptnml(0-2): 504, 3443, 6677, 3562, 564 passed LTC https://tests.stockfishchess.org/tests/view/5e95b383c2aaa99f75d1a14d LLR: 2.95 (-2.94,2.94) {0.25,1.75} Total: 63504 W: 8329 L: 7974 D: 47201 Ptnml(0-2): 492, 5848, 18720, 6197, 495 closes https://github.com/official-stockfish/Stockfish/pull/2631 bench 4956028 --- diff --git a/src/evaluate.cpp b/src/evaluate.cpp index cd535d88..8feedfeb 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -695,7 +695,7 @@ namespace { behind |= shift(behind); int bonus = popcount(safe) + popcount(behind & safe & ~attackedBy[Them][ALL_PIECES]); - int weight = pos.count(Us) - 2 + pe->blocked_count() / 2; + int weight = pos.count(Us) - 3 + std::min(pe->blocked_count(), 9); Score score = make_score(bonus * weight * weight / 16, 0); if (T) diff --git a/src/pawns.cpp b/src/pawns.cpp index a2063a8f..75e6ad7a 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -106,7 +106,7 @@ namespace { phalanx = neighbours & rank_bb(s); support = neighbours & rank_bb(s - Up); - e->blockedCount[Us] += bool(blocked); + e->blockedCount[Us] += blocked || more_than_one(leverPush); // A pawn is backward when it is behind all pawns of the same color on // the adjacent files and cannot safely advance.