Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: timing out and choosing a move

Author: Volker Böhm

Date: 14:56:57 07/25/04

Go up one level in this thread


On July 25, 2004 at 11:40:09, Stuart Cracraft wrote:

>So I made the change I read about in the archives
>where you timeout and backup a timeout value to
>unwind the recursion rapidly. I put the tests for
>timeout and immediate return of timeout value at
>the top of quiescence search and the top of the main search
>as well as stopping any new move being evaluated
>(in either) if a timeout had hit, from one of the
>prior tests being triggered. In that case, it also
>just immediately returns the timeout.
>
>At the same time, at the top of the search I modified
>it so that if there was a timeout, it would take the
>first move of the previous completely finished iteration
>as the move of the program -- rather than the prior behavior
>of taking the current best move backed up from the partial,
>time-interrupted, current variation.

>
>When I did the above, one thing didn't happen that I expected
>and one thing did that I was fearing.
>
>1) my time continues to overstep by up to 50% or so for a
>fixed time search. I expected it to overstep by very little if
>any after the above change.

Be sure that you check the time-counter at each call of alpha-beta.

Don´t stop allways if running out of time.
I have an algorithm like:

If more than 50% time left, search next depth.
If more than 20% time left, search next move on current depth.
Stop if more than 120% time spent.
Use more time if score suddenly drops.

-> Usually Spike does not terminate in the middle of searching a move on root.


>
>2) my moves obviously are frequently different now, picking the
>last iteration's fist move of the PV and the result on my standard
>test dropped from 93% to about 50%.

See above, allways take best move from pv.

>
>So my questions are on #1, where is the best place to put the
>immediate returns if a timeout flag is set and where is the
>best palce to set that flag in search and quiescence.

never in quiescense
at the beginning of search

search (...)
{
TimeCount--;
if (TimeCount == 0)
{
  if (NoTimeLeft(...)) TimeOut = true;
  TimeCount = 10000;
}

if (TimeOut) return -MaxValue;
...
}


>
>On #2, there must be a happy median, like "has it searched
>the pv from the prior iteration but changed its mind?" There
>must be some condition that would allow me to accept that
>change of mind. What is it?

Just take the current best move from pv. Make sure that you never change pv if
timeout flag is set and make sure that the last pv is allways searched first.

>
>Thanks,
>
>Stuart



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.