X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fevaluate.h;h=725d5a78b2673025793f46f3865a3686344e22ea;hb=559942d64de9497c9d6d13b22307b4b9e1ce8ecf;hp=8662f4b302734435653a6c13c751a0af2b75d868;hpb=bb751d6c890f5c50c642366d601740366cfae8d0;p=stockfish
diff --git a/src/evaluate.h b/src/evaluate.h
index 8662f4b3..725d5a78 100644
--- a/src/evaluate.h
+++ b/src/evaluate.h
@@ -1,108 +1,59 @@
/*
- 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-2021 The Stockfish developers (see AUTHORS file)
- 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 .
*/
-
-#if !defined(EVALUATE_H_INCLUDED)
+#ifndef EVALUATE_H_INCLUDED
#define EVALUATE_H_INCLUDED
-////
-//// Includes
-////
-
-#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
-/// 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
-/// EvalInfo object which is used by the search is futilityMargin.
-
-struct EvalInfo {
-
- // Middle game and endgame evaluations:
- Value mgValue, egValue;
-
- // 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
- // 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]; }
- // attackZone[color] is the zone around the enemy king which is considered
- // 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
- // is on g8, attackZone[WHITE] is a bitboard containing the squares f8, h8,
- // f7, g7, h7, f6, g6 and h6.
- Bitboard attackZone[2];
-
- // attackCount[color] is the number of pieces of the given color which
- // attack a square adjacent to the enemy king.
- int attackCount[2];
-
- // attackWeight[color] is the sum of the "weight" of the pieces of the given
- // color which attack a square adjacent to the enemy king. The weights of
- // the individual piece types are given by the variables QueenAttackWeight,
- // RookAttackWeight, BishopAttackWeight and KnightAttackWeight in
- // evaluate.cpp.
- int attackWeight[2];
-
- // attacked[color] is the number of enemy piece attacks to squares directly
- // adjacent to the king of the given color. Pieces which attack more
- // than one square are counted multiple times. For instance, if black's
- // king is on g8 and there's a white knight on g5, this knight adds
- // 2 to attacked[BLACK].
- int attacked[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;
-
- // Extra futility margin. This is added to the standard futility margin
- // in the quiescence search.
- Value futilityMargin;
-};
-
-
-////
-//// Prototypes
-////
-
-extern Value evaluate(const Position &pos, EvalInfo &ei, int threadID);
-extern Value quick_evaluate(const Position &pos);
-extern void init_eval(int threads);
-extern void quit_eval();
-extern void read_weights(Color sideToMove);
-
-
-#endif // !defined(EVALUATE_H_INCLUDED)
+#include
+#include
+
+#include "types.h"
+
+namespace Stockfish {
+
+class Position;
+
+namespace Eval {
+
+ std::string trace(const Position& pos);
+ Value evaluate(const Position& pos);
+
+ extern bool useNNUE;
+ extern std::string eval_file_loaded;
+
+ // The default net name MUST follow the format nn-[SHA256 first 12 digits].nnue
+ // for the build process (profile-build and fishtest) to work. Do not change the
+ // name of the macro, as it is used in the Makefile.
+ #define EvalFileDefaultName "nn-7e66505906a6.nnue"
+
+ namespace NNUE {
+
+ Value evaluate(const Position& pos, bool adjusted = false);
+ bool load_eval(std::string name, std::istream& stream);
+ bool save_eval(std::ostream& stream);
+ void init();
+ void export_net(const std::optional& filename);
+ void verify();
+
+ } // namespace NNUE
+
+} // namespace Eval
+
+} // namespace Stockfish
+
+#endif // #ifndef EVALUATE_H_INCLUDED