Killers and forward pruning test searches
Posted: Mon Jan 28, 2019 12:33 am
When we do a reduced/test search to try to make a beta cuttof like Null Move Search / ProbCut / Multi-Cut Pruning, Internal iterative deepening (for getting a best move to try first), etc, it came to my mind that killers generated inside those searches must be of inferior quality because of the reduced depths of those searches. We are creating kiilers up in the tree with shallow searches. I mean if there is already a good killer at the current ply that came from a deep search, but we then start a reduced search to try a beta cutoff, that killer could be replaced because it has an higher score although it came from a considerably reduced search. All of this in the context of calling the search with search(pos, color, ply, ...", I could use "ply+1" for the test search, but then the side to move of two consecutive plies in some of those test searches will be the same and that interfers with other stuff.
I tried to avoid replacing killers inside those "test" searches but still use whatever killers are available for move ordering, but this resulted in generally bigger trees.
I guess the "fact" of killers being ply dependant is the root of the problem and offcourse the fact of some of those test searches being called with alpha/beta shifted by a certain margin triggers new best moves more easily that end up in the killer array.
Another thing I observed is lower numbers on fail highs on the first move percentage statistic.
In fact I don't use just one variable to test the rate of FH on the first move, I use 4.
So if I use all the forward pruning test searches I usually have 80%10%3%1%, that means 80% of FH were on the first move, 10% on the second move and so on. Now if I switch off those algorithms with test searches I now get 93%2%1%0%, but offcourse the engine gets weaker.
So those test searches to try to make an early cutoff do make the engine stronger but move ordering seems to be affected.
I really don't pay to much attention to these FH on the first 4 moves statistics, but... something doesn't look right.
Another thing that improves those numbers a lot is if I only do those statistic using "if (depth > 5*PLY)", but this might mean very little.
I don't remember anyone mention this. Maybe it's not a problem at all and I'm just seeing things.
What do you guys say about this?
I tried to avoid replacing killers inside those "test" searches but still use whatever killers are available for move ordering, but this resulted in generally bigger trees.
I guess the "fact" of killers being ply dependant is the root of the problem and offcourse the fact of some of those test searches being called with alpha/beta shifted by a certain margin triggers new best moves more easily that end up in the killer array.
Another thing I observed is lower numbers on fail highs on the first move percentage statistic.
In fact I don't use just one variable to test the rate of FH on the first move, I use 4.
So if I use all the forward pruning test searches I usually have 80%10%3%1%, that means 80% of FH were on the first move, 10% on the second move and so on. Now if I switch off those algorithms with test searches I now get 93%2%1%0%, but offcourse the engine gets weaker.
So those test searches to try to make an early cutoff do make the engine stronger but move ordering seems to be affected.
I really don't pay to much attention to these FH on the first 4 moves statistics, but... something doesn't look right.
Another thing that improves those numbers a lot is if I only do those statistic using "if (depth > 5*PLY)", but this might mean very little.
I don't remember anyone mention this. Maybe it's not a problem at all and I'm just seeing things.
What do you guys say about this?