Computer Chess Club Archives


Search

Terms

Messages

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

Author: Robert Hyatt

Date: 12:26:37 11/12/02

Go up one level in this thread


On November 12, 2002 at 12:45:56, Uri Blass wrote:

>On November 12, 2002 at 10:55:58, Robert Hyatt wrote:
>
>>On November 12, 2002 at 01:14:36, Uri Blass wrote:
>>
>>>On November 11, 2002 at 21:31:09, Robert Hyatt 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
>>>>>
>>>>
>>>>You are making assumptions that are unsound.
>>>>
>>>>I am _certain_ that I ponder the correct move 50% of the time (actually
>>>>significantly better than that, but 50% will do for now).
>>>>
>>>>I am _also_ certain that I can't be sure that in your case B that I can use
>>>>30% of the time for the move that is going to be played.  How can I know that
>>>>until it is played?  I can't.  And if the probability that the best move from
>>>>the search is right 50% of the time, it is wrong 50% of the time.  How are
>>>>you going to be so accurate that you can get _the_ move that will be played
>>>>to ponder in your above approach?
>>>>
>>>>I don't see how it is possible.  If the "best move" is wrong 50% of the time,
>>>>then _clearly_ the second_best move will be wrong _more_ than 50% of the time.
>>>>If we had a way to get the second-best move anyway...
>>>
>>>
>>>If we evaluate every possible move by having a thread for every legal move
>>>then we have an idea about the second best move.
>>
>>How?  You will spend so little time on each move the score will be meaningless.
>>Because to search every move independently means no alpha/beta efficiency
>>between
>>the moves.  Normally the first move takes 90% of the time and the remaining
>>moves
>>take maybe 10%.  With this approach _every_ move will take that 90%.
>>
>>>
>>>If we see in the search fail high after the
>>>best move then it means that the best move
>>>is no good and it may be better to use more time
>>>for the second best move based on our evaluation.
>>>
>>>I do not plan to try to do something like that in
>>>the near future and today there are even cases when
>>>Movei waits and do nothing during pondering
>>>and I do not plan to fix it in the near future.
>>
>>That is trivial to fix.
>>
>>(1) probe the hash table for a move to search;
>>
>>(2) do a short search for the opponent to find his "best move" and then ponder
>>using that move.
>>
>>That way you will _never_ sit and wait.
>
>Possible problems
>
>1)If I get a mate score against the opponent move
>or get the maximal depth then I sit and wait
>and the only way to fix
>it is to start to ponder on another move of the
>opponent.

Of course.  However, this is _very_ rare.

>
>2)If I am in book then I need to search
>for the best move of the opponent that
>I have no reply for it in book and
>it is not trivial.
>
>Uri


I already do that.  Another option I use is that while in book, I find the set
of
non-book moves for my opponent, do a search on those to pick the best one, and
then ponder that, because I know if he plays a book move I have an instant
response
ready...



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.