1
0
Fork 0
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:
Marco Costalba 2010-05-22 11:55:01 +01:00
parent ecc100d1bb
commit 66b751713e

View file

@ -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);
}