// weights read from UCI parameters. The purpose is to be able to change
// the evaluation weights while keeping the default values of the UCI
// parameters at 100, which looks prettier.
- const int WeightMobilityMidgameInternal = 0x100;
- const int WeightMobilityEndgameInternal = 0x100;
- const int WeightPawnStructureMidgameInternal = 0x100;
- const int WeightPawnStructureEndgameInternal = 0x100;
- const int WeightPassedPawnsMidgameInternal = 0x100;
- const int WeightPassedPawnsEndgameInternal = 0x100;
- const int WeightKingSafetyInternal = 0x110;
- const int WeightKingOppSafetyInternal = 0x110;
- const int WeightSpaceInternal = 0x30;
+ //
+ // Values modified by Joona Kiiski
+ const int WeightMobilityMidgameInternal = 0x0FA;
+ const int WeightMobilityEndgameInternal = 0x10A;
+ const int WeightPawnStructureMidgameInternal = 0x0EC;
+ const int WeightPawnStructureEndgameInternal = 0x0CD;
+ const int WeightPassedPawnsMidgameInternal = 0x108;
+ const int WeightPassedPawnsEndgameInternal = 0x109;
+ const int WeightKingSafetyInternal = 0x0F7;
+ const int WeightKingOppSafetyInternal = 0x101;
+ const int WeightSpaceInternal = 0x02F;
// Visually better to define tables constants
typedef Value V;
V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0) // 8
};
- // Bonus for unstoppable passed pawns:
+ // Bonus for unstoppable passed pawns
const Value UnstoppablePawnValue = Value(0x500);
- // Rooks and queens on the 7th rank:
- const Value MidgameRookOn7thBonus = Value(50);
- const Value EndgameRookOn7thBonus = Value(100);
- const Value MidgameQueenOn7thBonus = Value(25);
- const Value EndgameQueenOn7thBonus = Value(50);
+ // Rooks and queens on the 7th rank
+ const Value MidgameRookOn7thBonus = Value(47);
+ const Value EndgameRookOn7thBonus = Value(98);
+ const Value MidgameQueenOn7thBonus = Value(27);
+ const Value EndgameQueenOn7thBonus = Value(54);
- // Rooks on open files:
- const Value RookOpenFileBonus = Value(40);
- const Value RookHalfOpenFileBonus = Value(20);
+
+ // Rooks on open files
+ const Value RookOpenFileBonus = Value(43);
+ const Value RookHalfOpenFileBonus = Value(19);
// Penalty for rooks trapped inside a friendly king which has lost the
// right to castle:
void evaluate_pieces(const Position& pos, Color us, EvalInfo& ei) {
Bitboard b;
+ Square s, ksq;
+ Color them;
+ int mob;
+ File f;
- for (int i = 0; i < pos.piece_count(us, Piece); i++)
+ for (int i = 0, e = pos.piece_count(us, Piece); i < e; i++)
{
- Square s = pos.piece_list(us, Piece, i);
+ s = pos.piece_list(us, Piece, i);
if (Piece == KNIGHT || Piece == QUEEN)
b = pos.piece_attacks<Piece>(s);
b = rook_attacks_bb(s, pos.occupied_squares() & ~pos.rooks_and_queens(us));
// Attacks, mobility and outposts
- int mob = evaluate_common<Piece>(pos, b, us, ei, s);
+ mob = evaluate_common<Piece>(pos, b, us, ei, s);
// Special patterns: trapped bishops on a7/h7/a2/h2
// and trapped bishops on a1/h1/a8/h8 in Chess960.
continue;
// Queen or rook on 7th rank
- Color them = opposite_color(us);
+ them = opposite_color(us);
if ( relative_rank(us, s) == RANK_7
&& relative_rank(us, pos.king_square(them)) == RANK_8)
continue;
// Open and half-open files
- File f = square_file(s);
+ f = square_file(s);
if (ei.pi->file_is_half_open(us, f))
{
if (ei.pi->file_is_half_open(them, f))
if (mob > 6 || ei.pi->file_is_half_open(us, f))
continue;
- Square ksq = pos.king_square(us);
+ ksq = pos.king_square(us);
if ( square_file(ksq) >= FILE_E
&& square_file(s) > square_file(ksq)