What causes search instabilty?
Posted: 06 Mar 2005, 22:06
Hi all,
I thought it would be interesting to compile a list of all the known causes of search instability. I'm sure there are many, but maybe there are some that are lesser known, more subtle and therefore more evil....
Here is a starting list...
1. Hash Table inconsistencies.
An important hash entry gets overwritten during search... subsequent searches can't use the information.
2. You extend a move during shallow searches and then don't extend it during deeper searches. This happens typically when you do stuff like...
3. TT/hashkey doesn't take into account 50 move rule. No real workaround for this... but its rare...
4. Hard Evaluation Edges... ie. sudden changes in evaluation when changing game phases. Usually crappy code like this causes it...
I'm sure there are many, many more....
Would anyone like to add their favourites to the above list? Please do!
Cheers,
Ross
I thought it would be interesting to compile a list of all the known causes of search instability. I'm sure there are many, but maybe there are some that are lesser known, more subtle and therefore more evil....
Here is a starting list...
1. Hash Table inconsistencies.
An important hash entry gets overwritten during search... subsequent searches can't use the information.
2. You extend a move during shallow searches and then don't extend it during deeper searches. This happens typically when you do stuff like...
- Code: Select all
if (remaining_search_depth < THREE_PLY && IsReCapture(move))
extensions += RECAPTURE_EXTENSION;
3. TT/hashkey doesn't take into account 50 move rule. No real workaround for this... but its rare...
4. Hard Evaluation Edges... ie. sudden changes in evaluation when changing game phases. Usually crappy code like this causes it...
- Code: Select all
if (value_of_enemy_pieces_remaining > VAL_Q+VAL_N)
score += KingSafety();
else
score += KingInEndgame();
I'm sure there are many, many more....
Would anyone like to add their favourites to the above list? Please do!
Cheers,
Ross