Skip to content

Commit 6d8f583

Browse files
committed
Knight threats on Queen
We give a S(21,11) bonus for knight threats on the next moves against enemy queen. The threats are from squares which are "not strongly protected" and which may be empty, contain enemy pieces or even one of our piece at the moment (N,B,Q,R) -- hence be two-steps threats in the later case because we will have to move our piece and *then* attack the enemy queen with the knight. STC: http://tests.stockfishchess.org/tests/view/5a9e442e0ebc590297cb6162 LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 35129 W: 7346 L: 7052 D: 20731 LTC: http://tests.stockfishchess.org/tests/view/5a9e6e620ebc590297cb617f LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 42442 W: 6695 L: 6414 D: 29333 How to continue from there? • Trying to refine the threat condition ("not strongly protected") • Trying the two-steps idea for bishops or rooks threats against queen Bench: 6051247
1 parent 56a104e commit 6d8f583

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/evaluate.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ namespace {
167167
const Score CloseEnemies = S( 7, 0);
168168
const Score Hanging = S( 52, 30);
169169
const Score HinderPassedPawn = S( 8, 1);
170+
const Score KnightOnQueen = S( 21, 11);
170171
const Score LongRangedBishop = S( 22, 0);
171172
const Score MinorBehindPawn = S( 16, 0);
172173
const Score PawnlessFlank = S( 20, 80);
@@ -489,7 +490,7 @@ namespace {
489490
if (!(pos.pieces(PAWN) & kf))
490491
score -= PawnlessFlank;
491492

492-
// Find the squares that opponent attacks in our king flank, and the squares
493+
// Find the squares that opponent attacks in our king flank, and the squares
493494
// which are attacked twice in that flank but not defended by our pawns.
494495
b1 = attackedBy[Them][ALL_PIECES] & kf & Camp;
495496
b2 = b1 & attackedBy2[Them] & ~attackedBy[Us][PAWN];
@@ -595,6 +596,17 @@ namespace {
595596

596597
score += ThreatOnQueen * popcount(b & safeThreats);
597598

599+
// Bonus for knight threats on the next moves against enemy queen
600+
if (pos.count<QUEEN>(Them) == 1)
601+
{
602+
b = pos.attacks_from<KNIGHT>(pos.square<QUEEN>(Them))
603+
& attackedBy[Us][KNIGHT]
604+
& ~pos.pieces(Us, PAWN, KING)
605+
& ~stronglyProtected;
606+
607+
score += KnightOnQueen * popcount(b);
608+
}
609+
598610
if (T)
599611
Trace::add(THREAT, Us, score);
600612

src/pawns.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ template<Color Us>
237237
Value Entry::shelter_storm(const Position& pos, Square ksq) {
238238

239239
constexpr Color Them = (Us == WHITE ? BLACK : WHITE);
240-
constexpr Bitboard ShelterMask =
240+
constexpr Bitboard ShelterMask =
241241
Us == WHITE ? make_bitboard(SQ_A2, SQ_B3, SQ_C2, SQ_F2, SQ_G3, SQ_H2)
242242
: make_bitboard(SQ_A7, SQ_B6, SQ_C7, SQ_F7, SQ_G6, SQ_H7);
243243
constexpr Bitboard StormMask =

0 commit comments

Comments
 (0)