Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Rebel's plus sign during analysis

Author: Robert Hyatt

Date: 03:45:33 08/03/98

Go up one level in this thread


On August 03, 1998 at 02:21:12, Amir Ban wrote:

>On August 02, 1998 at 23:55:02, Ed Schröder wrote:
>
>>>I've always done this.  The problem is that on some occasions, the null-
>>>move search can cause a "false-fail-high".  The re-search produces a score
>>>that was worse than the old search, or, more commonly, actually fails low.
>>
>>>I reject such fail highs if the re-search is worse than the old best (I
>>>catch this by searching with (old-best, +infinity), so that if I fail low,
>>>I know it is worse than the old best move and it gets rejected outright.
>>
>>>I've had versions where this was "broken" for various reasons, and they
>>>always produced an occasional bizarre-looking move that could be an outright
>>>blunder, or just a slightly weaker move...
>>
>>Hi Bob,
>>
>>Glad to hear a "false-fail-high" is common practise -:)
>>
>>Like to add that I often have noticed such a "false-fail-high" is rewarded
>>in the next iteration after all. It has puzzled me for years. A few years
>>ago I made a test-version that always took a "fail-high" as best move,
>>false or not. Results were not better but also not worse.
>>
>>Similar experiences?
>>
>>- Ed -
>
>
>I always accept the fail-high move immediately.
>
>There are parameters that you are important that you don't mention: What size
>window is used during normal search ? If it's zero-width, or very small, then
>fail-high doesn't mean it's much better than the previous best, and you can take
>the new move or leave it. If you use a 0.3-0.5 window, as I do, fail-high means
>it's clearly better than the previous, even it later fails low.
>
>Also, what window do you use on the re-search that fails low ? If you use
>new-alpha+1 to infinity, then maybe the fail-low happened because the value is
>exactly new-alpha. If you use a window of old-alpha to infinity, then a fail-low
>indeed makes the move suspicious.
>
>Amir
\

Good point.  Lets talk about two kinds of fail highs.  As here:

alpha=old-.3;
beta-old+.3;
old=Search(etc);
if (old > alpha && old < beta) { we have a normal search result }
else if (old < alpha) {we have a fail low at the root}
else if (old > beta) {we have a fail high at the root}

In the above case, I *always* take the fail high, unless the re-search comes
back with a score that is somehow *less* than the previous best move.

Another kind:

at the root search level (ply=1):

if (first move) {
  value=-Search(-beta,-alpha,etc...);
}
else {
  value=-Search(-alpha-1,-alpha,etc...)
  if (value>alpha && value<beta) value=-Search(-beta,-alpha,etc.)
}

The above code is traditional PVS, and the else clause uses a null-window
search after the first move has produces a good alpha bound.  If this fails
high, I research.  If it fails low, I ignore everything and stick with the
old best move.

SO, to summarize, in Crafty a hard fail high at the root is accepted, but a
null-window fail high at the root is only accepted if it doesn't immediately
fail low on the research. And I make sure that if I get such a fail high, that
I search until I get the score or fail-low result, to convince myself that the
move is a lemon or a winner...




This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.