On Wed, 2007-02-07 at 14:10 -0600, Matt Gokey wrote:
> I was wondering if anyone was combining an opening library with MC/UCT
> by running a large number of the simulations and storing the results.
> This seems like a pretty natural extension to save simulation time in
> the opening. 

This is not particular effective if you mean to just save the tree.

But here is what I do about the opening which seems to help some:

  1.  Note the very first move "out of book" that the program is asked
      to search.   Write the move sequence to a file.  

  2.  Have a program running off-line that processes the positions
      first encountered out of book.

      The program searches each position 8 times using several minutes
      per search.   This is to provide variety.  The moves returned
      from the search are placed into the opening book.

  3.  The moves are played in the same proportion they were chosen.
 
      For instance if e5 is chosen 7 times and d5 1 time,  the program
      will play e5 7 out of 8 times.

The book searching code of course does all the board rotations and
reflections - and when a move is chosen a random orientation is chosen
if it's appropriate.    For instance after the opening move e5 if
d5 is a choice then it's equally likely to play d5, f5, e4 or e6.


I'm building the book off-line and new positions are presented faster
than new book responses can be generated.    So I'm taking Lazarus
off-line once in a while so the book building procedure can "catch up."

I don't know how much this really helps - it seems to not help much 
until the book gets fairly large.    There are 2 ways it helps of
course - the opening moves are deep searched so presumably they might
be higher quality, and the time saved can be spent to improve the
quality of the later moves.    

Lazarus spends a lot more time on early moves so this makes it possible
to save a lot of time on the first 2 or 3 moves and spend it on later
moves.  

I'm in a building phase now - the book is still quite small and has 91
positions at the moment.   Most of the moves it's generating are 3 or
4 ply (moves) into the game, but some are as deep as 10 ply into the
game.   Probably positions from opponents who have fixed playing 
algorithms or books.   

At some point I intend to do some kind of analysis on the win/loss
percentage of certain moves.     One possibility is to mini-max the
book lines.  

This way of making a book has severe disadvantages.  I think it works
great on 9x9 but if the program is improved, the book is suddenly 
not very relevant and you have to start over.   Since I am not a
strong player I have no way of fixing up the book.  I can't recognize
when it chooses a weak move or when a stronger move is available 
even if it doesn't like it.

I have a hash funciton that creates a 64 bit "cannonical" hash of
the position.   The same hash is produced after a rotation for
example.   A book entry is a record with 3 fields,  a priority
value (how many times the deep search selected this position), 
the cannonical hash of the parent position and the cannonical
hash of the posiiton AFTER the move is played.    This makes
collision very unlikely.    The cannonical hash takes into
consideration simple ko,  so if a ko is possible it will hash
differently than the same position where the ko is illegal.


- Don

     

  

_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to