Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Search Instabilities

Author: Robert Hyatt

Date: 07:39:07 01/22/02

Go up one level in this thread


On January 22, 2002 at 03:59:07, David Rasmussen wrote:

>On January 22, 2002 at 00:44:53, Robert Hyatt wrote:
>
>>
>>What if you run out of time?  You failed high on the null-window search.
>>You started a new search with a wider window and time expired.  Do you play
>>the fail-high move or stick with the previous best move?  I stick with the
>>last verified move.
>>
>>Unless I fail high a second time which means the original aspiration window
>>was too small and I am now going to +infinity.  I trust the second fail high
>>but not the first.
>>
>>
>
>You are right. I don't take care of that now. Can you tell me where in Crafty
>this is done? As far as I could see, if you fail high at the root, whether in a
>null-window search or not, you just return. So maybe some code in iterate.c
>takes care of this? I couldn't find it though. I couldn't find anything that
>discriminates between null-windows fail-highs and alpha;beta windows fail-highs.



You have to look carefully.  In the SearchRoot() code, I call search
on the first move with a normal window (alpha/beta passed in from outside
SearchRoot()).  On the remaining moves, I call search with the usual alpha,
alpha+1 PVS window.  If I fail high here, _nothing_ is done except to re-search
with alpha,beta.  If it doesn't fail high here, nothing is updated and the
original best move and PV is still there.  If I fail high here, then I do update
the best move and PV and drop back to Iterate() to adjust beta and try again...





>
>>
>>
>>>>2.  If you get a fail high at the root on the zero-width window, and when you
>>>>re-search you get another fail high on the original aspiration window, or you
>>>>get a true score, then you can trust it.
>>>>
>>>
>>>That's what I'm doing now, I think.
>>>
>>>>Case 1 is the killer although it doesn't happen every move, once in a game
>>>>is more than enough.
>>>
>>>I'm sure.
>>>
>>>But when I posted, I was really talking about the case where you search with an
>>>aspiration window, and then you get a fail high with value v. You search with a
>>>new aspiration windows (in my case [v;MATE]), but then the search turns out to
>>>find nothing. The fail high was false. How do I avoid that?
>>>
>>
>>
>>You just take that and go with it.  It is easy to see how it can happen,
>>where a hash entry says "score >= XXX" which will cause a fail high, but
>>now you can't use that and if you can't see it with a search, you are now
>>forced to fail low.  But the fail high was _right_.
>>
>>It is that PVS null-window fail high that can't be trusted at all...
>>
>
>Prelimiary testing shows that aspiration search gives me nothing. If I can
>confirm this, or if I can find no positions where it really help, I will drop
>aspiration, and I won't have this kind of error. Also, I wont have to deal with
>the case above, as beta at the root will always be MATE;
>
>/David



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.