mirror of
https://github.com/sockspls/badfish
synced 2025-05-05 19:09:35 +00:00
Decrease NullMoveMargin and adjust razoring
Also retire razoring margins vector and use a simpler formula instead. Now that we use a more accurate static evaluation try to avoid useless null searches when we are well below beta. And for teh same reason increase a bit the razoring. After 972 games at 1+0 Mod vs Orig +224 =558 -190 +12 ELO Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
638f3d31cc
commit
e817a55bc6
1 changed files with 4 additions and 11 deletions
|
@ -172,9 +172,9 @@ namespace {
|
||||||
// best move from the previous iteration, Problem is set back to false.
|
// best move from the previous iteration, Problem is set back to false.
|
||||||
const Value NoProblemMargin = Value(0x14);
|
const Value NoProblemMargin = Value(0x14);
|
||||||
|
|
||||||
// Null move margin. A null move search will not be done if the approximate
|
// Null move margin. A null move search will not be done if the static
|
||||||
// evaluation of the position is more than NullMoveMargin below beta.
|
// evaluation of the position is more than NullMoveMargin below beta.
|
||||||
const Value NullMoveMargin = Value(0x300);
|
const Value NullMoveMargin = Value(0x200);
|
||||||
|
|
||||||
// If the TT move is at least SingleReplyMargin better then the
|
// If the TT move is at least SingleReplyMargin better then the
|
||||||
// remaining ones we will extend it.
|
// remaining ones we will extend it.
|
||||||
|
@ -190,13 +190,6 @@ namespace {
|
||||||
// Depth limit for razoring
|
// Depth limit for razoring
|
||||||
const Depth RazorDepth = 4 * OnePly;
|
const Depth RazorDepth = 4 * OnePly;
|
||||||
|
|
||||||
// Remaining depth: 1 ply 1.5 ply 2 ply 2.5 ply 3 ply 3.5 ply
|
|
||||||
const Value RazorMargins[6] = { Value(0x180), Value(0x300), Value(0x300), Value(0x3C0), Value(0x3C0), Value(0x3C0) };
|
|
||||||
|
|
||||||
// Remaining depth: 1 ply 1.5 ply 2 ply 2.5 ply 3 ply 3.5 ply
|
|
||||||
const Value RazorApprMargins[6] = { Value(0x520), Value(0x300), Value(0x300), Value(0x300), Value(0x300), Value(0x300) };
|
|
||||||
|
|
||||||
|
|
||||||
/// Variables initialized by UCI options
|
/// Variables initialized by UCI options
|
||||||
|
|
||||||
// Minimum number of full depth (i.e. non-reduced) moves at PV and non-PV nodes
|
// Minimum number of full depth (i.e. non-reduced) moves at PV and non-PV nodes
|
||||||
|
@ -1453,12 +1446,12 @@ namespace {
|
||||||
// Null move search not allowed, try razoring
|
// Null move search not allowed, try razoring
|
||||||
else if ( !value_is_mate(beta)
|
else if ( !value_is_mate(beta)
|
||||||
&& depth < RazorDepth
|
&& depth < RazorDepth
|
||||||
&& staticValue < beta - RazorApprMargins[int(depth) - 2]
|
&& staticValue < beta - (depth > OnePly ? NullMoveMargin + 16 * depth : 2*NullMoveMargin)
|
||||||
&& ss[ply - 1].currentMove != MOVE_NULL
|
&& ss[ply - 1].currentMove != MOVE_NULL
|
||||||
&& ttMove == MOVE_NONE
|
&& ttMove == MOVE_NONE
|
||||||
&& !pos.has_pawn_on_7th(pos.side_to_move()))
|
&& !pos.has_pawn_on_7th(pos.side_to_move()))
|
||||||
{
|
{
|
||||||
Value rbeta = beta - RazorMargins[int(depth) - 2];
|
Value rbeta = beta - (NullMoveMargin + 16 * depth);
|
||||||
Value v = qsearch(pos, ss, rbeta-1, rbeta, Depth(0), ply, threadID);
|
Value v = qsearch(pos, ss, rbeta-1, rbeta, Depth(0), ply, threadID);
|
||||||
if (v < rbeta)
|
if (v < rbeta)
|
||||||
return v;
|
return v;
|
||||||
|
|
Loading…
Add table
Reference in a new issue