mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-21 09:37:16 +08:00
Candidate passed pawns
Detect safe candidate passers. STC: http://tests.stockfishchess.org/tests/view/5882395c0ebc5915193f78b3 LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 53569 W: 9925 L: 9570 D: 34074 LTC: http://tests.stockfishchess.org/tests/view/5882b4fb0ebc5915193f78e2 LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 77576 W: 10387 L: 10014 D: 57175 Bench: 5325829
This commit is contained in:
committed by
Marco Costalba
parent
58c181de9a
commit
471f7a1b5c
@@ -606,10 +606,11 @@ namespace {
|
||||
}
|
||||
|
||||
|
||||
// evaluate_passed_pawns() evaluates the passed pawns of the given color
|
||||
// evaluate_passer_pawns() evaluates the passed pawns and candidate passed
|
||||
// pawns of the given color.
|
||||
|
||||
template<Color Us, bool DoTrace>
|
||||
Score evaluate_passed_pawns(const Position& pos, const EvalInfo& ei) {
|
||||
Score evaluate_passer_pawns(const Position& pos, const EvalInfo& ei) {
|
||||
|
||||
const Color Them = (Us == WHITE ? BLACK : WHITE);
|
||||
|
||||
@@ -622,7 +623,6 @@ namespace {
|
||||
{
|
||||
Square s = pop_lsb(&b);
|
||||
|
||||
assert(pos.pawn_passed(Us, s));
|
||||
assert(!(pos.pieces(PAWN) & forward_bb(Us, s)));
|
||||
|
||||
bb = forward_bb(Us, s) & (ei.attackedBy[Them][ALL_PIECES] | pos.pieces(Them));
|
||||
@@ -683,6 +683,11 @@ namespace {
|
||||
if (!pos.non_pawn_material(Them))
|
||||
ebonus += 20;
|
||||
|
||||
// Scale down bonus for candidate passers which need more than one pawn
|
||||
// push to become passed.
|
||||
if (!pos.pawn_passed(Us, s + pawn_push(Us)))
|
||||
mbonus /= 2, ebonus /= 2;
|
||||
|
||||
score += make_score(mbonus, ebonus) + PassedFile[file_of(s)];
|
||||
}
|
||||
|
||||
@@ -844,8 +849,8 @@ Value Eval::evaluate(const Position& pos) {
|
||||
- evaluate_threats<BLACK, DoTrace>(pos, ei);
|
||||
|
||||
// Evaluate passed pawns, we need full attack information including king
|
||||
score += evaluate_passed_pawns<WHITE, DoTrace>(pos, ei)
|
||||
- evaluate_passed_pawns<BLACK, DoTrace>(pos, ei);
|
||||
score += evaluate_passer_pawns<WHITE, DoTrace>(pos, ei)
|
||||
- evaluate_passer_pawns<BLACK, DoTrace>(pos, ei);
|
||||
|
||||
// Evaluate space for both sides, only during opening
|
||||
if (pos.non_pawn_material(WHITE) + pos.non_pawn_material(BLACK) >= 12222)
|
||||
|
||||
Reference in New Issue
Block a user