constexpr Score ThreatByKing = S( 24, 89);
constexpr Score ThreatByPawnPush = S( 48, 39);
constexpr Score ThreatBySafePawn = S(173, 94);
- constexpr Score TrappedRook = S( 52, 10);
+ constexpr Score TrappedRook = S( 52, 30);
constexpr Score WeakQueen = S( 49, 15);
#undef S
}
// Bonus for restricting their piece moves
+ // Greater bonus when landing square is occupied
b = attackedBy[Them][ALL_PIECES]
& ~stronglyProtected
& attackedBy[Us][ALL_PIECES];
-
- score += RestrictedPiece * popcount(b);
+ score += RestrictedPiece * (popcount(b) + popcount(b & pos.pieces()));
// Protected or unattacked squares
safe = ~attackedBy[Them][ALL_PIECES] | attackedBy[Us][ALL_PIECES];
template<Tracing T>
Score Evaluation<T>::initiative(Score score) const {
- Value mg = mg_value(score);
- Value eg = eg_value(score);
-
int outflanking = distance<File>(pos.square<KING>(WHITE), pos.square<KING>(BLACK))
- distance<Rank>(pos.square<KING>(WHITE), pos.square<KING>(BLACK));
- 43 * almostUnwinnable
- 100 ;
+ // Give more importance to non-material score
+ score = score - pos.psq_score() / 2;
+ Value mg = mg_value(score);
+ Value eg = eg_value(score);
+
// Now apply the bonus: note that we find the attacking side by extracting the
// sign of the midgame or endgame values, and that we carefully cap the bonus
// so that the midgame and endgame scores do not change sign after the bonus.