Null Move Assistance
Posted: Mon Mar 07, 2016 5:11 pm
Hi all,
I have written a chess engine that is UCI functional and is reasonably strong. My question though is concerning null move pruning. I have not been able to get it to work despite many hours of work.
I think my main problem is that I am searching with the wrong bounds. I have heard of a "null move window" and a "zero width window". However, all examples of null move pruning are using Negamax. I am using two separate functions for search(SearchMin and SearchMax) and as such I cannot convert the null move windows in the examples to the appropriate windows in my two functions. I have tried in SearchMax: SearchMin(alpha, beta), SearchMin(alpha, beta - 1), and pretty much all other combinations. I even ran a tournament amongst all these versions and none of them were even noticeably stronger than the rest. I think I am using the wrong bounds but am correct with null move pruning in everything else. I know everyone is using Negamax these days, but surely some of you must have been in my situation before.
Your comments would be greatly appreciated!
David
I have written a chess engine that is UCI functional and is reasonably strong. My question though is concerning null move pruning. I have not been able to get it to work despite many hours of work.
I think my main problem is that I am searching with the wrong bounds. I have heard of a "null move window" and a "zero width window". However, all examples of null move pruning are using Negamax. I am using two separate functions for search(SearchMin and SearchMax) and as such I cannot convert the null move windows in the examples to the appropriate windows in my two functions. I have tried in SearchMax: SearchMin(alpha, beta), SearchMin(alpha, beta - 1), and pretty much all other combinations. I even ran a tournament amongst all these versions and none of them were even noticeably stronger than the rest. I think I am using the wrong bounds but am correct with null move pruning in everything else. I know everyone is using Negamax these days, but surely some of you must have been in my situation before.
Your comments would be greatly appreciated!
David