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
Number of aspiration "windows" before full-width search?
Moderators: hgm, Rebel, chrisw
-
- Posts: 1357
- Joined: Wed Mar 08, 2006 10:15 pm
- Location: San Francisco, California
-
- Posts: 1568
- Joined: Thu Jul 16, 2009 10:47 am
- Location: Almere, The Netherlands
Re: Number of aspiration "windows" before full-width search?
Nightmare uses fewer steps. I never optimized it, probably it's far from optimal.
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.
Code: Select all
const int delta[] = { 31, 97, 307, 965, 3036, 9546, valueInf };
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.
-
- Posts: 7025
- Joined: Thu Aug 18, 2011 12:04 pm
- Full name: Ed Schröder
Re: Number of aspiration "windows" before full-width search?
I use two steps -
int fail_high[] = { 200, max };
Works best for me.
Same for fail-lows, -200, -max.
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.
-
- 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?
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
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
-
- Posts: 508
- Joined: Sat Mar 02, 2013 11:31 pm
Re: Number of aspiration "windows" before full-width search?
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
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