mirror of
https://github.com/official-stockfish/Stockfish.git
synced 2026-07-22 20:57:10 +00:00
Merge commit 'aff1f67997cd2584ea7c82d967ac7bfd4cc77861' into cluster
This is the last commit before there are more conflicts.
This commit is contained in:
+3
-3
@@ -175,9 +175,9 @@ void MovePicker::score() {
|
||||
: 0;
|
||||
|
||||
// malus for putting piece en prise
|
||||
m.value -= (pt == QUEEN ? bool(to & threatenedByRook) * 49000
|
||||
: pt == ROOK ? bool(to & threatenedByMinor) * 24335
|
||||
: bool(to & threatenedByPawn) * 14900);
|
||||
m.value -= (pt == QUEEN ? bool(to & threatenedByRook) * 49000
|
||||
: pt == ROOK && bool(to & threatenedByMinor) ? 24335
|
||||
: 0);
|
||||
|
||||
if (rootNode)
|
||||
m.value += 4 * (*rootHistory)[pos.side_to_move()][m.from_to()];
|
||||
|
||||
+15
-19
@@ -89,7 +89,8 @@ Value to_corrected_static_eval(Value v, const Worker& w, const Position& pos) {
|
||||
const auto wnpcv = w.nonPawnCorrectionHistory[WHITE][us][non_pawn_index<WHITE>(pos)];
|
||||
const auto bnpcv = w.nonPawnCorrectionHistory[BLACK][us][non_pawn_index<BLACK>(pos)];
|
||||
const auto cv =
|
||||
(98198 * pcv + 68968 * mcv + 54353 * macv + 85174 * micv + 85581 * (wnpcv + bnpcv)) / 2097152;
|
||||
(99916 * pcv + 55067 * mcv + 55530 * macv + 95324 * micv + 105056 * (wnpcv + bnpcv))
|
||||
/ 2097152;
|
||||
v += cv;
|
||||
return std::clamp(v, VALUE_TB_LOSS_IN_MAX_PLY + 1, VALUE_TB_WIN_IN_MAX_PLY - 1);
|
||||
}
|
||||
@@ -1461,12 +1462,15 @@ moves_loop: // When in check, search starts here
|
||||
{
|
||||
auto bonus = std::clamp(int(bestValue - ss->staticEval) * depth / 8,
|
||||
-CORRECTION_HISTORY_LIMIT / 4, CORRECTION_HISTORY_LIMIT / 4);
|
||||
thisThread->pawnCorrectionHistory[us][pawn_structure_index<Correction>(pos)] << bonus;
|
||||
thisThread->materialCorrectionHistory[us][material_index(pos)] << bonus;
|
||||
thisThread->majorPieceCorrectionHistory[us][major_piece_index(pos)] << bonus;
|
||||
thisThread->minorPieceCorrectionHistory[us][minor_piece_index(pos)] << bonus;
|
||||
thisThread->nonPawnCorrectionHistory[WHITE][us][non_pawn_index<WHITE>(pos)] << bonus;
|
||||
thisThread->nonPawnCorrectionHistory[BLACK][us][non_pawn_index<BLACK>(pos)] << bonus;
|
||||
thisThread->pawnCorrectionHistory[us][pawn_structure_index<Correction>(pos)]
|
||||
<< bonus * 101 / 128;
|
||||
thisThread->materialCorrectionHistory[us][material_index(pos)] << bonus * 99 / 128;
|
||||
thisThread->majorPieceCorrectionHistory[us][major_piece_index(pos)] << bonus * 157 / 128;
|
||||
thisThread->minorPieceCorrectionHistory[us][minor_piece_index(pos)] << bonus * 153 / 128;
|
||||
thisThread->nonPawnCorrectionHistory[WHITE][us][non_pawn_index<WHITE>(pos)]
|
||||
<< bonus * 123 / 128;
|
||||
thisThread->nonPawnCorrectionHistory[BLACK][us][non_pawn_index<BLACK>(pos)]
|
||||
<< bonus * 165 / 128;
|
||||
}
|
||||
|
||||
assert(bestValue > -VALUE_INFINITE && bestValue < VALUE_INFINITE);
|
||||
@@ -1646,19 +1650,11 @@ Value Search::Worker::qsearch(Position& pos, Stack* ss, Value alpha, Value beta)
|
||||
continue;
|
||||
}
|
||||
|
||||
// If static eval is much lower than alpha and move is
|
||||
// not winning material, we can prune this move. (~2 Elo)
|
||||
if (futilityBase <= alpha && !pos.see_ge(move, 1))
|
||||
// if static exchange evaluation is low enough
|
||||
// we can prune this move. (~2 Elo)
|
||||
if (!pos.see_ge(move, alpha - futilityBase))
|
||||
{
|
||||
bestValue = std::max(bestValue, futilityBase);
|
||||
continue;
|
||||
}
|
||||
|
||||
// If static exchange evaluation is much worse than what
|
||||
// is needed to not fall below alpha, we can prune this move.
|
||||
if (futilityBase > alpha && !pos.see_ge(move, (alpha - futilityBase) * 4))
|
||||
{
|
||||
bestValue = alpha;
|
||||
bestValue = (futilityBase > alpha) ? alpha : std::max(bestValue, futilityBase);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user