mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00
Fix comments, rename variables
Thanks everybody for the various hints in the perpetual renaming thread: https://github.com/official-stockfish/Stockfish/issues/1426 No functional change
This commit is contained in:
parent
6cc5614124
commit
a0486ecb40
8 changed files with 58 additions and 61 deletions
|
@ -31,18 +31,14 @@ namespace {
|
|||
#define V Value
|
||||
#define S(mg, eg) make_score(mg, eg)
|
||||
|
||||
// Isolated pawn penalty
|
||||
// Pawn penalties
|
||||
constexpr Score Isolated = S(13, 16);
|
||||
|
||||
// Backward pawn penalty
|
||||
constexpr Score Backward = S(17, 11);
|
||||
constexpr Score Doubled = S(13, 40);
|
||||
|
||||
// Connected pawn bonus by opposed, phalanx, #support and rank
|
||||
Score Connected[2][2][3][RANK_NB];
|
||||
|
||||
// Doubled pawn penalty
|
||||
constexpr Score Doubled = S(13, 40);
|
||||
|
||||
// Strength of pawn shelter for our king by [distance from edge][rank].
|
||||
// RANK_1 = 0 is used for files where we have no pawn, or pawn is behind our king.
|
||||
constexpr Value ShelterStrength[int(FILE_NB) / 2][RANK_NB] = {
|
||||
|
@ -53,7 +49,7 @@ namespace {
|
|||
};
|
||||
|
||||
// Danger of enemy pawns moving toward our king by [distance from edge][rank].
|
||||
// RANK_1 = 0 is used for files where the enemy has no pawn, or their pawn
|
||||
// RANK_1 = 0 is used for files where the enemy has no pawn, or their pawn
|
||||
// is behind our king.
|
||||
constexpr Value UnblockedStorm[int(FILE_NB) / 2][RANK_NB] = {
|
||||
{ V( 25), V( 79), V(107), V( 51), V( 27), V( 0), V( 0) },
|
||||
|
|
|
@ -1193,14 +1193,15 @@ bool Position::has_game_cycle(int ply) const {
|
|||
|| (j = H2(moveKey), cuckoo[j] == moveKey))
|
||||
{
|
||||
Move move = cuckooMove[j];
|
||||
Square from = from_sq(move);
|
||||
Square to = to_sq(move);
|
||||
Square s1 = from_sq(move);
|
||||
Square s2 = to_sq(move);
|
||||
|
||||
if (!(between_bb(from, to) & pieces()))
|
||||
if (!(between_bb(s1, s2) & pieces()))
|
||||
{
|
||||
// Take care to reverse the move in the no-progress case (opponent to move)
|
||||
if (empty(from))
|
||||
move = make_move(to, from);
|
||||
// In the cuckoo table, both moves Rc1c5 and Rc5c1 are stored in the same
|
||||
// location. We select the legal one by reversing the move variable if necessary.
|
||||
if (empty(s1))
|
||||
move = make_move(s2, s1);
|
||||
|
||||
if (ply > i)
|
||||
return true;
|
||||
|
|
|
@ -407,10 +407,10 @@ inline void Position::move_piece(Piece pc, Square from, Square to) {
|
|||
|
||||
// index[from] is not updated and becomes stale. This works as long as index[]
|
||||
// is accessed just by known occupied squares.
|
||||
Bitboard from_to_bb = SquareBB[from] ^ SquareBB[to];
|
||||
byTypeBB[ALL_PIECES] ^= from_to_bb;
|
||||
byTypeBB[type_of(pc)] ^= from_to_bb;
|
||||
byColorBB[color_of(pc)] ^= from_to_bb;
|
||||
Bitboard fromTo = SquareBB[from] ^ SquareBB[to];
|
||||
byTypeBB[ALL_PIECES] ^= fromTo;
|
||||
byTypeBB[type_of(pc)] ^= fromTo;
|
||||
byColorBB[color_of(pc)] ^= fromTo;
|
||||
board[from] = NO_PIECE;
|
||||
board[to] = pc;
|
||||
index[to] = index[from];
|
||||
|
|
|
@ -353,17 +353,17 @@ void Thread::search() {
|
|||
for (RootMove& rm : rootMoves)
|
||||
rm.previousScore = rm.score;
|
||||
|
||||
size_t PVFirst = 0;
|
||||
PVLast = 0;
|
||||
size_t pvFirst = 0;
|
||||
pvLast = 0;
|
||||
|
||||
// MultiPV loop. We perform a full root search for each PV line
|
||||
for (PVIdx = 0; PVIdx < multiPV && !Threads.stop; ++PVIdx)
|
||||
for (pvIdx = 0; pvIdx < multiPV && !Threads.stop; ++pvIdx)
|
||||
{
|
||||
if (PVIdx == PVLast)
|
||||
if (pvIdx == pvLast)
|
||||
{
|
||||
PVFirst = PVLast;
|
||||
for (PVLast++; PVLast < rootMoves.size(); PVLast++)
|
||||
if (rootMoves[PVLast].TBRank != rootMoves[PVFirst].TBRank)
|
||||
pvFirst = pvLast;
|
||||
for (pvLast++; pvLast < rootMoves.size(); pvLast++)
|
||||
if (rootMoves[pvLast].tbRank != rootMoves[pvFirst].tbRank)
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -373,7 +373,7 @@ void Thread::search() {
|
|||
// Reset aspiration window starting size
|
||||
if (rootDepth >= 5 * ONE_PLY)
|
||||
{
|
||||
Value previousScore = rootMoves[PVIdx].previousScore;
|
||||
Value previousScore = rootMoves[pvIdx].previousScore;
|
||||
delta = Value(18);
|
||||
alpha = std::max(previousScore - delta,-VALUE_INFINITE);
|
||||
beta = std::min(previousScore + delta, VALUE_INFINITE);
|
||||
|
@ -398,7 +398,7 @@ void Thread::search() {
|
|||
// and we want to keep the same order for all the moves except the
|
||||
// new PV that goes to the front. Note that in case of MultiPV
|
||||
// search the already searched PV lines are preserved.
|
||||
std::stable_sort(rootMoves.begin() + PVIdx, rootMoves.begin() + PVLast);
|
||||
std::stable_sort(rootMoves.begin() + pvIdx, rootMoves.begin() + pvLast);
|
||||
|
||||
// If search has been stopped, we break immediately. Sorting is
|
||||
// safe because RootMoves is still valid, although it refers to
|
||||
|
@ -438,10 +438,10 @@ void Thread::search() {
|
|||
}
|
||||
|
||||
// Sort the PV lines searched so far and update the GUI
|
||||
std::stable_sort(rootMoves.begin() + PVFirst, rootMoves.begin() + PVIdx + 1);
|
||||
std::stable_sort(rootMoves.begin() + pvFirst, rootMoves.begin() + pvIdx + 1);
|
||||
|
||||
if ( mainThread
|
||||
&& (Threads.stop || PVIdx + 1 == multiPV || Time.elapsed() > 3000))
|
||||
&& (Threads.stop || pvIdx + 1 == multiPV || Time.elapsed() > 3000))
|
||||
sync_cout << UCI::pv(rootPos, rootDepth, alpha, beta) << sync_endl;
|
||||
}
|
||||
|
||||
|
@ -613,7 +613,7 @@ namespace {
|
|||
posKey = pos.key() ^ Key(excludedMove << 16); // Isn't a very good hash
|
||||
tte = TT.probe(posKey, ttHit);
|
||||
ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE;
|
||||
ttMove = rootNode ? thisThread->rootMoves[thisThread->PVIdx].pv[0]
|
||||
ttMove = rootNode ? thisThread->rootMoves[thisThread->pvIdx].pv[0]
|
||||
: ttHit ? tte->move() : MOVE_NONE;
|
||||
|
||||
// At non-PV nodes we check for an early TT cutoff
|
||||
|
@ -751,7 +751,7 @@ namespace {
|
|||
&& ss->staticEval >= beta - 36 * depth / ONE_PLY + 225
|
||||
&& !excludedMove
|
||||
&& pos.non_pawn_material(us)
|
||||
&& (ss->ply > thisThread->nmp_min_ply || us != thisThread->nmp_color))
|
||||
&& (ss->ply > thisThread->nmpMinPly || us != thisThread->nmpColor))
|
||||
{
|
||||
assert(eval - beta >= 0);
|
||||
|
||||
|
@ -773,19 +773,19 @@ namespace {
|
|||
if (nullValue >= VALUE_MATE_IN_MAX_PLY)
|
||||
nullValue = beta;
|
||||
|
||||
if (thisThread->nmp_min_ply || (abs(beta) < VALUE_KNOWN_WIN && depth < 12 * ONE_PLY))
|
||||
if (thisThread->nmpMinPly || (abs(beta) < VALUE_KNOWN_WIN && depth < 12 * ONE_PLY))
|
||||
return nullValue;
|
||||
|
||||
assert(!thisThread->nmp_min_ply); // Recursive verification is not allowed
|
||||
assert(!thisThread->nmpMinPly); // Recursive verification is not allowed
|
||||
|
||||
// Do verification search at high depths, with null move pruning disabled
|
||||
// for us, until ply exceeds nmp_min_ply.
|
||||
thisThread->nmp_min_ply = ss->ply + 3 * (depth-R) / 4 - 1;
|
||||
thisThread->nmp_color = us;
|
||||
// for us, until ply exceeds nmpMinPly.
|
||||
thisThread->nmpMinPly = ss->ply + 3 * (depth-R) / 4 - 1;
|
||||
thisThread->nmpColor = us;
|
||||
|
||||
Value v = search<NonPV>(pos, ss, beta-1, beta, depth-R, false);
|
||||
|
||||
thisThread->nmp_min_ply = 0;
|
||||
thisThread->nmpMinPly = 0;
|
||||
|
||||
if (v >= beta)
|
||||
return nullValue;
|
||||
|
@ -870,8 +870,8 @@ moves_loop: // When in check, search starts from here
|
|||
// Move List. As a consequence any illegal move is also skipped. In MultiPV
|
||||
// mode we also skip PV moves which have been already searched and those
|
||||
// of lower "TB rank" if we are in a TB root position.
|
||||
if (rootNode && !std::count(thisThread->rootMoves.begin() + thisThread->PVIdx,
|
||||
thisThread->rootMoves.begin() + thisThread->PVLast, move))
|
||||
if (rootNode && !std::count(thisThread->rootMoves.begin() + thisThread->pvIdx,
|
||||
thisThread->rootMoves.begin() + thisThread->pvLast, move))
|
||||
continue;
|
||||
|
||||
ss->moveCount = ++moveCount;
|
||||
|
@ -879,7 +879,7 @@ moves_loop: // When in check, search starts from here
|
|||
if (rootNode && thisThread == Threads.main() && Time.elapsed() > 3000)
|
||||
sync_cout << "info depth " << depth / ONE_PLY
|
||||
<< " currmove " << UCI::move(move, pos.is_chess960())
|
||||
<< " currmovenumber " << moveCount + thisThread->PVIdx << sync_endl;
|
||||
<< " currmovenumber " << moveCount + thisThread->pvIdx << sync_endl;
|
||||
if (PvNode)
|
||||
(ss+1)->pv = nullptr;
|
||||
|
||||
|
@ -995,11 +995,11 @@ moves_loop: // When in check, search starts from here
|
|||
|
||||
if (captureOrPromotion) // (~5 Elo)
|
||||
{
|
||||
//Increase reduction by comparing opponent's stat score
|
||||
if ( (ss-1)->statScore >= 0
|
||||
// Increase reduction by comparing opponent's stat score
|
||||
if ( (ss-1)->statScore >= 0
|
||||
&& thisThread->captureHistory[movedPiece][to_sq(move)][type_of(pos.captured_piece())] < 0)
|
||||
r += ONE_PLY;
|
||||
|
||||
|
||||
r -= r ? ONE_PLY : DEPTH_ZERO;
|
||||
}
|
||||
else
|
||||
|
@ -1576,14 +1576,14 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) {
|
|||
std::stringstream ss;
|
||||
TimePoint elapsed = Time.elapsed() + 1;
|
||||
const RootMoves& rootMoves = pos.this_thread()->rootMoves;
|
||||
size_t PVIdx = pos.this_thread()->PVIdx;
|
||||
size_t pvIdx = pos.this_thread()->pvIdx;
|
||||
size_t multiPV = std::min((size_t)Options["MultiPV"], rootMoves.size());
|
||||
uint64_t nodesSearched = Threads.nodes_searched();
|
||||
uint64_t tbHits = Threads.tb_hits() + (TB::RootInTB ? rootMoves.size() : 0);
|
||||
|
||||
for (size_t i = 0; i < multiPV; ++i)
|
||||
{
|
||||
bool updated = (i <= PVIdx && rootMoves[i].score != -VALUE_INFINITE);
|
||||
bool updated = (i <= pvIdx && rootMoves[i].score != -VALUE_INFINITE);
|
||||
|
||||
if (depth == ONE_PLY && !updated)
|
||||
continue;
|
||||
|
@ -1592,7 +1592,7 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) {
|
|||
Value v = updated ? rootMoves[i].score : rootMoves[i].previousScore;
|
||||
|
||||
bool tb = TB::RootInTB && abs(v) < VALUE_MATE - MAX_PLY;
|
||||
v = tb ? rootMoves[i].TBScore : v;
|
||||
v = tb ? rootMoves[i].tbScore : v;
|
||||
|
||||
if (ss.rdbuf()->in_avail()) // Not at first line
|
||||
ss << "\n";
|
||||
|
@ -1603,7 +1603,7 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) {
|
|||
<< " multipv " << i + 1
|
||||
<< " score " << UCI::value(v);
|
||||
|
||||
if (!tb && i == PVIdx)
|
||||
if (!tb && i == pvIdx)
|
||||
ss << (v >= beta ? " lowerbound" : v <= alpha ? " upperbound" : "");
|
||||
|
||||
ss << " nodes " << nodesSearched
|
||||
|
@ -1686,16 +1686,16 @@ void Tablebases::rank_root_moves(Position& pos, Search::RootMoves& rootMoves) {
|
|||
{
|
||||
// Sort moves according to TB rank
|
||||
std::sort(rootMoves.begin(), rootMoves.end(),
|
||||
[](const RootMove &a, const RootMove &b) { return a.TBRank > b.TBRank; } );
|
||||
[](const RootMove &a, const RootMove &b) { return a.tbRank > b.tbRank; } );
|
||||
|
||||
// Probe during search only if DTZ is not available and we are winning
|
||||
if (dtz_available || rootMoves[0].TBScore <= VALUE_DRAW)
|
||||
if (dtz_available || rootMoves[0].tbScore <= VALUE_DRAW)
|
||||
Cardinality = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Assign the same rank to all moves
|
||||
for (auto& m : rootMoves)
|
||||
m.TBRank = 0;
|
||||
m.tbRank = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,8 +69,8 @@ struct RootMove {
|
|||
Value score = -VALUE_INFINITE;
|
||||
Value previousScore = -VALUE_INFINITE;
|
||||
int selDepth = 0;
|
||||
int TBRank;
|
||||
Value TBScore;
|
||||
int tbRank;
|
||||
Value tbScore;
|
||||
std::vector<Move> pv;
|
||||
};
|
||||
|
||||
|
|
|
@ -973,7 +973,7 @@ uint8_t* set_sizes(PairsData* d, uint8_t* data) {
|
|||
d->symlen.resize(number<uint16_t, LittleEndian>(data)); data += sizeof(uint16_t);
|
||||
d->btree = (LR*)data;
|
||||
|
||||
// The comrpession scheme used is "Recursive Pairing", that replaces the most
|
||||
// The compression scheme used is "Recursive Pairing", that replaces the most
|
||||
// frequent adjacent pair of symbols in the source message by a new symbol,
|
||||
// reevaluating the frequencies of all of the symbol pairs with respect to
|
||||
// the extended alphabet, and then repeating the process.
|
||||
|
@ -1491,12 +1491,12 @@ bool Tablebases::root_probe(Position& pos, Search::RootMoves& rootMoves) {
|
|||
int r = dtz > 0 ? (dtz + cnt50 <= 99 && !rep ? 1000 : 1000 - (dtz + cnt50))
|
||||
: dtz < 0 ? (-dtz * 2 + cnt50 < 100 ? -1000 : -1000 + (-dtz + cnt50))
|
||||
: 0;
|
||||
m.TBRank = r;
|
||||
m.tbRank = r;
|
||||
|
||||
// Determine the score to be displayed for this move. Assign at least
|
||||
// 1 cp to cursed wins and let it grow to 49 cp as the positions gets
|
||||
// closer to a real win.
|
||||
m.TBScore = r >= bound ? VALUE_MATE - MAX_PLY - 1
|
||||
m.tbScore = r >= bound ? VALUE_MATE - MAX_PLY - 1
|
||||
: r > 0 ? Value((std::max( 3, r - 800) * int(PawnValueEg)) / 200)
|
||||
: r == 0 ? VALUE_DRAW
|
||||
: r > -bound ? Value((std::min(-3, r + 800) * int(PawnValueEg)) / 200)
|
||||
|
@ -1532,12 +1532,12 @@ bool Tablebases::root_probe_wdl(Position& pos, Search::RootMoves& rootMoves) {
|
|||
if (result == FAIL)
|
||||
return false;
|
||||
|
||||
m.TBRank = WDL_to_rank[wdl + 2];
|
||||
m.tbRank = WDL_to_rank[wdl + 2];
|
||||
|
||||
if (!rule50)
|
||||
wdl = wdl > WDLDraw ? WDLWin
|
||||
: wdl < WDLDraw ? WDLLoss : WDLDraw;
|
||||
m.TBScore = WDL_to_value[wdl + 2];
|
||||
m.tbScore = WDL_to_value[wdl + 2];
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -118,7 +118,7 @@ void Thread::idle_loop() {
|
|||
}
|
||||
|
||||
/// ThreadPool::set() creates/destroys threads to match the requested number.
|
||||
/// Created and launched threads wil go immediately to sleep in idle_loop.
|
||||
/// Created and launched threads will go immediately to sleep in idle_loop.
|
||||
/// Upon resizing, threads are recreated to allow for binding if necessary.
|
||||
|
||||
void ThreadPool::set(size_t requested) {
|
||||
|
@ -191,7 +191,7 @@ void ThreadPool::start_thinking(Position& pos, StateListPtr& states,
|
|||
|
||||
for (Thread* th : *this)
|
||||
{
|
||||
th->nodes = th->tbHits = th->nmp_min_ply = 0;
|
||||
th->nodes = th->tbHits = th->nmpMinPly = 0;
|
||||
th->rootDepth = th->completedDepth = DEPTH_ZERO;
|
||||
th->rootMoves = rootMoves;
|
||||
th->rootPos.set(pos.fen(), pos.is_chess960(), &setupStates->back(), th);
|
||||
|
|
|
@ -60,9 +60,9 @@ public:
|
|||
Pawns::Table pawnsTable;
|
||||
Material::Table materialTable;
|
||||
Endgames endgames;
|
||||
size_t PVIdx, PVLast;
|
||||
int selDepth, nmp_min_ply;
|
||||
Color nmp_color;
|
||||
size_t pvIdx, pvLast;
|
||||
int selDepth, nmpMinPly;
|
||||
Color nmpColor;
|
||||
std::atomic<uint64_t> nodes, tbHits;
|
||||
|
||||
Position rootPos;
|
||||
|
|
Loading…
Add table
Reference in a new issue