From: Marco Costalba Date: Sat, 14 Feb 2015 14:29:21 +0000 (+0100) Subject: Sync with master X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=0af24a14455bbcde181fff7632722ce55419991e;hp=c0a80afe89e5d48acb3cbca7cf1fc0adb9f2f468 Sync with master Bench: 7369224 --- diff --git a/src/evaluate.cpp b/src/evaluate.cpp index e03dfb94..8f4eb32f 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -162,6 +162,7 @@ namespace { const Score Unstoppable = S( 0, 20); const Score Hanging = S(31, 26); const Score PawnAttackThreat = S(20, 20); + const Score PawnSafePush = S( 5 , 5); // Penalty for a bishop on a1/h1 (a8/h8 for black) which is trapped by // a friendly pawn on b2/g2 (b7/g7 for black). This can obviously only @@ -545,14 +546,18 @@ namespace { score += more_than_one(b) ? KingOnMany : KingOnOne; } - // Add bonus for safe pawn pushes which attacks an enemy piece + // Add a small bonus for safe pawn pushes b = pos.pieces(Us, PAWN) & ~TRank7BB; b = shift_bb(b | (shift_bb(b & TRank2BB) & ~pos.pieces())); b &= ~pos.pieces() & ~ei.attackedBy[Them][PAWN] - & (ei.attackedBy[Us][PAWN] | ~ei.attackedBy[Them][ALL_PIECES]); + & (ei.attackedBy[Us][ALL_PIECES] | ~ei.attackedBy[Them][ALL_PIECES]); + + if (b) + score += popcount(b) * PawnSafePush; + // Add another bonus if the pawn push attacks an enemy piece b = (shift_bb(b) | shift_bb(b)) & pos.pieces(Them) & ~ei.attackedBy[Us][PAWN]; @@ -899,14 +904,14 @@ namespace Eval { void init() { - const double MaxSlope = 8.7; - const double Peak = 1280; - double t = 0.0; + const int MaxSlope = 87; + const int Peak = 12800; + int t = 0; - for (int i = 1; i < 400; ++i) + for (int i = 0; i < 400; ++i) { - t = std::min(Peak, std::min(0.027 * i * i, t + MaxSlope)); - KingDanger[i] = apply_weight(make_score(int(t), 0), Weights[KingSafety]); + t = std::min(Peak, std::min(i * i * 27 / 100, t + MaxSlope)); + KingDanger[i] = apply_weight(make_score(t / 10, 0), Weights[KingSafety]); } }