mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Add non-linear threats evaluation
Increase threats score according to the number of threats and to the side to move. Constants have been balanced after ~34k iterations. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
ecc100d1bb
commit
66b751713e
1 changed files with 18 additions and 1 deletions
|
@ -148,6 +148,10 @@ namespace {
|
|||
|
||||
#undef S
|
||||
|
||||
// Threats weights indexed by sente (side to move has a bigger weight)
|
||||
const int ConcurrentThreatsWeight[2] = { 3, 15 };
|
||||
const int ThreatsWeight[2] = { 249, 267 };
|
||||
|
||||
// Bonus for unstoppable passed pawns
|
||||
const Value UnstoppablePawnValue = Value(0x500);
|
||||
|
||||
|
@ -636,6 +640,8 @@ namespace {
|
|||
const Color Them = (Us == WHITE ? BLACK : WHITE);
|
||||
|
||||
Bitboard b;
|
||||
Value mg, eg;
|
||||
int sente, threatCount = 0;
|
||||
Score bonus = make_score(0, 0);
|
||||
|
||||
// Enemy pieces not defended by a pawn and under our attack
|
||||
|
@ -654,9 +660,20 @@ namespace {
|
|||
if (b)
|
||||
for (PieceType pt2 = PAWN; pt2 < KING; pt2++)
|
||||
if (b & pos.pieces(pt2))
|
||||
{
|
||||
bonus += ThreatBonus[pt1][pt2];
|
||||
threatCount++;
|
||||
}
|
||||
}
|
||||
ei.value += Sign[Us] * bonus;
|
||||
|
||||
sente = (Us == pos.side_to_move());
|
||||
|
||||
// Non linear threat evaluation. Increase threats score according to the
|
||||
// number of concurrent threats and to the side to move.
|
||||
mg = (mg_value(bonus) + mg_value(bonus) * ConcurrentThreatsWeight[sente] * threatCount / 256) * ThreatsWeight[sente] / 256;
|
||||
eg = (eg_value(bonus) + eg_value(bonus) * ConcurrentThreatsWeight[sente] * threatCount / 256) * ThreatsWeight[sente] / 256;
|
||||
|
||||
ei.value += Sign[Us] * make_score(mg, eg);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue