Many Faces keeps the tree from move to move.  I discard nodes with few visits 
(or old nodes) after each move to free up most of the tree memory, but I keep 
the core of the tree.  When MF runs out of memory it garbage collects some 
nodes.

 

David

 

From: [email protected] 
[mailto:[email protected]] On Behalf Of Jason House
Sent: Sunday, December 13, 2009 12:27 PM
To: computer-go
Subject: Re: [computer-go] Simple gogui problem

 

On Dec 13, 2009, at 11:30 AM, Corey Harris <[email protected]> wrote:

 

Was looking for a basic UCT data structure. I guess a tree structure is created 
in memory. How is this managed, because memory can be exausted pretty fast. 

 

 

It isn't as fast as you might think. You want to use zobrist hashing for 
looking up nodes. IIRC, Many Faces discards the search tree after each move and 
simply does not create more nodes when it runs out of memory.

 





 

>>• record results for all visited 
>>nodes_______________________________________________

 

Where do you record the results? 

 

Logically, every node in the search tree has an estimated win rate. It's also 
possible to store the win rate of all follow-up moves for a given node. That's 
friendlier on the cache but uses more memory per node. I'm unsure what most 
bots do.

 

tracking of win rates can be done in a few different ways:

• Total simulations, Win percentage

• Total simulations, # of wins

• Total simulations, # of wins - # losses

• # of wins, # of losses

 

More important than how to store those values is how they're initialized based 
on domain knowledge. 

 





 

I appologize for the simple questions, I'm new at this.

On Sun, Dec 13, 2009 at 9:48 AM, Jason House <[email protected]> 
wrote:

On Dec 13, 2009, at 9:38 AM, Corey Harris <[email protected]> wrote:

I know this is a simple issue but I'm not sure of the solution. I am currently 
in the very early stages of writing a go engine. I have the board state and 
simple opening library implemented (no play logic yet). I'm would like to 
output debugging/developnent output statements to the gogui shell window. If 
the engine sends printf("some output\n"); gogui  says "Sent a malformed 
response". If it fprintf(stderr, "some output\n"); nothing is displayed.

How can you print messages to the shell without disrupting the message protocol?

 

Writing to stderr works fine for me, but gogui does not show shell output 
immediately. It waits until some point in overall execution before showing 
anything in the shell output. 






Also, is there a site that describes the workings of a UCT bot in detail 
similiar to some chess programming tutorial sites?

 

Not that I'm aware of, but senseis.xmp.net might be a good place to start. 
Basic UCT is simple:
• always start at tree root
• pick the child with the highest metric (upper confidence bound on win rate)
• repeat last step until you reach a leaf
• if simulations of the leaf > N, expand leaf and pick child with highest metric
• play random game
• record results for all visited 
nodes_______________________________________________
computer-go mailing list
[email protected]
http://www.computer-go.org/mailman/listinfo/computer-go/

 

_______________________________________________
computer-go mailing list
[email protected]
http://www.computer-go.org/mailman/listinfo/computer-go/

_______________________________________________
computer-go mailing list
[email protected]
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to