Re: [computer-go] representing liberties

2009-08-15 Thread Carter Cheng
How do these link list of liberties and array of liberties variants work? Are 
they sorted lists/arrays? 

I considered bitmaps but it seemed in many ways a bit wasteful i.e. in most 
cases for a given group the bitmap probably is extremely sparse. Also if you 
are trying to identify individual bits I cannot think of any techniques to do 
this quickly.

--- On Sat, 8/15/09, w...@swcp.com w...@swcp.com wrote:

 From: w...@swcp.com w...@swcp.com
 Subject: Re: [computer-go] representing liberties
 To: computer-go computer-go@computer-go.org
 Date: Saturday, August 15, 2009, 10:54 AM
 I tested bit maps in the cgbg
 framework, and they perform
 slower than other techniques. However, I wrote the code in
 C which
 does not use the built-in hardware bit tests and sets nor
 use SIMD
 to merge or clear sets. If you do it in assembler, bitmaps
 might work
 much better.
 
 There are various ways that bit test could be combined with
 other
 techniques such as linked list. However, as far as I know,
 these
 combinations have not been extensively explored.
 
 Part of the reason is that the average number of liberties
 in a chain
 during an insert (when running MC playouts) is only about
 1.3.
 
 Michael Wing
 
  I've seen bit-maps mentioned many times, but is there
 any evidence  
  it's faster than a 'traditional' implementation?
 
   You can also use board-sized bitmaps. Merging is
 a trivial OR  
   operation.
 
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/
 



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


[computer-go] Erlang and computer go

2009-08-14 Thread Carter Cheng
I have been considering experimenting with Erlang as a means of prototyping 
certain aspects of a computer go program and I was curious if anyone has tried 
this already. How does a system like Erlang compare performance wise to writing 
something in say C/C++ (fastest) or Java?

Thanks in advance,

Carter.


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


Re: [computer-go] Erlang and computer go

2009-08-14 Thread Carter Cheng
Thanks both I guess I will stick with C/C++ for now. I have looked at Scala 
before though not in this particular context. It looks like a pretty compelling 
language with some pretty nice features (true lambda functions, argument 
pattern matching among others). JVM performance does concern me however. 

I do have a followup question but I will make a separate topic of it.

--- On Fri, 8/14/09, Vlad Dumitrescu vladd...@gmail.com wrote:

 From: Vlad Dumitrescu vladd...@gmail.com
 Subject: Re: [computer-go] Erlang and computer go
 To: computer-go computer-go@computer-go.org
 Date: Friday, August 14, 2009, 1:56 PM
 On Fri, Aug 14, 2009 at 22:16, Carter
 Chengcarter_ch...@yahoo.com
 wrote:
  I have been considering experimenting with Erlang as a
 means of prototyping certain aspects of a computer go
 program and I was curious if anyone has tried this already.
 How does a system like Erlang compare performance wise to
 writing something in say C/C++ (fastest) or Java?
 
 Hi,
 
 I have started for some year ago to try to withe an Erlang
 library to
 play go, but got distracted by other stuff.
 
 Erlang has a lot of nice features, but in this particular
 instance
 speed isn't one of them. The main issue is that there are
 no mutable
 data structures, so for all processing there will be a lot
 of copying.
 This is somewhat simplified, of course, but the conclusion
 still
 holds. I don't have any hard numbers, it would depend very
 much upon
 the choice of data structure.
 
 Erlang would be good at coordinating work done by simple
 and fast
 slaves, written in C for example. It would be very
 appropriate for a
 distributed engine. The problem here is that the problem
 of
 synchronizing a distributed UCT tree hasn't been solvet
 yet, to my
 knowledge.
 
 regards,
 Vlad
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/
 


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


[computer-go] representing liberties

2009-08-14 Thread Carter Cheng
I have been having difficulties selecting a good representation for liberty 
sets for strings of stones. I am curious how other people might be doing this. 
I suspect that for heavier playouts one would like to know not only the count 
of the liberties but also where precisely they might be relatively quickly(to 
determine if the group is in atari among other things).


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


Re: [computer-go] representing liberties

2009-08-14 Thread Carter Cheng
So to determine where the last two liberties for a group of stones for example 
is the obvious method of just doing it to have some method of liberty counting 
+ a exhaustive search to determine the last two liberties for example?

--- On Fri, 8/14/09, Don Dailey dailey@gmail.com wrote:

 From: Don Dailey dailey@gmail.com
 Subject: Re: [computer-go] representing liberties
 To: computer-go computer-go@computer-go.org
 Date: Friday, August 14, 2009, 2:33 PM
 
 
 On Fri, Aug 14, 2009 at 5:13 PM,
 Carter Cheng carter_ch...@yahoo.com
 wrote:
 
 I have been having difficulties selecting a good
 representation for liberty sets for strings of stones. I am
 curious how other people might be doing this. I suspect that
 for heavier playouts one would like to know not only the
 count of the liberties but also where precisely they might
 be relatively quickly(to determine if the group is in atari
 among other things).
 
 Simple is best, until you know EXACTLY what you will want
 to do and how often you will need to do it.
 
 Something pretty simple that I have used in the past is to
 track each chain and incrementally maintain the liberty
 count.  
 
 
 When you plop a stone down,  you have to look at only 4
 points to see which group if any it belongs to, or if it
 connects 2 or more groups.    And you can update the
 liberty counts of all affected groups very quickly.
 
 
 Where there is a capture, you must do considerably more
 work - but captures represent only a small fraction of the
 moves.   Small captures are more common than large
 captures, but they require little work. 
 
 
 - Don
 
 
 
 
  
 
 
 
 
 
 
 
 ___
 
 computer-go mailing list
 
 computer-go@computer-go.org
 
 http://www.computer-go.org/mailman/listinfo/computer-go/
 
 
 
 
 -Inline Attachment Follows-
 
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/



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


Re: [computer-go] gtp which version to implement?

2009-07-16 Thread Carter Cheng
Thanks all for the input.

--- On Wed, 7/15/09, Don Dailey dailey@gmail.com wrote:

 From: Don Dailey dailey@gmail.com
 Subject: Re: [computer-go] gtp which version to implement?
 To: computer-go computer-go@computer-go.org
 Date: Wednesday, July 15, 2009, 9:39 AM
 
 
 On Wed, Jul 15, 2009 at 9:41 AM,
 Carter Cheng carter_ch...@yahoo.com
 wrote:
 
 Where can I find information on these bridging protocols or
 are libraries provided for this (to the 9x9  19x19
 servers)?
 The CGOS protocol is pretty easy to decode from the cgos
 client script which is written in TCL.   Even if you
 don't know tcl you can learn the protocol easily from
 the script.
 
 
 However, there is no need to know the CGOS protocol if your
 engine speaks GTP.   GTP is designed to be a universal
 protocol for GO engines - if your engine knows GTP it should
 be able to use all kinds of tool including GOGUI, a nice
 user interface for GO programs.  The cgos client
 program speaks to the server in it's language and to
 your program using GTP. See how simple life can be?
 
 
 The CGOS protocol is about to change just slightly as I
 will be soon upgrading the server, but an updated client
 will be provided so that will require no change on your
 part.  (And the old CGOS prototol will still work but with
 some restrictions.)
 
 
 - Don
 
  
 
 
 
 --- On Wed, 7/15/09, Hellwig Geisse hellwig.gei...@mni.fh-giessen.de
 wrote:
 
 
 
  From: Hellwig Geisse hellwig.gei...@mni.fh-giessen.de
 
  Subject: Re: [computer-go] gtp which version to
 implement?
 
  To: computer-go computer-go@computer-go.org
 
  Date: Wednesday, July 15, 2009, 2:44 AM
 
  On Wed, 2009-07-15 at
 11:24 +0200,
 
  Urban Hafner wrote:
 
   Carter Cheng wrote:
 
Thanks everyone for the help thus far. I
 have
 
  been looking at the GTP
 
   protocol page and I am curious which version of
 the
 
  protocol I should
 
   try to implement if I want to communicate with
 the
 
  servers. Should I be
 
   looking at the GTP 2.0 draft version?
 
  
 
   You should implement (part of) the draft.
 It's widely
 
  used nowadays. I'm
 
   not sure if there's any server out there that
 uses the
 
  old version.
 
 
 
  Just to be clear on this point: GTP is not a server
 
  protocol, but
 
  a protocol between a controller and an engine. If you
 want
 
  the
 
  engine to connect to a server, there is still a
 bridge
 
  needed,
 
  which communicates with the engine through GTP and
 with the
 
  server
 
  through whatever protocol the server is speaking.
 
 
 
  Hellwig
 
 
 
  ___
 
  computer-go mailing list
 
  computer-go@computer-go.org
 
  http://www.computer-go.org/mailman/listinfo/computer-go/
 
 
 
 
 
 
 
 
 
 ___
 
 computer-go mailing list
 
 computer-go@computer-go.org
 
 http://www.computer-go.org/mailman/listinfo/computer-go/
 
 
 
 
 -Inline Attachment Follows-
 
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/



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


[computer-go] gtp which version to implement?

2009-07-15 Thread Carter Cheng
Thanks everyone for the help thus far. I have been looking at the GTP protocol 
page and I am curious which version of the protocol I should try to implement 
if I want to communicate with the servers. Should I be looking at the GTP 2.0 
draft version?

Thanks in advance,

Carter.


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


Re: [computer-go] gtp which version to implement?

2009-07-15 Thread Carter Cheng
Where can I find information on these bridging protocols or are libraries 
provided for this (to the 9x9  19x19 servers)?

--- On Wed, 7/15/09, Hellwig Geisse hellwig.gei...@mni.fh-giessen.de wrote:

 From: Hellwig Geisse hellwig.gei...@mni.fh-giessen.de
 Subject: Re: [computer-go] gtp which version to implement?
 To: computer-go computer-go@computer-go.org
 Date: Wednesday, July 15, 2009, 2:44 AM
 On Wed, 2009-07-15 at 11:24 +0200,
 Urban Hafner wrote:
  Carter Cheng wrote:
   Thanks everyone for the help thus far. I have
 been looking at the GTP
  protocol page and I am curious which version of the
 protocol I should
  try to implement if I want to communicate with the
 servers. Should I be
  looking at the GTP 2.0 draft version?
  
  You should implement (part of) the draft. It's widely
 used nowadays. I'm 
  not sure if there's any server out there that uses the
 old version.
 
 Just to be clear on this point: GTP is not a server
 protocol, but
 a protocol between a controller and an engine. If you want
 the
 engine to connect to a server, there is still a bridge
 needed,
 which communicates with the engine through GTP and with the
 server
 through whatever protocol the server is speaking.
 
 Hellwig
 
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/
 


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


[computer-go] memory management for search trees(basic question)

2009-07-14 Thread Carter Cheng

This is something I have been curious about since I am somewhat new to writing 
code in languages which require explicit memory management (as opposed to have 
some sort of garbage collector do it for you). The question is how do most 
programs manage memory w.r.t. the search nodes? Is the memory preallocated in 
advance or is there some strategy to grow the space required as the nodes 
accumulate during a search?

Thanks in advance,

Carter. 


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


Re: [computer-go] memory management for search trees(basic question)

2009-07-14 Thread Carter Cheng

Thanks for the replies. I will most likely be writing in C++ given the 
additional abstraction mechanisms and my current lack of understanding of 
preprocessor #define type tricks. 

I remember reading about Zobrist's hash functions in some old messages on the 
list and some papers on the GHI issue but at this point I am still just 
implementing the basic light playout simulation code so I haven't quite gotten 
here yet. 

I wonder concerning GHI for doing searches in go that you could in principle 
encode extra information into the position key which could be use to 
discriminate board positions which appear to be the same but differ in crucial 
ways. 

Thanks everyone for the help. 


--- On Tue, 7/14/09, Don Dailey dailey@gmail.com wrote:

 From: Don Dailey dailey@gmail.com
 Subject: Re: [computer-go] memory management for search trees(basic question)
 To: computer-go computer-go@computer-go.org
 Date: Tuesday, July 14, 2009, 8:32 AM
 There has been quite a few descriptions
 on this forum about how people do this.   
 
 I am guessing, but I think most of the authors allocate a
 pool of memory and manage this themselves.    Are you
 writing in C? 
 
 
 In C you can declare a fixed size record (called a
 struct)  and just make an array of them.    This is what
 my program does.   When I need new nodes I just use the
 next ones available and a counter keeps track of where I
 am.   
 
 
 It's a little more complicated if you also need to
 remove nodes.  I don't do this.   When a new search
 begins I can just start over again.   
 
 I think there are a lot of variations of what people
 do.    Perhaps a better way is to use a hash table
 instead of a tree.   It's still a tree of course but
 structured different.   With a hash table a zobrist key is
 used to index into a hash table.   So you can build your
 tree this way,  again using a fixed pool of nodes or
 whatever hash table method you need to.    One advantage
 of a hash table is that with transpositions you can resuse
 information that has already been computed - but one
 disadvantage is that you have to deal with Graph History
 Interaction (GHI.) I think most program ignore GHI
 for the most part (in a similar way that computer chess
 programmers ignore the problem) but I'm not real sure on
 this one.
 
 
 You can also use malloc and free to allocate space for
 nodes - but it is well known that this can be challenging
 for writing bug free programs.   I have found that you can
 almost always avoid it and I personally only use it for top
 level data structures - for instance I might allocate my
 initial fixed pool of nodes this way (and so it can be user
 configurable)  but I won't allocate and free individual
 nodes.   
 
 
 Also, if you use malloc and free you will surely see a
 slowdown.
 
 Another option is to use the Hans Boehm garbage collector,
 a library you simple link to in your C programs.    It
 will do the automated garbage collection for you - but I
 think you will see a slowdown and I think there is a memory
 overhead penality for using this as it probably needs
 working space.
 
 
 - Don
 
 
 
 On Tue, Jul 14, 2009 at 11:06 AM,
 Carter Cheng carter_ch...@yahoo.com
 wrote:
 
 
 
 This is something I have been curious about since I am
 somewhat new to writing code in languages which require
 explicit memory management (as opposed to have some sort of
 garbage collector do it for you). The question is how do
 most programs manage memory w.r.t. the search nodes? Is the
 memory preallocated in advance or is there some strategy to
 grow the space required as the nodes accumulate during a
 search?
 
 
 
 
 Thanks in advance,
 
 
 
 Carter.
 
 
 
 
 
 
 
 ___
 
 computer-go mailing list
 
 computer-go@computer-go.org
 
 http://www.computer-go.org/mailman/listinfo/computer-go/
 
 
 
 
 -Inline Attachment Follows-
 
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/



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


Re: [computer-go] memory management for search trees(basic question)

2009-07-14 Thread Carter Cheng
I have a good number of C++ books but strangely though I use to own Meyers' 
first 2 books I have sort of misplaced them. Perhaps I should get a couple new 
copies. I will study the Boost Pool source and see what I can glean from it. 
The only custom allocator design I have on hand in a book is the one in Modern 
C++ Design.

Thanks.

--- On Tue, 7/14/09, Darren Cook dar...@dcook.org wrote:

 From: Darren Cook dar...@dcook.org
 Subject: Re: [computer-go] memory management for search trees(basic question)
 To: computer-go computer-go@computer-go.org
 Date: Tuesday, July 14, 2009, 4:05 PM
  Thanks for the replies. I will
 most likely be writing in C++ ...
 
 If you've not already, rush out and buy Effective C++ by
 Scott Meyers.
 Item 10 shows you a memory pool, items 1..9 and 11..50 will
 also come in
 useful. As will More Effective C++, and Effective STL.
 
 Boost has a memory pool library (*). I use
 boost/detail/quick_allocator.hpp (and if you are familiar
 with Boost,
 the detail/ means an unsupported library whose interface
 may change
 without warning) which was quickest as long as I disabled
 thread support.
 
 If you are planning to have multiple threads share the same
 memory pool
 I suggest the main boost pool library (*), as I'm sure
 they've taken
 care of the issues, while never losing sight of
 efficiency.
 
 Darren
 
 *: http://www.boost.org/doc/libs/1_39_0/libs/pool/doc/index.html
 
 
 
 -- 
 Darren Cook, Software Researcher/Developer
 http://dcook.org/gobet/  (Shodan Go Bet - who will
 win?)
 http://dcook.org/mlsn/ (Multilingual open source
 semantic network)
 http://dcook.org/work/ (About me and my work)
 http://dcook.org/blogs.html (My blogs and articles)
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/
 



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


[computer-go] Basic question concerning the edges of the board

2009-07-13 Thread Carter Cheng

Hi,

I have again been considering trying my hand at implementing a simple go 
program. The question I have pertains to checking for the edge of the board in 
capture situations and so on. For a modern CPU (given what limited information 
I have on this) the extra branches might result in pipeline stalls if I am 
constantly checking if values are in range. Is it best to extend the size of 
the board to say 21x21 to somehow avoid these sorts of checks? Or are the 
relative cost of these branches negligible in the scheme of things?

Thanks in advance,

Carter.


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


Re: [computer-go] Basic question concerning the edges of the board

2009-07-13 Thread Carter Cheng

Thanks all for the replies. I am not sure I quite get the 20x21+2 idea but I 
will take a look back in the archives. Does anyone remember roughly when it was 
posted to the list?

Thanks again,

Carter.

--- On Mon, 7/13/09, Peter Drake dr...@lclark.edu wrote:

 From: Peter Drake dr...@lclark.edu
 Subject: Re: [computer-go] Basic question concerning the edges of the board
 To: computer-go computer-go@computer-go.org
 Date: Monday, July 13, 2009, 9:08 AM
 As in LibEGO, if you define the
 off-board points to be both black AND white, finding
 captures requires fewer branches.
  Peter Drakehttp://www.lclark.edu/~drake/
 
  
 On Jul 13, 2009, at 8:48 AM, David Fotland
 wrote:
 I use one dimensional arrays for speed (to
 avoid a multiply by 21).  
 
 Old Many Faces code uses arrays of 363 (361 points, pass,
 and null-point).
 The smallest possible arrays were required to run under 500
 KB total memory.
 I avoided edge checks by having a set of small offset
 arrays (with 2, 3, or
 4 offsets), chosen by the board.
 
 My MCTS code uses single dimension arrays with size
 suggested by Mark Boon,
 from Goliath, 20 * 21 + 2.  This is enough to have
 points off the edge on
 all sides and diagonals.
 
 David
 
 -Original Message-
 From:
 computer-go-boun...@computer-go.org [mailto:computer-go-
 boun...@computer-go.org]
 On Behalf Of Carter Cheng
 Sent: Monday, July 13,
 2009 8:36 AM
 To: computer-go@computer-go.org
 Subject: [computer-go]
 Basic question concerning the edges of the board
 
 
 Hi,
 
 I have again been
 considering trying my hand at implementing a simple go
 program. The question
 I have pertains to checking for the edge of the
 board
 in capture situations and so on.
 For a modern CPU (given what limited
 information I have on
 this) the extra branches might result in pipeline
 stalls if I am
 constantly checking if values are in range. Is it best to
 extend the size of the
 board to say 21x21 to somehow avoid these sorts of
 checks? Or are the
 relative cost of these branches negligible in the
 scheme
 of things?
 
 Thanks in advance,
 
 Carter.
 
 
 
 ___
 computer-go mailing
 list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/
 
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/
 
 
 -Inline Attachment Follows-
 
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/



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


Re: [Fwd: Re: [Fwd: Re: [computer-go] Computer Olympiad registration reminder: 11 days left]]

2008-06-10 Thread Carter Cheng
Thanks Remi. Are standard accommodations being provided by the site organizers 
or will we have to for the most part make our own arrangements? I guess I have 
a few more days to decide whether or not to submit a basic program which most 
likely will not win any games given how stiff the competition is.

Regards,

Carter.


--- On Mon, 6/9/08, Rémi Coulom [EMAIL PROTECTED] wrote:

 From: Rémi Coulom [EMAIL PROTECTED]
 Subject: [Fwd: Re: [Fwd: Re: [computer-go] Computer Olympiad registration 
 reminder: 11 days left]]
 To: computer-go computer-go@computer-go.org
 Date: Monday, June 9, 2008, 1:47 AM
 Some answers by the organizers.
 
 Rémi___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/



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


Re: [computer-go] batch size and impact on strength

2008-05-24 Thread Carter Cheng
I think I being was a bit unclear here. By UCT I meant the combination of 
UCT+Simulation. I am just curious why simulation based methods of evaluation 
are thus far found to be superior (are they on 19x19?) to traditional bots 
which have a different form of evaluation function for a given position. It 
would seem that simulation based methods of arriving at a scoring function for 
the current position (playing out to the end) might be quite inefficient 
especially on 19x19 where it seems to me on average the game lasts about 
400-450 moves. Heavy playouts from this viewpoint are an attempt to improve the 
evaluation function over the uniformly random light playout. 

As for UCT itself perhaps I dont still completely understand this algorithm but 
is a full episode or simulation required for it's use? or are there related 
family of algorithms which operate on trees like UCT does but grows them 
asymmetrically given some confidence bounds on the values returned by the 
heuristical positional evaluation function?

Perhaps my understanding of Mogo from the thesis is incorrect. From a certain 
standpoint it makes very limited usage of heuristics and seems to rely solely 
several published details (in the thesis):

1) UCT+simulation

2) learned pattern weights via self-play using TD(lambda). 

3) Proximity heuristics. (which is something I do not quite understand on a 
deep level as to why it improves play).

4) RAVE knowledge recycling between trees.

5) The dragon heuristic.

The first two can be viewed as online and offline learning. 3)  5) to me 
incorporate some domain knowledge and 4) perhaps some but it seems to perhaps 
work in games which have combinatorial properties and perhaps is more broadly 
applicable.

Obviously there are probably alot of unpublished details. Such as the use of a 
simple ladder search (as you indicated your program Valkyria does) and perhaps 
many other enhancements which we do not know about. But from Sylvain's 
description it seems that the amount of domain knowledge is limited and that 
the statistical learning procedures dominate is this a 
misinterpretation/misrepresentation? 


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


Re: [computer-go] batch size and impact on strength

2008-05-24 Thread Carter Cheng
Thanks for the reply.

 2) learned pattern weights are not learnt through
 TD(lambda). RLGO is not 
 used in mogo. It was used a long time ago. Hand-designed
 heuristics are 
 much more efficient (in particular after heavy
 cluster-based tuning of 
 coefficients).
I am not entirely sure what you mean here by tuning coefficients do the 
heuristics in question require some form of parameterization? How are these 
parameters tuned?


 
 3) holds in mogo, and in all efficient Monte-Carlo based
 techniques. This
 is particularly important, as seemingly knowing the last
 point if 
 important for a correct evaluation of a position in the
 case of bounded 
 computational resources. By the way, this might be true for
 humans, also.
 I'm afraid it's difficult to find sufficiently many
 human players and 
 situations for organizing an experiment about that :-)
 
This seems to be the case and I still do not really on some level understand 
why. Since with the chinese go rules the board should be effectively stateless 
(exempting ko information) all the information be contained in the the current 
position. Why additional information is needed i.e. an annotation of the last 
played move is required on some level is a mystery to me.   


 4) The rave heuristic only migrates
 informations from one node to nodes
 above that node - never to brothers, cousins,
 sons, and so on. Many 
 attempts have been done here and elsewhere around that
 without success.
 
 By the way, parallelizations (both multi-core and MPI) are
 *very* 
 efficient. The use of huge clusters could probably give
 much better
 results than the current limit of mogo (between 1k and 1d
 on KGS with
 64 quad-cores and myrinet switch).
This is obviously quite an impressive feat. However it is also on some level a 
bit disappointing to me that it will be sometime before we see strong desktop 
programs since the computational resources required is somewhat prohibitive. 


 
 Another point which was not in the thesis of Sylvain and
 which is also 
 central is the use of patterns in the tree. This is used
 since a long time
 in CrazyStone and Mango, we are currently developping this
 part in MoGo,
 and this is quite efficient (but involves tedious tuning of
 several 
 parameters).
 
I am sure I understand the distinction here between patterns in the tree and 
patterns used in the heavy playouts. I guess by this you mean they are not the 
same thing. 

I am in general basically curious how tuning of parameters occurs i.e. how you 
fit the parameters in a given situation if things like reinforcement learning 
are not used (which my understanding is is sort of an automated procedure for 
fine tuning various parameters in the system).   

Regards,

Carter.


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


Re: [computer-go] 10k UCT bots

2008-05-14 Thread Carter Cheng
How do LD modules generally function? Is this discussed in the literature 
somewhere? The only open source LD module I am aware of is the one in GNU-go 
and I am not certain how good or bad it is since my own playing strength isn't 
that good. I have found some papers on this topic but most do not go into much 
detail on how they are evaluating LD and most just discuss performance issues 
and general algorithmic approaches (like proof-number-search). 

Regards,

Carter.


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


Re: [computer-go] a few more questions

2008-05-14 Thread Carter Cheng
Thanks for the help with this. I suspect I will go directly for a heavy playout 
implementation and avoid writing some of the trickier the light playout code so 
I probably will be implementing this soon. 


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


[computer-go] a few more questions

2008-05-13 Thread Carter Cheng
Thanks for all the comments so far. Hopefully you don't mind a few more 
questions. 

1) Do UCT bots check for atari and urgency? my understanding was that first 
generation Mogo did this to some extent IIRC. I am curious if anyone does this 
it seems like it might be important but so far I cannot think of a fast 
detection scheme. 

2) When generating random variables for the case where the values of placing 
a stone on different points on the board are different. Are there good ways to 
throw and determine which point has been selected for the next move by the 
random player? 

Thanks again,

Carter.

  


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


Re: [computer-go] Some beginner's questions concerning go bots

2008-05-10 Thread Carter Cheng
Thanks everyone for the responses. My go skills are somewhat limited (only 
6-7kyu on KGS) so hopefully I am not belaboring the obvious. 

I have a few followup questions-

1) What mathematically is a seki? I know this is a local draw but can it be 
determined statically at some point in all cases using some sort definition 
without placing stones on the board (i.e. searching). I only know of three 
cases here- the 1 eye each case with one shared liberty. two shared liberties 
and the half eye situation.

2) I am guessing hash maps get quite large if they are exhaustive. i.e. (nxn)^3 
can quickly become quite big. Or do they tend to be sparsely populated?

3) GTP and time management and scoring after two passes. Are these issues 
discussed anywhere? Do libraries like Orego and Libgo contain code that already 
does this which can be used as a reference?

Thanks again,

Carter.


 

 


  

Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Some beginner's questions concerning go bots

2008-05-10 Thread Carter Cheng
Thanks for the responses.

1) I guess for this seki question I was wondering if it was as easy to define 
as liveness without seki. The reason I am interested in this is I am curious 
about absolutely correct scoring functions and whether they currently cope well 
with advanced seki situations or not. I have been looking at some of the cases 
listed on the Sensei's Library. A cursory look seems to indicate that they are 
very difficult to classify- and any seki classifier might need some knowledge 
of killing shapes.

2) You are correct Jason I transposed the symbols for some reason I actually 
meant 3^(n^2) but typed it in backwards. 

3) Also thanks for the links. I have taken a look at some of the code. I am not 
sure I will be writing in Java or D and most likely will be implementing the 
system in something like C++. I am worried about Java's speed since it's 
interpreted (which still means a x2 slowdown even with the JIT and Hotspot 
compilation and selective inlining). D I am just not too familiar with I am 
wondering what advantages it brings over C++. I am primarily concerned about 
maturity issues. I am not trying to start a discussion on which language is 
better, but those are my initial impressions.

I am primarily interested in creating a very basic go bot at this point and use 
it for primarily data gathering. I have been curious about certain aspects of 
game searches and how they apply to go and how reinforcement learning works 
etc. I figure being a complete beginner at this it will take some time before I 
have any meaningful insights into how everything works to contribute anything. 

Regards,

Carter.







  

Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


[computer-go] Some beginner's questions concerning go bots

2008-05-09 Thread Carter Cheng
Hi,

I have been lurking around in this group for sometime and recently have become 
interested in perhaps doing some coding and data gathering for constructing a 
simple go bot. I have a few basic questions I was wondering if people in the 
group could help me answer-

1) How typically do UCT bots score simulations quickly? I am not too familiar 
with Chinese scoring rules.

2) How do machines define eyes analytically (mathematically) and are there 
approximations which are faster to calculate for more traditional or UCT 
designs (is this information even used for UCT bots?).

3) What sort of algorithm is used to match patterns once you have mined them 
from some data source? 

4) And lastly how does UCT cope with ladders?

Thanks in advance,

Carter.



  

Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/