mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Good bishops on the main diagonals
Bonus in midgame for bishops on long diagonals when the central squares are not occupied by pawns. Author: ElbertoOne Passed STC: LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 10801 W: 1955 L: 1786 D: 7060 http://tests.stockfishchess.org/tests/view/59cf5c1d0ebc5916ff64b9da and LTC: LLR: 2.97 (-2.94,2.94) [0.00,5.00] Total: 83978 W: 10685 L: 10303 D: 62990 http://tests.stockfishchess.org/tests/view/59cf6f6c0ebc5916ff64b9e4 Bench: 5620312
This commit is contained in:
parent
07b5a28a68
commit
452e5154cf
1 changed files with 20 additions and 9 deletions
|
@ -31,6 +31,16 @@
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
const Bitboard LongDiagonals = 0x8142241818244281ULL; // A1..H8 | H1..A8
|
||||||
|
const Bitboard Center = (FileDBB | FileEBB) & (Rank4BB | Rank5BB);
|
||||||
|
const Bitboard QueenSide = FileABB | FileBBB | FileCBB | FileDBB;
|
||||||
|
const Bitboard CenterFiles = FileCBB | FileDBB | FileEBB | FileFBB;
|
||||||
|
const Bitboard KingSide = FileEBB | FileFBB | FileGBB | FileHBB;
|
||||||
|
|
||||||
|
const Bitboard KingFlank[FILE_NB] = {
|
||||||
|
QueenSide, QueenSide, QueenSide, CenterFiles, CenterFiles, KingSide, KingSide, KingSide
|
||||||
|
};
|
||||||
|
|
||||||
namespace Trace {
|
namespace Trace {
|
||||||
|
|
||||||
enum Tracing {NO_TRACE, TRACE};
|
enum Tracing {NO_TRACE, TRACE};
|
||||||
|
@ -204,6 +214,7 @@ namespace {
|
||||||
// Assorted bonuses and penalties used by evaluation
|
// Assorted bonuses and penalties used by evaluation
|
||||||
const Score MinorBehindPawn = S( 16, 0);
|
const Score MinorBehindPawn = S( 16, 0);
|
||||||
const Score BishopPawns = S( 8, 12);
|
const Score BishopPawns = S( 8, 12);
|
||||||
|
const Score LongRangedBishop = S( 22, 0);
|
||||||
const Score RookOnPawn = S( 8, 24);
|
const Score RookOnPawn = S( 8, 24);
|
||||||
const Score TrappedRook = S( 92, 0);
|
const Score TrappedRook = S( 92, 0);
|
||||||
const Score WeakQueen = S( 50, 10);
|
const Score WeakQueen = S( 50, 10);
|
||||||
|
@ -338,10 +349,18 @@ namespace {
|
||||||
&& (pos.pieces(PAWN) & (s + pawn_push(Us))))
|
&& (pos.pieces(PAWN) & (s + pawn_push(Us))))
|
||||||
score += MinorBehindPawn;
|
score += MinorBehindPawn;
|
||||||
|
|
||||||
// Penalty for pawns on the same color square as the bishop
|
|
||||||
if (Pt == BISHOP)
|
if (Pt == BISHOP)
|
||||||
|
{
|
||||||
|
// Penalty for pawns on the same color square as the bishop
|
||||||
score -= BishopPawns * pe->pawns_on_same_color_squares(Us, s);
|
score -= BishopPawns * pe->pawns_on_same_color_squares(Us, s);
|
||||||
|
|
||||||
|
// Bonus for bishop on a long diagonal without pawns in the center
|
||||||
|
if ( (LongDiagonals & s)
|
||||||
|
&& !(attackedBy[Them][PAWN] & s)
|
||||||
|
&& !(Center & PseudoAttacks[BISHOP][s] & pos.pieces(PAWN)))
|
||||||
|
score += LongRangedBishop;
|
||||||
|
}
|
||||||
|
|
||||||
// An important Chess960 pattern: A cornered bishop blocked by a friendly
|
// An important Chess960 pattern: A cornered bishop blocked by a friendly
|
||||||
// pawn diagonally in front of it is a very serious problem, especially
|
// pawn diagonally in front of it is a very serious problem, especially
|
||||||
// when that pawn is also blocked.
|
// when that pawn is also blocked.
|
||||||
|
@ -396,14 +415,6 @@ namespace {
|
||||||
|
|
||||||
// evaluate_king() assigns bonuses and penalties to a king of a given color
|
// evaluate_king() assigns bonuses and penalties to a king of a given color
|
||||||
|
|
||||||
const Bitboard QueenSide = FileABB | FileBBB | FileCBB | FileDBB;
|
|
||||||
const Bitboard CenterFiles = FileCBB | FileDBB | FileEBB | FileFBB;
|
|
||||||
const Bitboard KingSide = FileEBB | FileFBB | FileGBB | FileHBB;
|
|
||||||
|
|
||||||
const Bitboard KingFlank[FILE_NB] = {
|
|
||||||
QueenSide, QueenSide, QueenSide, CenterFiles, CenterFiles, KingSide, KingSide, KingSide
|
|
||||||
};
|
|
||||||
|
|
||||||
template<Tracing T> template<Color Us>
|
template<Tracing T> template<Color Us>
|
||||||
Score Evaluation<T>::evaluate_king() {
|
Score Evaluation<T>::evaluate_king() {
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue