Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Pondering ("think on opponent's time")

Author: Uri Blass

Date: 10:04:37 11/11/02

Go up one level in this thread


On November 11, 2002 at 12:10:55, Andreas Stabel wrote:

>On November 11, 2002 at 12:04:03, Uri Blass wrote:
>
>>On November 11, 2002 at 10:28:33, Robert Hyatt wrote:
>>
>>>On November 11, 2002 at 01:10:23, Uri Blass wrote:
>>>
>>>>On November 10, 2002 at 23:53:19, Robert Hyatt wrote:
>>>>
>>>>>On November 10, 2002 at 22:38:03, Jeremiah Penery wrote:
>>>>>
>>>>>>On November 10, 2002 at 21:29:43, Robert Hyatt wrote:
>>>>>>
>>>>>>>On November 10, 2002 at 21:15:07, Jim Bumgardner wrote:
>>>>>>>
>>>>>>>>Which of these strategies for "think on opponent's time" makes more sense?
>>>>>>>>
>>>>>>>>A) To only search the top-move from the principle variation.  If
>>>>>>>>the opponent makes that move, continue searching, otherwise reset and
>>>>>>>>search again.
>>>>>>>
>>>>>>>This is the _only_ way to do it.  I've explained this many times, but it
>>>>>>>is probably time to go it again...
>>>>>>
>>>>>>For the general case.  But it shouldn't be hard to find situations where it's
>>>>>>very easy to tell the ponder move is probably wrong.  In those cases, it's
>>>>>>obvious, IMO, that switching to a different ponder move would help.
>>>>>>
>>>>>>One possible scenario is when the ponder move keeps failing high - either the
>>>>>>ponder move is wrong, or you ponder some other move and you'll find the
>>>>>>fail-highs again anyway if they play the original ponder move.  Otherwise,
>>>>>>you'll have a better chance of pondering on a better move.  You could always
>>>>>>save the result of the first ponder search just in case.
>>>>>
>>>>>
>>>>>That is a good point of course.  If you get the fail high _before_ using the
>>>>>"target time" then you can safely switch to pondering something else, knowing
>>>>>you will have time to find the "fail high" again, if the opponent makes the
>>>>>expected move.
>>>>>
>>>>>The bad side might be that you don't fail high until you are beyond your target
>>>>>time, so that if you start pondering something else, you might not be able to
>>>>>find the fail high for real if the opponent actually makes that move...
>>>>
>>>>You assume here that you are going to forget the fail high.
>>>>
>>>>You can rememeber the move that you want to play against the expected move in
>>>>case of fail high and continue to search other moves and when the opponent plays
>>>>the expected move you can play the move that you remember in 0 seconds.
>>>
>>>Yes, although I am trying to adhere to the KISS principle here.  The above
>>>would work well, but it would introduce additional complexity and the
>>>opportunity for bugs.  But it might be worth it too...
>>>
>>>>
>>>>I also believe that the best strategy is not to ponder only on one move but to
>>>>have a lot of threads(for every legal move of the opponent a different thread)
>>>>and to give different priority for different moves.
>>>
>>>How about some math to show how the above is going to be better than pondering
>>>one move that is correct over 50% of the time.  I don't see any way to improve
>>>except in special cases such as a terrible fail-high that lets you know your
>>>opponent probably won't play that move...
>>
>>I admit that there is not a big improvement but if you want some math then here
>>is is:
>>
>>What is better?
>>
>>Case A:You ponder the expected move 60% of the cases and ponder another move in
>>40% of the cases
>>
>>case B:In the same 60% of the cases you use 90% of the time for the expected
>>move.
>>In the rest of the 40% of the cases you use 30% of the time for the move that is
>>going to be played.
>>
>>0.6*0.9+0.4*0.3=0.66>0.6
>>
>>
>>Uri
>
>The math here is wrong - it should be:
>0.6*0.9 + 0.4*0.1*0.3 = 0.54 + 0.012 = 0.0552

The math is correct
You cannot change my calculation and decide that my math is wrong.

I think that you assume that I assume that the program always use 90% of the
time for the move that it expects.

I did not say it.

There are 2 kind of moves:

Moves type A:Moves that the program has the move that is going to be played in
the pv.
Moves type B:Moves that the program does not have the move in the pv.

I assume that moves type A are 60% of the moves.

I said that it is possible that the program use in average 90% of the time for
the played move in moves type A and 30% of the time for the played move in moves
type B.

The point is that moves type A are not random moves and most of them are forced
positionally or tactically so the program can see after a short search that one
move is better than the other moves so it is using 90% of the time for the
expected move.

The moves type B are not forced moves and in most cases there are 2 or 3 moves
that have the same score or almost the same score so the program can use 30% of
it's time for every one of these moves.

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.