Go Player

So now that I’ve got my Master’s degree, I am looking to expand and test my knowledge in AI as well as see what I’m capable of. I think one of the best ways to achieve this goal is to enter one or more AI competitions. This way I can best test and hone my abilities against others more capable than me as well as get direct feedback regarding where my abilities lie in comparison to others. Basically, I feel any competition that forces me to improve my skills in AI are good for me at this stage of my life.

I think I have found on such project that will allow me to test my mettle as it were in a competitive environment. I am going to create a computer Go player that will compete against other computer Go players and perhaps even human Go players.

The game of Go is well suited to my goals of honing and measuring my AI skills in a competitive environment. There are a variety of good Go servers out there that allow people to submit Go engines. Furthermore, there are some well defined standards with which one can define and communicate to and from a Go engine that makes developing a Go engine rather easy.

More than any of that, however, Go is an especially good game to choose because no good computer Go player has been created yet that can compete against the best human Go players out there. The reason for this is that, unlike chess, computers have not advanced far enough yet where one can simply utilize a brute force approach with an extensive heuristics and case history knowledge base with a smidgen of advanced AI thrown in to glue it all together. In fact, Go may be so complex a game that it may be a very long time where computers could allow for such a program to be created. Thus, if an effective computer Go player than can beat the best human Go players is possible, it will probably require a great deal of advanced AI that allows the machine to think like a human.

Below I have an annotated list of websites that I will likely use when developing my computer Go player. I’ve listed various servers that allow computer Go players to play as well as formal competitions for computer Go players. I’ve also added links to websites that provide documentation on standards and engines used by these Go servers.

http://senseis.xmp.net/?GoServers – Various Go servers available on the net that allows you to play online.

http://www.computer-go.info/events/future.html – A listing of various Go tournaments between Go programs that will be held in the future.

http://www.intelligentgo.org/Home.html – IntelligentGo has online servers that allow software to play Go using the GTP protocol.

http://www.grappa.univ-lille3.fr/icga/ – The ICGA has regular tournaments between computer programs that play various games including Go.

http://www.cgl.ucsf.edu/go/ladder.html – A Go server that holds informal competitions between computer Go programs.

http://www.gnu.org/software/gnugo/gnugo.html – GNU Go is a free program that plays games of Go and uses the GTP. I interface with this program in the attached Python file, InterfaceTest.py.

http://www.gnu.org/software/gnugo/gnugo_19.html#SEC196 – Documentation on the GTP protocol.

http://www.gnu.org/software/gnugo/gnugo_17.html#SEC184 – The GNU API incase you want to interface with GNU directly rather than use GTP.