variable reductions

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: variable reductions

Post by bob »

JVMerlino wrote:
hgm wrote:I think he means the interaction between PVS and LMR:

(1) Search at reduced depth with null window
(2) If (1) fails high, re-search with open window at reduced depth
(3) If (2) fails high, re-search with null window at full depth
(4) if (3) fails high, re-search with open window at full depth
In Myrddin I skip (3) above, and I couldn't begin to say if it's better or worse because honestly I never considered adding it. Am I missing something important leaving it out?

jm
It costs you some time. (3) is easier to search than (4). Otherwise, there is no real advantage except for the time lost.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: variable reductions

Post by bob »

jdart wrote:
bob wrote: That's not the "effect" I am concerned about. I am concerned with a later move failing high at the root (on the reduced search). Then failing high again on the non-reduced search. Then coming back with a LOWER score on the final re-search where beta has been relaxed.
I don't do this. If the reduced search fails high, it is re-searched with both reduction removed and with an upper bound of beta.

Every time I have tested a two-stage re-search strategy it has scored worse, even though it seems like a plausible idea.

--Jon
For me it was the opposite (omitting the null-window research scored worse on my cluster testing). If the reduced search fails high, it is faster to search with normal depth but using null-window. Most of the time, this fails low and we forget the process, the reduced depth just hid something that the deeper search sees.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: variable reductions

Post by bob »

tpetzke wrote:I don't do LMR at the root. I just do a scout search for the moves beyond the first. If it fails high, I research with an open window and only if it still increases alpha, it is a new best move.

Thomas...
For the record, LMR at root works, and is effective. If it is good at ply=2, why not at ply=1? Ply=1 also has "lousy moves" near the end of the list.
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: variable reductions

Post by hgm »

I guess it depends a lot on how stable your search is. That taking away the reduction will cause the score to change is normal, but that opening the window will turn the fail high into a fail low can be pretty unlikely if your search is quite stable.
User avatar
lucasart
Posts: 3232
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: variable reductions

Post by lucasart »

bob wrote:
tpetzke wrote:I don't do LMR at the root. I just do a scout search for the moves beyond the first. If it fails high, I research with an open window and only if it still increases alpha, it is a new best move.

Thomas...
For the record, LMR at root works, and is effective. If it is good at ply=2, why not at ply=1? Ply=1 also has "lousy moves" near the end of the list.
Complety agree. I never understood why people always want to treat the root node differently. I use the same search function for all kinds of nodes, and view the root node like any other PV node.
Theory and practice sometimes clash. And when that happens, theory loses. Every single time.
Henk
Posts: 7218
Joined: Mon May 27, 2013 10:31 am

Re: variable reductions

Post by Henk »

lucasart wrote:
bob wrote:
tpetzke wrote:I don't do LMR at the root. I just do a scout search for the moves beyond the first. If it fails high, I research with an open window and only if it still increases alpha, it is a new best move.

Thomas...
For the record, LMR at root works, and is effective. If it is good at ply=2, why not at ply=1? Ply=1 also has "lousy moves" near the end of the list.
Complety agree. I never understood why people always want to treat the root node differently. I use the same search function for all kinds of nodes, and view the root node like any other PV node.
In the root node you certainly don't have a fail high or fail low so you have exact values for all moves unless there is a check mate. But if you use LMR at the root the values are computed at different levels.

At the root they do aspiration search. I don't know it that gives profit.

Futility pruning and null move makes no sense in the root node.
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: variable reductions

Post by hgm »

Most moves at the root actually do fail low, as they cannot beat the first move, which increased alpha to its score. So they won't have exact scores. They will only have upper bounds.

And yes, these upper bounds will be computed at different levels, when you use LMR. That is precisely why you do it. Silly moves do not deserve as much effort as plausible moves, because the chances that such a search will turn up anything that will avert the fail low are very, very low. So searching them is mostly a waste of time. Time that then is deducted from searching the plausible moves.
Henk
Posts: 7218
Joined: Mon May 27, 2013 10:31 am

Re: variable reductions

Post by Henk »

Ok I forgot at the root you start with a lower bound -infinity but after the first move that has already changed.

Perhaps doing only minimax or aspiration search at the root is too costly but you get the best move ordering.
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: variable reductions

Post by hgm »

But it is only relevant to have the best ordering in order to save time on the later moves. Not saving time to get a better ordering is throwing away the baby with the bathwater...
tpetzke
Posts: 686
Joined: Thu Mar 03, 2011 4:57 pm
Location: Germany

Re: variable reductions

Post by tpetzke »

For the record, LMR at root works, and is effective. If it is good at ply=2, why not at ply=1? Ply=1 also has "lousy moves" near the end of the list.
So far I had it out because I don't know how good my root move list is ordered. There might be lousy moves at the end of the list, so might be good moves. In the inner nodes I have killers and counter moves and history to order the quiet moves a bit. I don't have that at the root.

I do the usual stuff for the captures and also moves that were best once are maintained at the top spots. They might become good again. But beyond that the list is more or less in the order the moves were generated.

So I have no reason to believe that move 20 in the list is any better than move 30, so why reduce move 30 but not 20.

In the past I maintained fail high counters for each root move and ordered the list with them but it was not really worth the effort. So I removed it.
Thomas...

=======
http://macechess.blogspot.com - iCE Chess Engine