1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-07-11 19:49:14 +00:00

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
This commit is contained in:
Stéphane Nicolet 2018-03-07 22:12:29 +01:00
parent 56a104e2e0
commit 6d8f583af2
2 changed files with 14 additions and 2 deletions

View file

@ -167,6 +167,7 @@ namespace {
const Score CloseEnemies = S( 7, 0);
const Score Hanging = S( 52, 30);
const Score HinderPassedPawn = S( 8, 1);
const Score KnightOnQueen = S( 21, 11);
const Score LongRangedBishop = S( 22, 0);
const Score MinorBehindPawn = S( 16, 0);
const Score PawnlessFlank = S( 20, 80);
@ -595,6 +596,17 @@ namespace {
score += ThreatOnQueen * popcount(b & safeThreats);
// Bonus for knight threats on the next moves against enemy queen
if (pos.count<QUEEN>(Them) == 1)
{
b = pos.attacks_from<KNIGHT>(pos.square<QUEEN>(Them))
& attackedBy[Us][KNIGHT]
& ~pos.pieces(Us, PAWN, KING)
& ~stronglyProtected;
score += KnightOnQueen * popcount(b);
}
if (T)
Trace::add(THREAT, Us, score);