From: Jerry Donald Watson Date: Mon, 26 Mar 2018 07:26:50 +0000 (+0200) Subject: Make kingRing always 8 squares X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=f0f6da2d30fc005fd0fa126ee1eefd11fe10a604;hp=62937d1007e0f97e629f376adca4f4ad738e95d1 Make kingRing always 8 squares Make kingRing always eight squares, extending the bitboard to the F file if the king is on the H file, and to the C file if the king is on the A file. This may deal with cases where Stockfish (like many other engines) would shift the king around on the back rank like g1h1, not because there is some imminent threat, but because it makes king safety look a little better just because the king ring had a smaller area. STC: LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 34000 W: 7167 L: 6877 D: 19956 http://tests.stockfishchess.org/tests/view/5ab8216d0ebc5902932cbe64 LTC: LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 22574 W: 3576 L: 3370 D: 15628 http://tests.stockfishchess.org/tests/view/5ab84e6a0ebc5902932cbe72 How to continue from there? This patch probably makes it easier to tune the king safety evaluation, because the new regularity of the king ring size will make the king safety function more continuous. Closes https://github.com/official-stockfish/Stockfish/pull/1512 Bench: 5934103 --- diff --git a/src/bitboard.h b/src/bitboard.h index 6032f47f..3d629de1 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -165,8 +165,9 @@ constexpr Bitboard make_bitboard(Square s, Squares... squares) { template constexpr Bitboard shift(Bitboard b) { return D == NORTH ? b << 8 : D == SOUTH ? b >> 8 - : D == NORTH_EAST ? (b & ~FileHBB) << 9 : D == SOUTH_EAST ? (b & ~FileHBB) >> 7 - : D == NORTH_WEST ? (b & ~FileABB) << 7 : D == SOUTH_WEST ? (b & ~FileABB) >> 9 + : D == EAST ? (b & ~FileHBB) << 1 : D == WEST ? (b & ~FileABB) >> 1 + : D == NORTH_EAST ? (b & ~FileHBB) << 9 : D == NORTH_WEST ? (b & ~FileABB) << 7 + : D == SOUTH_EAST ? (b & ~FileHBB) >> 7 : D == SOUTH_WEST ? (b & ~FileABB) >> 9 : 0; } diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 48c6e8ea..c50d14c2 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -275,6 +275,12 @@ namespace { if (relative_rank(Us, pos.square(Us)) == RANK_1) kingRing[Us] |= shift(kingRing[Us]); + if (file_of(pos.square(Us)) == FILE_H) + kingRing[Us] |= shift(kingRing[Us]); + + else if (file_of(pos.square(Us)) == FILE_A) + kingRing[Us] |= shift(kingRing[Us]); + kingAttackersCount[Them] = popcount(attackedBy[Us][KING] & pe->pawn_attacks(Them)); kingAttacksCount[Them] = kingAttackersWeight[Them] = 0; }