Page 1 of 1

Small qsearch idea

PostPosted: 19 Dec 2009, 18:37
by Daniel Uranga
Most programs does "captures only search" during qsearch (and sometimes they try checks too in first and second ply), so they try every move that causes a material difference of at least 100 centipawns between ply and ply-1. Is a good idea modifying that paramater?
Call that parameter "N", normal qsearch uses N=100, then: if eval(ply)-100>=eval(ply+1) then continue searching ply+1. And with N=50, N=75, etc? And what about N=50+15*qply?
I hope I explained my idea well. I want to know if that could be a good idea.

Re: Small qsearch idea

PostPosted: 20 Dec 2009, 11:45
by H.G.Muller
The danger of indefinitely extending reversible moves is earch explosion caused by infinite recursion. If a move ups the eval by 100 cP (e.g. by pinning a vauable opponent piece), the opponent will likely have a move worth 100 cP to undo the pin, and then you might pin it again in another way.

E.g. q5k1/pr4pp/8/3r4/1P3P2/1Q6/6PP/6K1 w - - 0 1

1... Rf7 2. Qf3, Rb7 3. Qb3

Of course repetition detection might ameliorate this a litter, but even then there might be cases where you can keep it up for a long time before creating repeats.

Re: Small qsearch idea

PostPosted: 20 Dec 2009, 18:39
by Daniel Uranga
I understand. Maybe using only using piece square based evaluation could help. Then positions where one side could easily improve doing a simple piece centralization move would be made instead of just calling eval and returning a value that may not reflect what is happening. I think it could help reducing "positional horizon effect" instead of just "tactical horizon effect" as standard qsearch do.
Need to test on my unfinished engine.