September 9, 2008

Under the Hood

A lot of the critically important code in a project is often the most boring.  It is the infrastructure that keeps the cogs greased and engine purring.  Unfortunately for me, that is the body of work I’ve been working on.

A great deal of code has been added to round out the project.  It is finally starting to take shape, the end is in sight.  Perhaps a small dot on the horizon but in sight nonetheless.  Before the summer started, the project consisted of code to manage and run a brain.  It was essentially a brain in a jar with nothing attached.  Of the code I’ve written so far, this was the most fun to work on.  I was able to flesh out my theories on the mind, distilling various representations of biological neurons into simpler digital analogues.

But no brain can survive in isolation, a body is needed.  I’ve been hammering out code to add a “body” of sorts to the brain code.  And unfortunately this code is rather boring, a matter of processing inputs and outputs, directing data to various parts of the brain, etc.

Bodies, like brains, need a place to reside.  After a long, drawn out decision process I have finally picked the environment for the first tests to take place.  Instead of a traditional simulated environment seen in Artificial Life simulations (ie. a simpler version of the real world), I have chosen a boardgame.  I’ll discuss the particular boardgame and my reasons for picking it at a later date, but for now suffice to say it will be a good proving ground for my theories.  The “body” of the brain has inputs to process the gameboard and outputs to manipulate the pieces of the gameboard.  There are also inputs to watch stats like score and whose turn it is.

It should be noted that while code has been implemented to allow the machine to play the game, no rules about the game have been included.  There are no mechanisms to prevent the brain from making an illegal (or illogical) move.  If an illegal move is made, the server responds with a nasty “shame on you” message and the machine must try again.

The next step is to begin working on the genetic evolution algorithms.  Then add a mountain of plasticity-related features to the neurons.  Then implement more variables in the genetic code rather than hardcoded values.  Then the code to support distributed computation.  Then profit?  Hah.

Onwards.

Leave a Reply