diff --git a/src/engine/search.rs b/src/engine/search.rs index 2c80465..741194f 100755 --- a/src/engine/search.rs +++ b/src/engine/search.rs @@ -1215,6 +1215,8 @@ impl Worker<'_> { self.xb_enter(ply); + let lmp_scale = (sp.lmp_scale + if improving { sp.lmp_imp } else { -sp.lmp_imp }).max(0); + while let Some(mv) = picker.next(&self.pos, self.xb_rows(), self.history) { if !is_legal(&self.pos, mv, ksq, pinned, checkers, opp) { continue; @@ -1263,7 +1265,7 @@ impl Worker<'_> { && mv.is_quiet() && !N::PV && depth <= sp.lmp_depth - && res.move_count as i32 >= sp.lmp_base + sp.lmp_scale * depth * depth / 100 + && res.move_count as i32 >= sp.lmp_base + lmp_scale * depth * depth / 100 { continue; } diff --git a/src/engine/search_params.rs b/src/engine/search_params.rs index 444315b..56ad1d0 100755 --- a/src/engine/search_params.rs +++ b/src/engine/search_params.rs @@ -285,6 +285,7 @@ search_params! { T (lmp_depth, 5, 2, 10), T (lmp_base, 2, 1, 6), T (lmp_scale, 128, 25, 250), // ·100 + T (lmp_imp, 64, 0, 128), // ·100, symmetric improving split // default min max T (hist_prune_depth, 8, 2, 12),