From 37ffacf2094594314346bf9c3d7d8a61911b34d5 Mon Sep 17 00:00:00 2001 From: Vizvezdenec Date: Thu, 20 Jun 2019 03:05:57 +0300 Subject: [PATCH] More bonus for free passed pawn Give even more bonus to passed pawn if adjacent squares to its path are not attacked. passed STC http://tests.stockfishchess.org/tests/view/5d08c9b10ebc5925cf0a6630 LLR: 2.95 (-2.94,2.94) [0.50,4.50] Total: 175197 W: 39859 L: 38816 D: 96522 passed LTC http://tests.stockfishchess.org/tests/view/5d0ab8240ebc5925cf0a8fe4 LLR: 2.95 (-2.94,2.94) [0.00,3.50] Total: 92928 W: 16124 L: 15682 D: 61122 Bench: 3398333 --- src/evaluate.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 3ff1460b..cf478909 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -605,6 +605,7 @@ namespace { }; Bitboard b, bb, squaresToQueen, defendedSquares, unsafeSquares; + Bitboard wideUnsafeSquares; Score score = SCORE_ZERO; b = pe->passed_pawns(Us); @@ -639,6 +640,7 @@ namespace { // consider all the squaresToQueen. Otherwise consider only the squares // in the pawn's path attacked or occupied by the enemy. defendedSquares = unsafeSquares = squaresToQueen = forward_file_bb(Us, s); + wideUnsafeSquares = AllSquares; bb = forward_file_bb(Them, s) & pos.pieces(ROOK, QUEEN); @@ -647,10 +649,14 @@ namespace { if (!(pos.pieces(Them) & bb)) unsafeSquares &= attackedBy[Them][ALL_PIECES] | pos.pieces(Them); + + if (!unsafeSquares) + wideUnsafeSquares = (attackedBy[Them][ALL_PIECES] | pos.pieces(Them)) + & (shift(squaresToQueen) | shift(squaresToQueen)); // If there aren't any enemy attacks, assign a big bonus. Otherwise // assign a smaller bonus if the block square isn't attacked. - int k = !unsafeSquares ? 20 : !(unsafeSquares & blockSq) ? 9 : 0; + int k = !wideUnsafeSquares ? 35 : !unsafeSquares ? 20 : !(unsafeSquares & blockSq) ? 9 : 0; // Assign a larger bonus if the block square is defended. if (defendedSquares & blockSq) -- 2.39.2