Moderator: Andres Valverde
smcracraft wrote:Say I run evaluate() first thing in my search() before doing much else.
What is the best way to use the returned evaluation in the search()
routine to get the most of "every-node-eval" method?
Tord Romstad wrote:[*]Avoiding unnecessary null move searches. If the static eval is below beta, it is unlikely that the null move search will return a score above beta, and I just skip the null move search.
The first item on this list is by itself more than enough to compensate for the expense of evaluating internal nodes in my program. Avoiding too many useless null move searches saves a lot of nodes.
Tord
Gian-Carlo Pascutto wrote:Tord Romstad wrote:[*]Avoiding unnecessary null move searches. If the static eval is below beta, it is unlikely that the null move search will return a score above beta, and I just skip the null move search.
The first item on this list is by itself more than enough to compensate for the expense of evaluating internal nodes in my program. Avoiding too many useless null move searches saves a lot of nodes.
Tord
This one I find interesting, since I understood Fabien went the other way in Fruit 2.2.1 versus Fruit 2.1.
smcracraft wrote:Say I run evaluate() first thing in my search() before doing much
else.
What is the best way to use the returned evaluation in the search()
routine to get the most of "every-node-eval" method?
I have read Rebel's entire page many times, but I am searching for
a shorter, paragraph-type comment.
Greetings,
Stuart
Gian-Carlo Pascutto wrote:Tord Romstad wrote:[*]Avoiding unnecessary null move searches. If the static eval is below beta, it is unlikely that the null move search will return a score above beta, and I just skip the null move search.
The first item on this list is by itself more than enough to compensate for the expense of evaluating internal nodes in my program. Avoiding too many useless null move searches saves a lot of nodes.
Tord
This one I find interesting, since I understood Fabien went the other way in Fruit 2.2.1 versus Fruit 2.1.
Volker B?hm wrote:Sometimes a simple question is hard to answer. Spike calls part of eval for futility pruning, but not in general. Thus I answered no.
Greetings Volker
Tony van Roon-Werten wrote:I call evaluate in every node.
But to make it a bit more complicated, I call it after I made a move. ( Saves me a call to qsearch when eval<alpha on depth=1 nodes )
This evaluation can influence search by extensions (no reductions at the moment) fe if kingsafety goes up/down
Tony
Uri Blass wrote:Tony van Roon-Werten wrote:I call evaluate in every node.
But to make it a bit more complicated, I call it after I made a move. ( Saves me a call to qsearch when eval<alpha on depth=1 nodes )
This evaluation can influence search by extensions (no reductions at the moment) fe if kingsafety goes up/down
Tony
I think that calling eval after making a move is the normal way.
I see no reason to call it before making moves.
If I make move and undo it then the evaluation is already saved and I do not need to call evaluation before making another move.
Uri
search(alpha,beta,ply,depth)
{
if (depth<=0) return(qsearch(alpha,beta))
evaluate()
foreach (move in movelist)
{
makemove(move)
score=-search(-beta,-alpha,depth-1)
unmake_move(move)
best_score=max(score,best_score)
}
return(best_score)
}
search(alpha,beta,ply,depth)
{
foreach (move in movelist)
{
makemove(move)
score=-evaluate()
if (depth<=1)
{
if (score>alpha) score=-(qsearch(-beta,-alpha))
}
else score=-search(-beta,-alpha,depth-1)
unmake_move(move)
best_score=max(best_score,score)
}
return(best_score)
}
Uri Blass wrote:
What is the difference that you see between fruit2.2.1 and fruit2.1
Based on fabien's posts
I understood that there were were only 2 differences:
The first difference is bonus for side to move and the second difference is
pruning.
smcracraft wrote:I am a little surprised that so many evaluate all internal nodes.
I hope that is ALL rather than SOME that the poll is about.
I evaluate NO internal nodes.
I was scared off by Ed's REBEL page. It seemed too learned!
Stuart
smcracraft wrote:I evaluate NO internal nodes.
I was scared off by Ed's REBEL page. It seemed too learned!
Return to Programming and Technical Discussions
Users browsing this forum: No registered users and 6 guests