Showing posts with label Presentation of the project. Show all posts
Showing posts with label Presentation of the project. Show all posts

Saturday, February 21, 2009

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.

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.