mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 09:13:08 +00:00
Remove QueenOn7th and QueenOnPawn
Small simplification. Passed SPRT(-3,1) both at STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 17051 W: 3132 L: 3005 D: 10914 and LTC: LLR: 4.55 (-2.94,2.94) [-3.00,1.00] Total: 24890 W: 3842 L: 3646 D: 17402 The rationale behind this is that I've never managed to add a Queen on 7th rank bonus in DiscoCheck, because it never showed to be positive (evne slightly) in testing. The only thing that worked is Rook on 7th rank. In terms of SF code, it seemed natural to group it with QueenOnPawn as well as those are done together. I know you're against groupping in general, but when it comes to non regression test, you are being more conservative by groupping. If the group passes SPRT(-3,1) it's safer to commit, than test every component in SPRT(-3,1) and end up with the risk of commiting several -1 elo regression instead of just one -1 elo regression. In chess terms, perhaps it's just easier to manouver a Queen (which can more also diagonaly) than a Rook. Therefore you can let the search do its job without needing eval ad-hoc terms to guide it. For the Rook which takes more moves to manouver such eval terms can be (marginally) useful. bench: 7473314
This commit is contained in:
parent
3b19ea6ae5
commit
be641e881f
1 changed files with 13 additions and 17 deletions
|
@ -162,9 +162,7 @@ namespace {
|
|||
|
||||
const Score Tempo = make_score(24, 11);
|
||||
const Score RookOn7th = make_score(11, 20);
|
||||
const Score QueenOn7th = make_score( 3, 8);
|
||||
const Score RookOnPawn = make_score(10, 28);
|
||||
const Score QueenOnPawn = make_score( 4, 20);
|
||||
const Score RookOpenFile = make_score(43, 21);
|
||||
const Score RookSemiopenFile = make_score(19, 10);
|
||||
const Score BishopPawns = make_score( 8, 12);
|
||||
|
@ -514,23 +512,21 @@ Value do_evaluate(const Position& pos) {
|
|||
score += MinorBehindPawn;
|
||||
}
|
||||
|
||||
if ( (Pt == ROOK || Pt == QUEEN)
|
||||
&& relative_rank(Us, s) >= RANK_5)
|
||||
{
|
||||
// Major piece on 7th rank and enemy king trapped on 8th
|
||||
if ( relative_rank(Us, s) == RANK_7
|
||||
&& relative_rank(Us, pos.king_square(Them)) == RANK_8)
|
||||
score += Pt == ROOK ? RookOn7th : QueenOn7th;
|
||||
|
||||
// Major piece attacking enemy pawns on the same rank/file
|
||||
Bitboard pawns = pos.pieces(Them, PAWN) & PseudoAttacks[ROOK][s];
|
||||
if (pawns)
|
||||
score += popcount<Max15>(pawns) * (Pt == ROOK ? RookOnPawn : QueenOnPawn);
|
||||
}
|
||||
|
||||
// Special extra evaluation for rooks
|
||||
if (Pt == ROOK)
|
||||
{
|
||||
// Rook on 7th rank and enemy king trapped on 8th
|
||||
if ( relative_rank(Us, s) == RANK_7
|
||||
&& relative_rank(Us, pos.king_square(Them)) == RANK_8)
|
||||
score += RookOn7th;
|
||||
|
||||
// Rook piece attacking enemy pawns on the same rank/file
|
||||
if (relative_rank(Us, s) >= RANK_5)
|
||||
{
|
||||
Bitboard pawns = pos.pieces(Them, PAWN) & PseudoAttacks[ROOK][s];
|
||||
if (pawns)
|
||||
score += popcount<Max15>(pawns) * RookOnPawn;
|
||||
}
|
||||
|
||||
// Give a bonus for a rook on a open or semi-open file
|
||||
if (ei.pi->semiopen(Us, file_of(s)))
|
||||
score += ei.pi->semiopen(Them, file_of(s)) ? RookOpenFile : RookSemiopenFile;
|
||||
|
|
Loading…
Add table
Reference in a new issue