Tuesday, July 13, 2010

Not dead yet

Neither I, nor my project, are dead ! A lot has happened since I last posted here, personnaly and concerning this project. For my part, I have been accopied by a broken clavicle, a new job, a divorce, I have moved to another city, and a new girldfriend. But that's merely relevant to our subject, so what's up with goia ?

Goia v2: the flaws

There were a few important flaws with my program as I left it, essentially due to my way of dealing with this project :
- The connection between my neural networks and the go engine (taken from gnugo) was badly written, and led to a difficult compile task, and even more difficult go game debugging.
- There were still crashes now and then, and I finally figured out why (iterators becoming invalid in loops due to memory reallocation) but fixing them would have been an horrible task, due to :
- The mess that my program was consisted of.
- With all that, the players that were evolving kept getting more complicated, and the tournaments were longer and longer, with obvious reason.

So, considering all this, I decided to redesign the whole project. I want to emphasize that this project was also the occasion for me to learn c++, and programming in general (I have also started to do real programming designs in my job).

Goia v3

This led to this third version of the project, with major changes :

- The source code can actually be read by another programmer.
- The go engine is fuego, programmed in c++ so it is smoothly integrated with my neural network structures.
- The new neural network structure is somewhat simpler, and far more robust.
- The program is multi-threaded.
- The way the neural network plays go has significantly changed : now, there are 81 inputs describing the board state (+1: own stone ; -1: opponent stone ; 0: empty opint), and only one output. The neural networks task is to score the board : it plays every relevant move (not in occupied territory, or in own eye) and assesses the subsequent board ; it then choses the best scoring move. This was suggested to me a couple of time, and it is indeed a better way of playing than statically chosing a move given a board state : the old way led to static patterns, which is far more prone to local minima.

So here I am, with this new program; you can already test it, it has been compiled for linux and windows. I will give news soon, now I have some real work to do.


Linux binaries.
Windows binaries.

No comments:

Post a Comment