mirror of
https://github.com/sockspls/badfish
synced 2025-05-03 01:59:36 +00:00

The Tempo variable was introduced 10 years ago in our search because the classical evaluation function was antisymmetrical in White and Black by design to gain speed: Eval(White to play) = -Eval(Black to play) Nowadays our neural networks know which side is to play in a position when they evaluate a position and are trained on real games, so the neural network encodes the advantage of moving as an output of search. This patch shows that the Tempo variable is not necessary anymore. STC: LLR: 2.94 (-2.94,2.94) <-2.50,0.50> Total: 33512 W: 2805 L: 2709 D: 27998 Ptnml(0-2): 80, 2209, 12095, 2279, 93 https://tests.stockfishchess.org/tests/view/60a44ceace8ea25a3ef03d30 LTC: LLR: 2.95 (-2.94,2.94) <-2.50,0.50> Total: 53920 W: 1807 L: 1760 D: 50353 Ptnml(0-2): 16, 1617, 23650, 1658, 19 https://tests.stockfishchess.org/tests/view/60a477f0ce8ea25a3ef03d49 We also tried a match (20000 games) at STC using purely classical, result was neutral: https://tests.stockfishchess.org/tests/view/60a4eebcce8ea25a3ef03db5 Note: there are two locations left in search.cpp where we assume antisymmetry of evaluation (in relation with a speed optimization for null moves in lines 770 and 1439), but as the values are just used for heuristic pruning this approximation should not hurt too much because the order of magnitude is still true most of the time. closes https://github.com/official-stockfish/Stockfish/pull/3481 Bench: 4015864
51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
/*
|
|
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
|
|
Copyright (C) 2004-2021 The Stockfish developers (see AUTHORS file)
|
|
|
|
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.
|
|
|
|
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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef TIMEMAN_H_INCLUDED
|
|
#define TIMEMAN_H_INCLUDED
|
|
|
|
#include "misc.h"
|
|
#include "search.h"
|
|
#include "thread.h"
|
|
|
|
namespace Stockfish {
|
|
|
|
/// The TimeManagement class computes the optimal time to think depending on
|
|
/// the maximum available time, the game move number and other parameters.
|
|
|
|
class TimeManagement {
|
|
public:
|
|
void init(Search::LimitsType& limits, Color us, int ply);
|
|
TimePoint optimum() const { return optimumTime; }
|
|
TimePoint maximum() const { return maximumTime; }
|
|
TimePoint elapsed() const { return Search::Limits.npmsec ?
|
|
TimePoint(Threads.nodes_searched()) : now() - startTime; }
|
|
|
|
int64_t availableNodes; // When in 'nodes as time' mode
|
|
|
|
private:
|
|
TimePoint startTime;
|
|
TimePoint optimumTime;
|
|
TimePoint maximumTime;
|
|
};
|
|
|
|
extern TimeManagement Time;
|
|
|
|
} // namespace Stockfish
|
|
|
|
#endif // #ifndef TIMEMAN_H_INCLUDED
|