From f0f6da2d30fc005fd0fa126ee1eefd11fe10a604 Mon Sep 17 00:00:00 2001 From: Jerry Donald Watson Date: Mon, 26 Mar 2018 09:26:50 +0200 Subject: [PATCH 1/1] 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 --- src/bitboard.h | 5 +++-- src/evaluate.cpp | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) 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; } -- 2.39.2