X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.h;h=067baa3cf2e0c717f98a3f136f6f13ece186a6bf;hp=05183a0a5ccb5973fcf917f130c9a04023df04f4;hb=35ada63174bbec6289d6dea6d3cfc5b5f14d1d27;hpb=2e3faae067e31d79f9157074c9e37f4631b8d59f;ds=inline diff --git a/src/evaluate.h b/src/evaluate.h index 05183a0a..067baa3c 100644 --- a/src/evaluate.h +++ b/src/evaluate.h @@ -1,17 +1,18 @@ /* - Glaurung, a UCI chess playing engine. - Copyright (C) 2004-2008 Tord Romstad + 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 - Glaurung is free software: you can redistribute it and/or modify + Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - - Glaurung is distributed in the hope that it will be useful, + + Stockfish is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -24,43 +25,48 @@ //// Includes //// +#include + #include "material.h" #include "pawns.h" -#include "position.h" //// //// Types //// + /// The EvalInfo struct contains various information computed and collected -/// by the evaluation function. An EvalInfo object is passed as one of the +/// by the evaluation function. An EvalInfo object is passed as one of the /// 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 { - - // Middle game and endgame evaluations: - Value mgValue, egValue; - // Pointers to material and pawn hash table entries: - MaterialInfo *mi; - PawnInfo *pi; + EvalInfo() { futilityMargin[0] = futilityMargin[1] = Value(0); } + + // Middle game and endgame evaluations + 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]; @@ -87,11 +93,11 @@ struct EvalInfo { Move mateThreat[2]; // Middle game and endgame mobility scores. - Value mgMobility, egMobility; + Score mobility; - // Extra futility margin. This is added to the standard futility margin - // in the quiescence search. - Value futilityMargin; + // Extra futility margin. This is added to the standard futility margin + // in the quiescence search. One for each color. + Value futilityMargin[2]; }; @@ -99,8 +105,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, int threadID); extern void init_eval(int threads); extern void quit_eval(); extern void read_weights(Color sideToMove);