Author: Volker Böhm
Date: 15:00:07 07/25/04
Go up one level in this thread
On July 25, 2004 at 17:56:57, Volker Böhm wrote:
>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.
Sorry moved my text. See below ...
>
>>
>>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.