Saturday, February 28, 2009

Version 1.11.1 for Linux

Here is the last version for linux. For some reason, it crashes at the end of the first and/or second tournament, I couldn't reproduce the crash in debug mode. It works fine after that though...

Thursday, February 26, 2009

Version 1.11 for windows

------------------------------------------------
v1.11.1
Changed : notation mode, was 3pts per victory. Now, takes into account the score difference at the end of the game. reverted back in 1.11.1
Changed : mutation probability skewed in favor of diminishing the size of the player (on average).
Bug fix : added some exception handling in the mutation process to prevent the program from crashing.
Bug fix : don't crash anymore on the first launch.
Changed : added komi rule of 6.5.

Saturday, February 21, 2009

New version available

A new version is available, and can be downloaded here :


Changelog :

------------------------------------------------
v 1.9
changed : metamutation coefficient set at 0.002 (was: 0.05).
changed : duplication/deletion probability of any gene set at 1/2000 (was: 1/32000)
changed : Tournament result display changed, only display the winner ID with it's history and it's species.
changed : transfer method with the ftp server, only one player travel to and from the server for each tournament.

------------------------------------------------
v 1.10
bug fix : Player's memory (=input values for each neuron) is emptied before each game. Used to be emptied only when the player was loaded from the disk.
changed : players are randomly created when not present on disk.
changed : players are replaced by a random new player when error occur while loading the file. Prevents the program from crashing when downloading corrupted files.

Details about the way it works

Here are some detailled information about the realisation of this project. The program has been developped using Visual C++ Express, and I can share source code with anyone interested.

Description of a player. 

Every player consists of :
  • A 19x19 array of vector of input neural adresses, telling where each value of each case on the board goes. Every case goes to at least one neural input.
  • A 19x19 array of output neural adress, telling from where information should be retrived do decide the move of the player.
  • A Neural network processing the input information and providing a value for each case of the goban. The higher value decides the chosen move.

Description of the neural network.

The neural network consists in a map of genes ; each gene is a map of neurones. Each neurone is conceived as a classical artificial neuron and is defined by :
  • It's type : linear, sigmoid, fully linear or piecwise linear.
  • Two parameters defining its transfer function : threshold and global weight.
  • A vector of output adresses telling where the inputs are connected. 
  • An associated vector of weights defining the weight of each input.
  • A vector of input adresses telling where the output of the neuron goes.
  • A mutation probability for every one of these values, ranging from 1/10 to 1/32000.
  • A species tag.
  • An historical log telling where the player's ascendants have been.
The Tournament

The tournament is organized as follow : each player 0-49 plays against a randomly chosen player 50-99, playing black twice and white twice. A win earns 3 points, a tie earns 1 point and a loss 0 points. By the end of the tournaments, players are sorted , players with as many points are sorted according to their file size.

The 50 highest ranked survive, and the other are killed.

Reproduction

Players who are in the top half of the population get the right to reproduce. Every one of them follow this procedure .
  • First, they try to mate with another winner : they search the population for another member with the same species tag. If found, the achive sexual reproduction twice. Sexual reproduction consists in swapping random genes from the two reproductors. Generally, the results is a non valid neural networks. When its the case, the reproducing player is chosen a new species tag and proceeds as if it had not found a suitable partner. 
  • If sexual reproduction failed, a simple cloning is achieved.
Mutation

After reproduction is achieved, every player suffers a random mutation :
  • Every neural properties can randomly mutate.
  • Every adresses can mutate.
  • Genes can split, merge, grow, shrink, duplicate or disappear.
  • Every mutation probability can mutate, according to a driving metamutation probability factor arbitrarilly set at 0.002 for the moment.
Journey

By the end of every tournament, some genetic mixing is assured with the other ecosystems through the transfer of players via a web hosted ftp server.

  • The hishest ranked in the tournament is sent to the ftp server, and assigned a new number ther from 0 to 29. 
  • One of the 30 players available on the ftp server is randomly chosen and replaces one of the 100 players in the local ecosystem.

Friday, February 13, 2009

GOIA : How to participate

This message is meant to explain how anyone can try to help me evolve an artificial go player. I will explain in details later how the program works, and how the players are defined. All you need to know to participate is the following :
- The program consists in a never-ending tournament, featuring 100 players.
- Each player is represented on the computer with a file named "joueur0.gop" to "joueur99.gop" (joueur is french for player).
- At the end of each tournament, the 50 losers are erased, and the 50 winners reproduce and mutate, making a whole new ecosystem. Then, migration occurs in which 2 players are automatically sent on a ftp server, and 2 players are retrieved from it. Thus, positive innovation can propagate thoughough every ecosystem .

It takes about 10 minutes to complete a generation with 100 players on a reasonnable modern computer. No parallelization is implemented yet, so if you wish to use avery core you have available, you have to run as many instances of the program .

To download the program, go there and dowload either archive :

Then, learn french if needed, and enjoy !

Thursday, February 12, 2009

GOIA : What for ?

Welcome on my blog. Before I enter the real subject, let me introduce myself and the reasons I created this blog.

My name is Ernest Galbrun. I was once a physicist, I graduated as a doctor es fluid mecanics a few months ago. Science is my passion, but I officially turned my back on scientific research, and I am now project leader in optic engineering, doing mostly computer programs and elctronic devices.

The present project has stemed from various readings, especially from the Dawkins-Dennett team, among other great contemporary and past thinkers. I, like many others before, have been wondering for long how we could use the principle of evolution through natural selection to create something bigger than ourselves. There have been many succesful attempts in the past to use this principle in order to show that interesting properties can emerge from a simple set of rules carefully chosen. So far, though, only minor practical goals have been achieved with this methods, goals that can rather easily be achieved with clever design.

My intent is not to prove that natural selection is a powerful tool. That has been done already. I want to use that tool and beat every Intelligent Designer who tried before on a task where they are clearly better than I am. So I have chosen to try evolvin AI playing one of the most difficult game for computers to play, which is go game. I think go is the battlefield of choice for such an experiment, because of its combined properties of being utterly simple to play and very difficult to play well. At least for us poor human beings.

I will use this blog to describe the evolution of my artificial go players, and to explain the work I have done. Every one is invited to participate if they wish to share some of their computer power evolving a small population, and of course if they would like to help me improve my program.