Author: scott farrell
Date: 23:59:40 08/29/03
Go up one level in this thread
On August 30, 2003 at 01:33:22, Russell Reagan wrote:
This is what I do:
- if fail high, and not much time left, just play the move - its obviously good,
it doesnt matter too much if we dont know how good.
- if fail high, and plenty of time, then re-search alpha->INFINITY
- if fail low, try the next few moves with the same window, say 2-3, and set
the clock to complete the iteration, as there is something dangerous. If the
score returns, you can reset the clock to abort the iteration on time if need
be.
- if fail low on a few moves, restart search for all moves with -INFINITY,beta -
and add more time to try to solve this fail low dilema.
On re-searching, if the score is near DRAWSCORE, I move it to just the other
side of draw, eg> -1.1 to -0.1 changes to -1.1 to 0.05, so as to include draw
scores without failing low/high/research - this reduced my search stability
issues at the root quite a lot.
>On August 30, 2003 at 00:50:46, Slater Wold wrote:
>
>>On August 29, 2003 at 23:49:24, Mike Siler wrote:
>>
>>>I'm using aspiration search windows of the previous search value + or - half a
>>>pawn. My question is this: when the search value falls outside this window, is
>>>it generally better to go immediately to a full width search (+INF,-INF) or
>>>should I increase the window a little bit, then increase it more if necessary?
>>>
>>>Michael
>>
>>If I understand it correctly the value returned must be > alpha and < beta to be
>>useful. If it is >= beta, re-search with a bigger beta. If it is <= alpha,
>>re-search with a lower alpha.
>
>Better read Bruce's page on aspiration search. The section "Search Instability
>Issues" discusses how this could blow up in your face, if you're not careful.
>
>From http://www.brucemo.com/compchess/programming/aspiration.htm Bruce says:
>
>"When I first added an aspiration window to my chess program, I assumed that if
>I got a value back that was greater than or equal to beta, that the re-search
>would result in a higher score the next time through. Wrong! I had hellacious
>crashing problems. Here is the code:
>
>alpha = -INFINITY;
>beta = INFINITY;
>for (depth = 1;;) {
> val = AlphaBeta(depth, alpha, beta);
> if (TimedOut())
> break;
> if (val <= alpha) { // WRONG!
> alpha = -INFINITY;
> beta = val + 1;
> continue;
> }
> if (val >= beta) { // WRONG!
> beta = INFINITY;
> alpha = val - 1;
> continue;
> }
> alpha = val - valWINDOW;
> beta = val + valWINDOW;
> depth++;
>}
>
>The above code would work great if you could be sure that your re-search would
>work. But of course what happened to me is:
>
>1. The search with (alpha, beta) failed high.
>2. The re-search with (beta - 1, INFINITY) failed low.
>3. The re-search with (-INFINITY, alpha + 1) failed high.
>4. And so on, and so on, and so on ...
>
>Anything you write needs to prevent this."
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.