Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Move ordering

Author: José Carlos

Date: 16:20:03 08/06/04

Go up one level in this thread


On August 06, 2004 at 07:04:52, Andrew Platt wrote:

>On August 05, 2004 at 22:26:54, Uri Blass wrote:
>
>>> In this case, for iteration 11, I first search Nf3, second I search d4,
>>> then e4,and after that, all the other moves, sorted by node count.
>
>> This is exactly killer moves and it can be improvement only for programs
>> that do not use killer moves in the first ply.
>
>It is killer moves but it's like having a Killer array of MAX_MOVES which you
>wouldn't do lower down.
>
>Andy.

  I don't even need an array, in my implementation. Every move at the root has a
score. The moves at the root get generated only once per search, so the scores
stay from iteration to iteration. I use a big counter for fail high moves, and a
smaller value for each other move, that depends on node count. It goes something
like this (in pseudo-code):

Search()
{
  counter = 1000000;

  for(depth = 1;No timeout;depth++)
  {
    SearchPVMove(depth);
    for (non pv moves)
    {
      SearchMove(depth);
      if (fail high)
        move->score = counter++;
      else
        move->score = SmallNumber(node count);
    }
  }
}

  That's it. Pretty simple to implement. But as Tord says, it's not clear it is
better than other schemes. I like it for two reasons: it seems to work for my
program; it looks logical as a human.

  José C.



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.