mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Space bonus in presence of open files
If the opponent has a cramped position, opening a file often helps him/her to exchange pieces, so it makes sense to reduce the space bonus if there are open files. Credits: Leonardo Ljubičić for the strategic idea, Alain Savard for the implementation of the open files calculation, "CrunchyNYC" for the compensation of the numerator. STC: LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 49112 W: 9239 L: 8900 D: 30973 LTC: LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 89415 W: 12014 L: 11601 D: 65800 Bench: 7591630
This commit is contained in:
parent
13b4444d9e
commit
d37dfe9ae4
3 changed files with 5 additions and 2 deletions
|
@ -706,9 +706,9 @@ namespace {
|
|||
// ...count safe + (behind & safe) with a single popcount
|
||||
int bonus = popcount((Us == WHITE ? safe << 32 : safe >> 32) | (behind & safe));
|
||||
bonus = std::min(16, bonus);
|
||||
int weight = pos.count<ALL_PIECES>(Us);
|
||||
int weight = pos.count<ALL_PIECES>(Us) - 2 * ei.pi->open_files();
|
||||
|
||||
return make_score(bonus * weight * weight / 22, 0);
|
||||
return make_score(bonus * weight * weight / 18, 0);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -215,6 +215,7 @@ Entry* probe(const Position& pos) {
|
|||
e->key = key;
|
||||
e->score = evaluate<WHITE>(pos, e) - evaluate<BLACK>(pos, e);
|
||||
e->asymmetry = popcount(e->semiopenFiles[WHITE] ^ e->semiopenFiles[BLACK]);
|
||||
e->openFiles = popcount(e->semiopenFiles[WHITE] & e->semiopenFiles[BLACK]);
|
||||
return e;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ struct Entry {
|
|||
Bitboard passed_pawns(Color c) const { return passedPawns[c]; }
|
||||
Bitboard pawn_attacks_span(Color c) const { return pawnAttacksSpan[c]; }
|
||||
int pawn_asymmetry() const { return asymmetry; }
|
||||
int open_files() const { return openFiles; }
|
||||
|
||||
int semiopen_file(Color c, File f) const {
|
||||
return semiopenFiles[c] & (1 << f);
|
||||
|
@ -74,6 +75,7 @@ struct Entry {
|
|||
int semiopenFiles[COLOR_NB];
|
||||
int pawnsOnSquares[COLOR_NB][COLOR_NB]; // [color][light/dark squares]
|
||||
int asymmetry;
|
||||
int openFiles;
|
||||
};
|
||||
|
||||
typedef HashTable<Entry, 16384> Table;
|
||||
|
|
Loading…
Add table
Reference in a new issue