sandermvdb wrote:Sometimes my engine makes a huge blunder and I was wondering if this is related to the aspiration window. Suppose I have no time left and MUST perform a move, what should I do in the following situations? Perform the best move of the previous iteration or perform the 'best move' of the current iteration?
1) root score <= alpha
2) root score >= beta
In my engine Jumbo this question never arises, for the following reasons:
a) Changing the "best move" requires a true score within the alpha/beta window.
b) The best move from the previous iteration remains the move candidate that the engine will play in the game, unless a different "best move" appears in the current iteration.
c) If the best move from the previous iteration fails low and a timeout occurs before finishing the search of the second root move then Jumbo plays that previous best move simply because there is no new information about a better one. The same applies if the second and possibly more root moves fail low and no re-search with a different window is possible before timeout occurs. No other decision can be made if time is exhausted, so any disadvantages of that kind of decision could only be addressed by a clever time management (which Jumbo does not have yet).
In my opinion not following these guidelines, especially a), has some potential to produce blunders.
So to answer your questions, I would:
1) (root score <= alpha) play the best move of the previous iteration (since the current iteration does not have one yet),
2) (root score >= beta) play the best move of the current iteration if there is one already (one that is within the window).
Playing a move that has just failed high in the current iteration might be an option but I'd consider it as unreliable.