returning alpha

Discussion of chess software programming and technical issues.

Moderator: Ras

outAtime
Posts: 226
Joined: Sun Mar 08, 2009 3:08 pm
Location: Canada

returning alpha

Post by outAtime »

I noticed some engines returning alpha in root_search and best_move (or best_value) in the searches called by root_search. Are there any advantages or disadvantages to this approach? Specifically, I was wondering if this could be part of the reason late reductions have been (surprisingly) successful in some programs like stockfish. Ive been experimenting alot with PVS here and there and just about everywhere, but if I add LMR to the PVS in root_search the mixed results are 'untweakable' :) I was wondering if this might be because best_ is being returned at root() rather than alpha? Ive tried all the numbers from 1 to 40 before allowing reductions in root_search and thought for a while I had it nailed at 15... until I tried to improve this setting by testing positions the setting had lost and found the only solution was to bring the number so high the algorithm was barely used on those positions. Unfortunately the higher setting was still used more in other positions which resulted in much worse results overall. So does it matter if alpha is being returned by the root search?
outAtime
Richard Allbert
Posts: 794
Joined: Wed Jul 19, 2006 9:58 am

Re: returning alpha

Post by Richard Allbert »

Alpha is best_value in the root search.. when you enter the root, assuming your not using an aspiration window, alpha is -Matescore (or very low), so you will update alpha with at least one move. Thus alpha == best_value.

Regarding LMR, I've never tried it. Massive list of other things that need to be improved first!

Richard
zamar
Posts: 613
Joined: Sun Jan 18, 2009 7:03 am

Re: returning alpha

Post by zamar »

In higher depths in 99.9% of cases at root alpha == bestValue, so it is only a simplification.
Joona Kiiski
outAtime
Posts: 226
Joined: Sun Mar 08, 2009 3:08 pm
Location: Canada

Re: returning alpha

Post by outAtime »

Thanks for clarifying. I was also wondering about the difference when doing a zero window search between doing a regular alpha beta search (or alpha-1) and returning alpha, or using beta-1 -beta and then cut or return beta-1. Is beta-1 the same as alpha just expressed differently? To me it looks almost like a null move, since I have -beta -beta+1 in null move and Im guessing this is equivalent to -(beta-1). I tried writing a pvs with -beta -beta+1 in the algorithm instead of alpha but haven't kept it yet because I really am not sure how it should work.

Code: Select all

       /* store our hash info */
       alpha = i_alpha;

       if (alpha > i_alpha)
       store_hash (i_alpha, depth, alpha, exact, pv[ply][ply]);	   
       else 
       store_hash (i_alpha, depth, alpha, u_bound, dummy);
	  	
       return alpha;
If I need to store the hash info at the end of a -beta pvs should I just make beta = i_alpha and change everywhere it says alpha to beta? I understand that return alpha should become return beta-1 if no cut, but Im not sure about the hash tables.
outAtime