Page 1 of 2

Next Step - Search

Posted: Wed Dec 08, 2010 4:02 pm
by outAtime
Hi all, Im trying to decide the next step to take in search after having added LMR, and improved Null so it no longer is simply R = 2. What would you suggest for the next *big* improvement in search? I really dont have anything else, just very plain qsearch, null, and a pvs/lmr. The more trivial to implement the better :) Thanks!

Re: Next Step - Search

Posted: Wed Dec 08, 2010 4:12 pm
by mcostalba
outAtime wrote:Hi all, Im trying to decide the next step to take in search after having added LMR, and improved Null so it no longer is simply R = 2. What would you suggest for the next *big* improvement in search? I really dont have anything else, just very plain qsearch, null, and a pvs/lmr. The more trivial to implement the better :) Thanks!
What is the ELO of your engine ? You should already have a good ELO with what you have, try to test against some weak engine and verify your engine arrives at the end of the match, possibly without losing too much.

This is the serious approach, instead if you are more interested in having fun then go wild adding everthing comes to your mind ;-)

Re: Next Step - Search

Posted: Wed Dec 08, 2010 4:35 pm
by outAtime
ok, ill run some tests.

Re: Next Step - Search

Posted: Wed Dec 08, 2010 6:47 pm
by bhlangonijr
outAtime wrote:Hi all, Im trying to decide the next step to take in search after having added LMR, and improved Null so it no longer is simply R = 2. What would you suggest for the next *big* improvement in search? I really dont have anything else, just very plain qsearch, null, and a pvs/lmr. The more trivial to implement the better :) Thanks!
I think futility, razoring and static null move are very easy and quick to implement and your engine can gain a significative speed up. Although find the right parameters which will better fit to your search is not that trivial. It would require a lot of tests.

But if I were you I would first write a separated function to handle root moves and also a dedicated function to order root moves. At least for me it was very important to make further improvements in the search.


Regards,

Re: Next Step - Search

Posted: Wed Dec 08, 2010 6:50 pm
by Desperado
Hi,

well, one of the next steps may be futility pruning (and delta pruning (QS)). Depending on the level your engine already has, this can be good
for 30-50 elo. IMHO this is easy to implement and wont take much time.

good luck and enjoy your work...

Michael

Re: Next Step - Search

Posted: Wed Dec 08, 2010 6:54 pm
by outAtime
Thanks for the suggestions.

Re: Next Step - Search

Posted: Wed Dec 08, 2010 8:37 pm
by zamar
outAtime wrote:Hi all, Im trying to decide the next step to take in search after having added LMR, and improved Null so it no longer is simply R = 2. What would you suggest for the next *big* improvement in search? I really dont have anything else, just very plain qsearch, null, and a pvs/lmr. The more trivial to implement the better :) Thanks!
# Fine tuning LMR (reducing several plies at the end of the move list)
# Futility pruning
# Move count based pruning
# Filtering out neg. SEE moves at qsearch
# Razoring
# static null move pruning

All are trivial to implement and should offer considerable ELO increase

Re: Next Step - Search

Posted: Wed Dec 08, 2010 9:42 pm
by outAtime
Thanks. I don't have SEE implemented, but I will try the others.

Re: Next Step - Search

Posted: Wed Dec 08, 2010 9:50 pm
by outAtime
How would you define moves at the end of the move list?

Re: Next Step - Search

Posted: Wed Dec 08, 2010 11:17 pm
by outAtime
Does depth need to == 1 for move count based pruning?
Thanks. Just wondering because it's hard to find examples.