Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: History heuristic

Author: Anthony Cozzie

Date: 06:18:10 03/18/04

Go up one level in this thread


On March 18, 2004 at 04:32:12, Sergei S. Markoff wrote:

>Hello!
>
>First try to index history depending of piece that moves. It's a "free"
>improvement. I don't know why Crafty not doing it. See me code (it complicated a
>little, but works ok):
>
>#define KING				1
>#define KNIGHT				2
>#define PAWN				3
>#define ROOK				5
>#define BISHOP				6
>#define QUEEN				7
>
>const int history_group[8]={0,0,0,1,0,2,1,3};
>int history[4][64*64*2];
>
><...>
>
>void History(int Depth,MOVE mv)
>{
> int index=((mv&4095)<<1)|SideToMove;
> int index1=history_group[M_PIECE(mv)];
>
> history[index1][index]+=Depth*Depth;
>
><...>
>
>The second good idea is to right shift history in case of overflow at least.
>
> if(history[index1][index]>=MAX_HISTORY)
> {
>  int i,j;
>  for(j=0;j<4;j++) for(i=0;i<64*64*2;i++) history[j][i]>>=1;
> }
>
>And a last near-free improvement is to include endgame flags into history index.
>Or having queens. For example in endgame after queen promotion history values
>becomes really unrelevant.
>
>Best wishes,
>Sergei.

One of the things that also occurred to me after reading Sune's post was having
two tables: one that was never (or rarely) reset and depth limited, and one that
was kept within a relatively small range.

All this history stuff has made me want to experiment a bit . . .

anthony



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.