Negascout searches all moves after the first one with a zero window to confirm they all fail low. Normally that's turned off for the last couple ply, presumably because move ordering at the tips is bound to be poor, and the cost of re-searching is greater than the the savings of shallow zero window searches... right?
The on->off thing seems odd to me. Has anybody experimented with gradually relaxing the number of moves before resorting to a zero window search as one approaches the tips? Perhaps throwing in winning captures at some point, then killers at another, or some such?
Also, why does it always search the first move at full width? It makes perfect sense at PV nodes but the majority of your nodes are either expected alpha or beta nodes, which you can guess from the hash entry if nothing else. If it's an expected alpha node, why not search the first move with a zero window search? Or if it's an expected beta node, why not start with a zero window search on beta rather than alpha?
My own engine's move ordering is still too poor for negascout but I did see gains from a sort of gradually relaxing scheme...
Code: Select all
if(num>ply)
localBeta = localAlpha+1;