Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Tree search programs

Author: Uri Blass

Date: 07:31:52 05/25/03

Go up one level in this thread


On May 25, 2003 at 10:06:16, JW de Kort wrote:

>On May 25, 2003 at 09:54:56, Uri Blass wrote:
>
>>On May 25, 2003 at 09:39:48, JW de Kort wrote:
>>
>>>On May 25, 2003 at 08:48:31, Uri Blass wrote:
>>>
>>>>On May 25, 2003 at 07:53:59, JW de Kort wrote:
>>>>
>>>>>Hi friends,
>>>>>
>>>>>My chess engine currently has two search related problems.
>>>>>
>>>>>1) Sometime a e.g. 8 ply search only returns a pv a say 4 or 5 or sometimes even
>>>>>only one move. Can this be a result of using the hashtable?
>>>>>
>>>>>2) The engine searches until a certain amount of time is spend.
>>>>
>>>>This is a mistake because if there is a fail low it is better to use more time
>>>>aqnd there are cases when it is better not to use time for your move(if there is
>>>>a single move).
>>>>
>>>> If the search
>>>>>notices that the time has ran out, the search is stopped an beta is returned.
>>>>
>>>>Why do you return beta?
>>>>
>>>> I
>>>>>think this is the correct thing to do.
>>>>
>>>>No
>>>>It is not.
>>>>Your engine should play the best move that it found and not a move that it
>>>>considers.
>>>>
>>>>I see no reason to return beta when you have no idea about the score.
>>>>
>>>>Uri
>>>
>>>Thanks Uri for your reply. I will explain.
>>>Suppose the engine has reached a debt of 5 ply and then time has run out. The
>>>search must be terminated. Alpha bet is a recursive algorithm so something has
>>>to be returned because the iteration has to stop. I use beta because to signal
>>>that the move is less in value than all the other moves searched so far. I'am
>>>not sure that this is the correct procedure, though.
>>>
>>>How do you go about?
>>>
>>>Thanks again
>>
>>I do not understand what you are talking about.
>>I remember the best move in the pv and if the pv is not updated the move in the
>>pv is played.
>>
>>Uri
>
>I will explain further. In alpha beta a move is analysed by recursively calling
>alpha beta. If we are at ply 6, a value will be returned to ply 5 but then the
>original position is not restored because the preceeding moves must also be
>taken back. To do this ply 5 has to return a score to ply 4 and ply 4 to ply 3
>etc. In my program i do this like this:
>
>if (Time is up)
>   return beta
>
>this proces is repeated until every thing is restored to the original position.
>
>Jan Willem

I think that your mistake is that you assume that a value has to be returned by
alphabeta.

I have something similiar to tscp except the fact that I have null moves.

In case that I have to stop in the middle of the iteration then I have something
like this inside my function to choose move that is different than alphabeta:

setjmp(env);
	if (stop_search)
	{
		while (ply)
			if (null[ply]==0)
				undomove();
			else
				undonullmove();
		return;
	}

I get into this by
longjmp(env, 0);

I believe that longjmp to part that is not in alphabeta practically ends
alphabeta from the computer point of view
so I do not need to return a value from alphabeta.

Uri



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.