It was a bit of a hack, without intrinsic value, but rather compensating for the
fact that checks were mistuned.
STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 88308 W: 15553 L: 15545 D: 57210
LTC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 53115 W: 6741 L: 6662 D: 39712
bench
5468995
const Score RookOnPawn = S( 8, 24);
const Score TrappedRook = S(92, 0);
const Score CloseEnemies = S( 7, 0);
const Score RookOnPawn = S( 8, 24);
const Score TrappedRook = S(92, 0);
const Score CloseEnemies = S( 7, 0);
- const Score SafeCheck = S(20, 20);
const Score OtherCheck = S(10, 10);
const Score ThreatByHangingPawn = S(71, 61);
const Score LooseEnemies = S( 0, 25);
const Score OtherCheck = S(10, 10);
const Score ThreatByHangingPawn = S(71, 61);
const Score LooseEnemies = S( 0, 25);
// Penalties for enemy's safe checks
const int QueenContactCheck = 997;
// Penalties for enemy's safe checks
const int QueenContactCheck = 997;
- const int QueenCheck = 695;
- const int RookCheck = 638;
- const int BishopCheck = 538;
- const int KnightCheck = 874;
+ const int QueenCheck = 745;
+ const int RookCheck = 688;
+ const int BishopCheck = 588;
+ const int KnightCheck = 924;
// eval_init() initializes king and attack bitboards for a given color
// eval_init() initializes king and attack bitboards for a given color
// Enemy queen safe checks
if ((b1 | b2) & ei.attackedBy[Them][QUEEN] & safe)
// Enemy queen safe checks
if ((b1 | b2) & ei.attackedBy[Them][QUEEN] & safe)
- kingDanger += QueenCheck, score -= SafeCheck;
+ kingDanger += QueenCheck;
// For other pieces, also consider the square safe if attacked twice,
// and only defended by a queen.
// For other pieces, also consider the square safe if attacked twice,
// and only defended by a queen.
// Enemy rooks safe and other checks
if (b1 & ei.attackedBy[Them][ROOK] & safe)
// Enemy rooks safe and other checks
if (b1 & ei.attackedBy[Them][ROOK] & safe)
- kingDanger += RookCheck, score -= SafeCheck;
+ kingDanger += RookCheck;
else if (b1 & ei.attackedBy[Them][ROOK] & other)
score -= OtherCheck;
// Enemy bishops safe and other checks
if (b2 & ei.attackedBy[Them][BISHOP] & safe)
else if (b1 & ei.attackedBy[Them][ROOK] & other)
score -= OtherCheck;
// Enemy bishops safe and other checks
if (b2 & ei.attackedBy[Them][BISHOP] & safe)
- kingDanger += BishopCheck, score -= SafeCheck;
+ kingDanger += BishopCheck;
else if (b2 & ei.attackedBy[Them][BISHOP] & other)
score -= OtherCheck;
else if (b2 & ei.attackedBy[Them][BISHOP] & other)
score -= OtherCheck;
// Enemy knights safe and other checks
b = pos.attacks_from<KNIGHT>(ksq) & ei.attackedBy[Them][KNIGHT];
if (b & safe)
// Enemy knights safe and other checks
b = pos.attacks_from<KNIGHT>(ksq) & ei.attackedBy[Them][KNIGHT];
if (b & safe)
- kingDanger += KnightCheck, score -= SafeCheck;
+ kingDanger += KnightCheck;
else if (b & other)
score -= OtherCheck;
else if (b & other)
score -= OtherCheck;