Author: Gerd Isenberg
Date: 12:41:04 04/06/02
Go up one level in this thread
On April 06, 2002 at 03:48:28, TEERAPONG TOVIRAT wrote:
>
>Hi,
>
>1)
>Should we let the Futility Margin be a constant value or variable?
>IMHO, it should be a variable that varies with
>1.material balance at root node.
>2.material ratio at current node.
>?
or
3. from maximum absolute Positional Score determined by static eval in the path
from root to current position, which is root initialized with some minimum:
razor_margin = node.maxPositionalScore + X * VALUE_PAWN;
fscore = material_balance + razor_margin;
...
>
>2)
>Extended Futility Pruning method from Ernst Heinz's recommendation :
>....
>fscore=material_balance+razor margin
>if(!extend&&(depth==pre_pre_frontier)&&(fscore<=alpha)&&(...))
>depth=prefrontier
>fscore=material_balance+extd_fut_margin
>if(!extend&&(depth==pre_frontier)&&(fscore<=alpha))
>{score=fscore
> fprune=1
>}
>....
>It's obvious that if the first if statement is true the second if must be true.
>Just curious to know why the author didn't avoid testing the second if?
>?
>
But the second (extended futility pruning) may also be true if the first
(limited razoring) is not. This produces shortest (and may be fastest) code with
most compilers. If the limited razoring is true, which is rather seldom because
of high razor_margin, it's not so expensive to do a tautological if statement
for extended futility pruning.
But i don't like this kind of code for readability reasons and to have an
unnecessary sequence dependency - i would prefere "if (A) ... else if (B)",
where A and B are exchangeable.
>3)
>Some programs have an evaluation hashtable to store the score from
>evaluation(). I think we already have transposition table for this job.
>And nowaday, we can provide plenty of entries.The chance of collision in
>transposition table is not so significant. So,why?
>?
>
>Thanks for any comment,
>Teerapong
If your eval is rather expensive you may win a lot, if you hash static (none
lazy) eval scores (i also use some eval related flags) separately in an always
replacement table, even if you store eval in your standard transposition table.
Gerd
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.