<div dir="ltr">I wrote an AI agent which plays go using a pure Java implementation of UCT-RAVE for my MS project at Georgia Tech.  With better data structure optimization I'm relatively sure 10,000s of roll-outs per second, per core, is not an unreasonable goal.<div>
<br></div><div style>Chinese scoring is easier than Japanese but I wouldn't go so far as to say trivial - my initial implementation erroneously counted surrounded dead groups as points!</div><div style><br></div><div style>
I used no heuristics whatsoever in the roll-out policy, and would recommend getting your MCTS algorithm working with purely random roll-outs first.  I also did not explicitly code for avoiding filling the player's own eye, but used Zobrist hashing for super-ko detection and in practice never observed games run into hundreds of moves.</div>
<div style><br></div><div style>I would recommend using a board state data structure which encodes groups (or strings) of stones.  Counting liberties recursively consumed 40% of my first agent's total run-time, for negligible memory gains.  I did not deal with culling the state tree at all.</div>
<div style><br></div><div style>Finally, (3) above is quite difficult.  I am currently attempting to train a neural network which usefully estimates this value by means of temporal difference learning.</div><div style><br>
</div><div style>For more details, feel free to check out my project write-up at <a href="http://woodyfolsom.net/blog/?page_id=43">http://woodyfolsom.net/blog/?page_id=43</a>.  I did not manage much original research since the whole project was done start to finish in one semester, but it covers the basics of MCTS and computer go.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Feb 8, 2013 at 4:41 PM, Don Dailey <span dir="ltr"><<a href="mailto:dailey.don@gmail.com" target="_blank">dailey.don@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Score a go board using Chinese rules - it is trivial.   <div><br></div><div>The basic concept is that you play random moves and (usually) allow no passes until there is nothing else to be done.  To prevent eye filling there is a fairly simply but very effective rule that prohibits filling a one point eye - otherwise the game can last for hundreds of moves.      </div>

<div><br></div><div>That is the "basic" concept.   These "playouts" can be greatly improved on with some simple rules and patterns.  But there must sitll be some element of randomness and getting this right is subject to a lot of research and is considered a bit of a black art.   </div>

<div><br></div><div>Even a pretty trivial (uniformly random) playout strategy with the rule not to fill properly constructed one point eyes can give a reasonable evaluation, especially  near the end of the game if you view it statistically.   For example if you play 1000 of these "random" playouts and black wins 950 of them,  black probably really does have a won game.    With a little bit of intelligence added to the playout strategy it can become quite good.   MCTS  basically integrates a best first search with this concept. </div>
<span class="HOEnZb"><font color="#888888">
<div><br></div><div>Don</div></font></span><div class="HOEnZb"><div class="h5"><div><br></div><div><br></div><div><br></div><div><br><div class="gmail_quote">On Fri, Feb 8, 2013 at 4:33 PM, Rémi <span dir="ltr"><<a href="mailto:remi.de.z@gmail.com" target="_blank">remi.de.z@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">surely at any time during a game of go, three passes can be made and the game can be scored...<br><br><div class="gmail_quote">

On 8 February 2013 22:31, Rémi <span dir="ltr"><<a href="mailto:remi.de.z@gmail.com" target="_blank">remi.de.z@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If there really is a difference between (1) and (2) then I have always been completely oblivious to it. For your third (3) case I again see not what the difference is. <div>


<div><br></div><div><br><div class="gmail_quote">
On 8 February 2013 22:02, Nick Wedd <span dir="ltr"><<a href="mailto:nick@maproom.co.uk" target="_blank">nick@maproom.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



On 08/02/2013 20:34, Rémi wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hy,<br>
<br>
There are a lot of interesting papers on UCT and selection strategies<br>
... But it's harder to find information about the more 'pragmatic' side<br>
of computer-go.<br>
<br>
How do you score a go board?<br>
</blockquote>
<br>
What do you mean by "score a go board"?  I can think of three reasonable possibilities.<br>
<br>
(1.) Count the score in a game that is over.<br>
<br>
(2.) Count the score in a game that is not over, but both players have passed because they think it is.<br>
<br>
(3.) Count the score in a game that is still being played.<br>
<br>
(1) is difficult but practicable. (2) is similar to (1), so long as you are not bothered about the result being meaningful, but just want to calculate the score as a referee might if asked to score a game in which both players have passed prematurely. (3) is as difficult as playing Go perfectly.<br>




<br>
Nick<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
What would be a faster algorithm to score a go-board?<br>
Could you pre-calculate and accumulate some information early in the<br>
game (on every move), knowing you're going to evaluate the board many times?<br>
When do you decide to finish/score the game?<br>
<br>
Also, what are some of the languages used besides C(++)? Does anyone<br>
work in something like java or a functional language?<br>
<br>
Rémi de Zoeten.<br>
<br>
<br>
______________________________<u></u>_________________<br>
Computer-go mailing list<br>
<a href="mailto:Computer-go@dvandva.org" target="_blank">Computer-go@dvandva.org</a><br>
<a href="http://dvandva.org/cgi-bin/mailman/listinfo/computer-go" target="_blank">http://dvandva.org/cgi-bin/<u></u>mailman/listinfo/computer-go</a><br>
<br><span><font color="#888888">
</font></span></blockquote><span><font color="#888888">
<br><span><font color="#888888"><span><font color="#888888">
<br>
-- <br>
Nick Wedd<br>
<a href="mailto:nick@maproom.co.uk" target="_blank">nick@maproom.co.uk</a><br>
______________________________<u></u>_________________<br>
Computer-go mailing list<br>
<a href="mailto:Computer-go@dvandva.org" target="_blank">Computer-go@dvandva.org</a><br>
<a href="http://dvandva.org/cgi-bin/mailman/listinfo/computer-go" target="_blank">http://dvandva.org/cgi-bin/<u></u>mailman/listinfo/computer-go</a><br>
</font></span></font></span></font></span></blockquote></div><span><font color="#888888"><br></font></span></div></div>
</blockquote></div><br>
<br>_______________________________________________<br>
Computer-go mailing list<br>
<a href="mailto:Computer-go@dvandva.org" target="_blank">Computer-go@dvandva.org</a><br>
<a href="http://dvandva.org/cgi-bin/mailman/listinfo/computer-go" target="_blank">http://dvandva.org/cgi-bin/mailman/listinfo/computer-go</a><br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Computer-go mailing list<br>
<a href="mailto:Computer-go@dvandva.org">Computer-go@dvandva.org</a><br>
<a href="http://dvandva.org/cgi-bin/mailman/listinfo/computer-go" target="_blank">http://dvandva.org/cgi-bin/mailman/listinfo/computer-go</a><br></blockquote></div><br></div>