X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.h;h=75e1f9150cc77958014207a4f81b21ecd9e1e6b4;hp=c295985eb490df75326872f2b46a3c8298dd8a23;hb=94b9c65e09b5d396bebb29b62d9979139b5fbdfa;hpb=5c81602d14539f8259a715477315e28b5de7cb54 diff --git a/src/evaluate.h b/src/evaluate.h index c295985e..75e1f915 100644 --- a/src/evaluate.h +++ b/src/evaluate.h @@ -1,7 +1,7 @@ /* Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2009 Marco Costalba + Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,6 +25,8 @@ //// Includes //// +#include + #include "material.h" #include "pawns.h" @@ -39,30 +41,32 @@ /// arguments to the evaluation function, and the search can make use of its /// contents to make intelligent search decisions. /// -/// At the moment, this is not utilized very much: The only part of the +/// At the moment, this is not utilized very much: The only part of the /// EvalInfo object which is used by the search is futilityMargin. class Position; struct EvalInfo { + EvalInfo() { kingDanger[0] = kingDanger[1] = VALUE_ZERO; } + // Middle game and endgame evaluations - Value mgValue, egValue; + Score value; // Pointers to material and pawn hash table entries MaterialInfo* mi; PawnInfo* pi; // attackedBy[color][piece type] is a bitboard representing all squares - // attacked by a given color and piece type. attackedBy[color][0] contains + // attacked by a given color and piece type, attackedBy[color][0] contains // all squares attacked by the given color. Bitboard attackedBy[2][8]; Bitboard attacked_by(Color c) const { return attackedBy[c][0]; } Bitboard attacked_by(Color c, PieceType pt) const { return attackedBy[c][pt]; } // kingZone[color] is the zone around the enemy king which is considered - // by the king safety evaluation. This consists of the squares directly + // by the king safety evaluation. This consists of the squares directly // adjacent to the king, and the three (or two, for a king on an edge file) - // squares two ranks in front of the king. For instance, if black's king + // squares two ranks in front of the king. For instance, if black's king // is on g8, kingZone[WHITE] is a bitboard containing the squares f8, h8, // f7, g7, h7, f6, g6 and h6. Bitboard kingZone[2]; @@ -85,15 +89,11 @@ struct EvalInfo { // 2 to kingAdjacentZoneAttacksCount[BLACK]. int kingAdjacentZoneAttacksCount[2]; - // mateThreat[color] is a move for the given side which gives a direct mate. - Move mateThreat[2]; - - // Middle game and endgame mobility scores. - Value mgMobility, egMobility; + // Middle game and endgame mobility scores + Score mobility; - // Extra futility margin. This is added to the standard futility margin - // in the quiescence search. - Value futilityMargin; + // Value of the danger for the king of the given color + Value kingDanger[2]; }; @@ -101,8 +101,7 @@ struct EvalInfo { //// Prototypes //// -extern Value evaluate(const Position& pos, EvalInfo& ei, int threadID); -extern Value quick_evaluate(const Position& pos); +extern Value evaluate(const Position& pos, EvalInfo& ei); extern void init_eval(int threads); extern void quit_eval(); extern void read_weights(Color sideToMove);