Number of aspiration "windows" before full-width search?

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

JVMerlino
Posts: 1357
Joined: Wed Mar 08, 2006 10:15 pm
Location: San Francisco, California

Number of aspiration "windows" before full-width search?

Post by JVMerlino »

Right at the beginning, I'm sure the answer is going to be "test all the options and use the one with the best result". But I figured I would ask anyway, since there might be some other things to consider.

Myrddin uses 10 aspiration windows (or "steps", if you prefer) before expanding to a full-width search. It starts at +/- 16cp, but slowly grows larger, such that the last step is plus-or-minute (but not both) 720cp before going full-width. In other words, if the search continues to fail high or low, requiring expansion of the window, the last search will be either -16/+720 or -720/+16. And, as I said, it takes 10 fail highs/lows to get there.

What do other engines do here? The main thing I'm concerned about with testing is if, for example, I reduce the number of steps to 5, that very fast time controls commonly used in testing won't exercise this change much, if at all. The change will definitely affect CCRL 40/40 testing - but who has that kind of time? :)

Any thoughts? Maybe the better question is how far away from the midpoint in cp should the search get before going full-width?

jm
Joost Buijs
Posts: 1568
Joined: Thu Jul 16, 2009 10:47 am
Location: Almere, The Netherlands

Re: Number of aspiration "windows" before full-width search?

Post by Joost Buijs »

Nightmare uses fewer steps. I never optimized it, probably it's far from optimal.

Code: Select all

	const int delta[] = { 31, 97, 307, 965, 3036, 9546, valueInf };
The initial Window is +/- 31 which is rather large. After I switched to NNUE the evaluation values got higher, I never took the time to scale these. Using a smaller initial window only seems to hurt, at least in my engine it does.

The steps are rather large because I don't like to change the window on smal positional changes.
Last edited by Joost Buijs on Wed Nov 10, 2021 8:09 am, edited 1 time in total.
User avatar
Rebel
Posts: 7025
Joined: Thu Aug 18, 2011 12:04 pm
Full name: Ed Schröder

Re: Number of aspiration "windows" before full-width search?

Post by Rebel »

I use two steps -

int fail_high[] = { 200, max };

Works best for me.

Same for fail-lows, -200, -max.
90% of coding is debugging, the other 10% is writing bugs.
User avatar
MartinBryant
Posts: 69
Joined: Thu Nov 21, 2013 12:37 am
Location: Manchester, UK
Full name: Martin Bryant

Re: Number of aspiration "windows" before full-width search?

Post by MartinBryant »

In previous versions of Colossus I used three steps: +150, +950, +inf (same but -ve for fail low)

However, I did some tests with the following results...
Removing fail low steps (i.e. immediately going to -inf) +3.2, +/-3.6, 20000 games
Removing fail high steps (i.e. immediately going to +inf) -2.6, +/-3.6, 20000 games

So not significant ELO changes but I have now changed Colossus to fail low immediately to -inf
JohnWoe
Posts: 508
Joined: Sat Mar 02, 2013 11:31 pm

Re: Number of aspiration "windows" before full-width search?

Post by JohnWoe »

Just 2: [1, INF]
1. Null-window search to see if it fails high and also build hashtable for the second run. If it doesn't assume it's a crappy move
2. Full window search. Usually a and b converges quickly.

Making many searches never worked in my program