mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00
Revert LMR reduction based on thinking time
After 500 games at 5+0 on my QUAD (3 days) there is no difference with old version, so probably it is a feature that doesn't scale with search depth. So revert for now, perhaps we should readd under a different form. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
8fabd69d4a
commit
2a14123550
1 changed files with 13 additions and 38 deletions
|
@ -215,14 +215,12 @@ namespace {
|
|||
|
||||
// Step 14. Reduced search
|
||||
|
||||
int ReductionLevel; // 0 = most aggressive reductions, 7 = minimum reductions
|
||||
|
||||
// Reduction lookup tables (initialized at startup) and their getter functions
|
||||
int8_t PVReductionMatrix[8][64][64]; // [depth][moveNumber]
|
||||
int8_t NonPVReductionMatrix[8][64][64]; // [depth][moveNumber]
|
||||
int8_t PVReductionMatrix[64][64]; // [depth][moveNumber]
|
||||
int8_t NonPVReductionMatrix[64][64]; // [depth][moveNumber]
|
||||
|
||||
inline Depth pv_reduction(Depth d, int mn) { return (Depth) PVReductionMatrix[ReductionLevel][Min(d / 2, 63)][Min(mn, 63)]; }
|
||||
inline Depth nonpv_reduction(Depth d, int mn) { return (Depth) NonPVReductionMatrix[ReductionLevel][Min(d / 2, 63)][Min(mn, 63)]; }
|
||||
inline Depth pv_reduction(Depth d, int mn) { return (Depth) PVReductionMatrix[Min(d / 2, 63)][Min(mn, 63)]; }
|
||||
inline Depth nonpv_reduction(Depth d, int mn) { return (Depth) NonPVReductionMatrix[Min(d / 2, 63)][Min(mn, 63)]; }
|
||||
|
||||
// Common adjustments
|
||||
|
||||
|
@ -546,30 +544,20 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move,
|
|||
return !Quit;
|
||||
}
|
||||
|
||||
// init_reduction_tables() is called by init_search() and initializes
|
||||
// the tables used by LMR.
|
||||
static void init_reduction_tables(int8_t pvTable[64][64], int8_t nonPvTable[64][64], int pvInhib, int nonPvInhib)
|
||||
{
|
||||
double pvBase = 1.001 - log(3.0) * log(16.0) / pvInhib;
|
||||
double nonPvBase = 1.001 - log(3.0) * log(4.0) / nonPvInhib;
|
||||
|
||||
/// init_search() is called during startup. It initializes various lookup tables
|
||||
|
||||
void init_search() {
|
||||
|
||||
// Init our reduction lookup tables
|
||||
for (int i = 1; i < 64; i++) // i == depth (OnePly = 1)
|
||||
for (int j = 1; j < 64; j++) // j == moveNumber
|
||||
{
|
||||
double pvRed = pvBase + log(double(i)) * log(double(j)) / pvInhib;
|
||||
double nonPVRed = nonPvBase + log(double(i)) * log(double(j)) / nonPvInhib;
|
||||
|
||||
pvTable[i][j] = (int8_t) ( pvRed >= 1.0 ? floor( pvRed * int(OnePly)) : 0);
|
||||
nonPvTable[i][j] = (int8_t) (nonPVRed >= 1.0 ? floor(nonPVRed * int(OnePly)) : 0);
|
||||
double pvRed = 0.5 + log(double(i)) * log(double(j)) / 6.0;
|
||||
double nonPVRed = 0.5 + log(double(i)) * log(double(j)) / 3.0;
|
||||
PVReductionMatrix[i][j] = (int8_t) ( pvRed >= 1.0 ? floor( pvRed * int(OnePly)) : 0);
|
||||
NonPVReductionMatrix[i][j] = (int8_t) (nonPVRed >= 1.0 ? floor(nonPVRed * int(OnePly)) : 0);
|
||||
}
|
||||
}
|
||||
|
||||
// init_search() is called during startup. It initializes various lookup tables
|
||||
void init_search() {
|
||||
|
||||
// Init reduction lookup tables
|
||||
for (int i = 0; i < 8; i++)
|
||||
init_reduction_tables(PVReductionMatrix[i], NonPVReductionMatrix[i], int(4 * pow(1.3, i)), int(2 * pow(1.3, i)));
|
||||
|
||||
// Init futility margins array
|
||||
for (int i = 0; i < 16; i++) // i == depth (OnePly = 2)
|
||||
|
@ -672,19 +660,6 @@ namespace {
|
|||
beta = Min(ValueByIteration[Iteration - 1] + AspirationDelta, VALUE_INFINITE);
|
||||
}
|
||||
|
||||
// Choose optimum reduction level
|
||||
ReductionLevel = 2;
|
||||
|
||||
if (UseTimeManagement)
|
||||
{
|
||||
int level = int(floor(log(float(MaxSearchTime) / current_search_time()) / log(2.0) + 1.0));
|
||||
ReductionLevel = Min(Max(level, 0), 7);
|
||||
}
|
||||
else
|
||||
{
|
||||
//FIXME
|
||||
}
|
||||
|
||||
// Search to the current depth, rml is updated and sorted, alpha and beta could change
|
||||
value = root_search(p, ss, rml, &alpha, &beta);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue