Computer Chess Club Archives


Search

Terms

Messages

Subject: PHR (Peak History Reduction) idea

Author: Daniel Mehrmannn

Date: 18:41:45 03/01/06

Go up one level in this thread


On March 01, 2006 at 14:52:06, Robert Hyatt wrote:

>Thought I would post a more detailed follow-up to what I have been playing with,
>to prompt further discussion and maybe even additional ideas.
>
>1.  I started off trying to use the raw history scores, but they really were not
>useful for a simple reason, that they conginually grow throughout the search.
>Prior to CCT I had noticed this and even experimented with "aging" the values by
>dividing all by 2 at some interval.  But regardless, the numbers get very large,
>and chopping them back suddenly increases the reduction level, whereas longer
>searches would decrease the level.  I punted on this pretty quickly and left the
>normal history mechanism in place solely for move ordering.
>
[...]

Hello Bob,

nice to see you're testing history reduction :)
I can't agree in point one that's not good to work with history scores, because
they are growing during the search and decrease the possibility of reduction.

I found an easy way to use the history scores native for reduction without
needing a new table or other stuff. I call it "PHR" (Peak History Reduction).

The idea is to use allready kown tables and go the easest way as possible.
Basicly we're searching the higest possible historyscore in our current moves.
This is our "peak value" at this node. So we know this move produced much
cutoff's in the past. So current moves should at least reached the half or more
points of the score to be _not_ reduced othwhise we reducing the depth.

What's the benefits of this idea ?
- No extra table needed
- If much moves close to the peak all are full searched
- If no other move over  50% we reducing all
- No static values creating a problem on long searches

code example in Homer:

if (sgdPtr->EnableHistPrune && currentExtend == 0)  {
    if ((mPtr->flags & 4)) {
        if (HistoryBest == DROP_MOVE) {
            HistoryBest = score /2;
            goto PVS;
        } else if (reachedMoves > 3 && (score <= HistoryBest || score == 0)) {
            NextDepth--;
            history_ext++;
            HistoryPrune = TRUE;
	    flags |= PruneMove;
	    goto PVS;
        }
    }
}

Very simple, but works :) I'm using this now since june 2003 without any
problems.

Best
Daniel




This page took 0.01 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.