In the beginning use milder reduction and at the end be
more aggressive.
After 1500 games on Joona's QUAD
Mod - Orig: 791 - 720 +16 elo
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
// Step 14. Reduced search
// Step 14. Reduced search
+ int ReductionLevel = 2; // 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]
// 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]
- inline Depth pv_reduction(Depth d, int mn) { return (Depth) PVReductionMatrix[0][Min(d / 2, 63)][Min(mn, 63)]; }
- inline Depth nonpv_reduction(Depth d, int mn) { return (Depth) NonPVReductionMatrix[0][Min(d / 2, 63)][Min(mn, 63)]; }
+ 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)]; }
beta = Min(ValueByIteration[Iteration - 1] + AspirationDelta, VALUE_INFINITE);
}
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);
// Search to the current depth, rml is updated and sorted, alpha and beta could change
value = root_search(p, ss, rml, &alpha, &beta);