Author: Alessandro Damiani
Date: 14:19:11 09/10/99
Go up one level in this thread
[..] >>>>>Easy to test. I'll supply some data in a bit, just for fun... >>>> >>>>For one moment forget about alpha and beta, you are on the wrong track as >>>>alpha and beta are not a part at all of the code. You need an extra stack >>>>that is set to -INF at each ply. Then before you do A/B you do the bestmove >>>>calculation for that ply. Involved variables: SCORE and STACK, no alpha beta. >>>> >>>>Ed >>> >>>I think the best way to explain is to write a small piece of code in pseudo C, >>>else we talk around the point. >>> >>>Alessandro >> >> >>OK... here is what I did: > >Drunken code adjustment inserted ................ > > >> >>Normal alpha/beta first: > >Drunken code added: > >> >>int Search(int alpha, int beta, etc...) { >> best=-infinity; > roughbest = -INFINITY; >> bestmove=0; > roughbestmove = 0; >> foreach (move in movelist) { >> MakeMove(); > roughvalue = StaticEvaluate(-whatever,etc); >> value=-Search(-beta,-alpha,etc.) >> if (value > best) { >> best=value; >> bestmove=current.move; >> } >> if (value > alpha) { >> if (value >= beta) { >> return(value); >> } >> alpha=value; >> } > if (roughvalue > roughbest) > { > roughvalue = roughbest; > roughbestmove = current.move; > } >> } > if (THEREWASNTANEWALPHA) > HastStore(roughbestmove, etc...) > else >> HashStore(bestmove,alpha, etc...) >>} >> [..] What you say is: roughbest = (MAX m: m is a move in the position: StaticEval(Son(m))) where Son(m) is the position after the move m is made. What should this help? Alessandro
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.