X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=3680dd36fc30131867bfac8f588bd0ce30731636;hp=d225de26fff69994013aabd9762dc373abe730f6;hb=a5a8830e97cbf8005d559029d273bdb13a341278;hpb=35ada63174bbec6289d6dea6d3cfc5b5f14d1d27 diff --git a/src/evaluate.cpp b/src/evaluate.cpp index d225de26..3680dd36 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -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 @@ -224,15 +224,19 @@ namespace { const int AttackWeight[] = { 0, 0, KnightAttackWeight, BishopAttackWeight, RookAttackWeight, QueenAttackWeight }; - // Bonuses for safe checks, initialized from UCI options - int QueenContactCheckBonus, DiscoveredCheckBonus; - int QueenCheckBonus, RookCheckBonus, BishopCheckBonus, KnightCheckBonus; + // Bonuses for safe checks + const int QueenContactCheckBonus = 3; + const int DiscoveredCheckBonus = 3; + const int QueenCheckBonus = 2; + const int RookCheckBonus = 1; + const int BishopCheckBonus = 1; + const int KnightCheckBonus = 1; // Scan for queen contact mates? const bool QueenContactMates = true; - // Bonus for having a mate threat, initialized from UCI options - int MateThreatBonus; + // Bonus for having a mate threat + const int MateThreatBonus = 3; // InitKingDanger[] contains bonuses based on the position of the defending // king. @@ -253,8 +257,8 @@ namespace { // Pawn and material hash tables, indexed by the current thread id. // Note that they will be initialized at 0 being global variables. - MaterialInfoTable* MaterialTable[THREAD_MAX]; - PawnInfoTable* PawnTable[THREAD_MAX]; + MaterialInfoTable* MaterialTable[MAX_THREADS]; + PawnInfoTable* PawnTable[MAX_THREADS]; // Sizes of pawn and material hash tables const int PawnTableSize = 16384; @@ -305,7 +309,7 @@ template Value do_evaluate(const Position& pos, EvalInfo& ei, int threadID) { assert(pos.is_ok()); - assert(threadID >= 0 && threadID < THREAD_MAX); + assert(threadID >= 0 && threadID < MAX_THREADS); assert(!pos.is_check()); memset(&ei, 0, sizeof(EvalInfo)); @@ -440,9 +444,9 @@ Value do_evaluate(const Position& pos, EvalInfo& ei, int threadID) { void init_eval(int threads) { - assert(threads <= THREAD_MAX); + assert(threads <= MAX_THREADS); - for (int i = 0; i < THREAD_MAX; i++) + for (int i = 0; i < MAX_THREADS; i++) { if (i >= threads) { @@ -464,7 +468,7 @@ void init_eval(int threads) { void quit_eval() { - for (int i = 0; i < THREAD_MAX; i++) + for (int i = 0; i < MAX_THREADS; i++) { delete PawnTable[i]; delete MaterialTable[i]; @@ -1200,29 +1204,17 @@ namespace { void init_safety() { - QueenContactCheckBonus = get_option_value_int("Queen Contact Check Bonus"); - QueenCheckBonus = get_option_value_int("Queen Check Bonus"); - RookCheckBonus = get_option_value_int("Rook Check Bonus"); - BishopCheckBonus = get_option_value_int("Bishop Check Bonus"); - KnightCheckBonus = get_option_value_int("Knight Check Bonus"); - DiscoveredCheckBonus = get_option_value_int("Discovered Check Bonus"); - MateThreatBonus = get_option_value_int("Mate Threat Bonus"); - - int maxSlope = get_option_value_int("King Safety Max Slope"); - int peak = get_option_value_int("King Safety Max Value") * 256 / 100; - double a = get_option_value_int("King Safety Coefficient") / 100.0; - double b = get_option_value_int("King Safety X Intercept"); - bool quad = (get_option_value_string("King Safety Curve") == "Quadratic"); - bool linear = (get_option_value_string("King Safety Curve") == "Linear"); + int maxSlope = 30; + int peak = 0x500; + double a = 0.4; + double b = 0.0; for (int i = 0; i < 100; i++) { if (i < b) SafetyTable[i] = Value(0); - else if (quad) + else SafetyTable[i] = Value((int)(a * (i - b) * (i - b))); - else if (linear) - SafetyTable[i] = Value((int)(100 * a * (i - b))); } for (int i = 0; i < 100; i++)