My Photo

Artist Credits

Blog powered by TypePad

« February 2007 | Main | April 2007 »

March 2007

March 17, 2007

The Evolutionary Container

The Evolutionary Container (EC) is a Java based application environment designed to support the evolution and development of virtual organisms in order to develop highly optimized artificial intelligence.    The container provides access to a probability inference engine that enables decision making.

I'm presently working on developing a generic structure for the construction of test case patterns.  The problem lies in giving virtual organisms the ability to query their environment, and create their own test structures. 

I began writting a test program for the probability inference engine.  My goal is to evolve a BlackJack player within the EC.  The simulation involves creating a BJ table, a number of players, a dealer, and a deck of cards.  One player is designed to gain intelligence using the inference engine.

I'll have an object/class model to share soon.

Started reading a couple cool books this weekend.  The Emotion Machine by Marvin Minsky is a book about the brain, and artificial intelligence. 

Also got Matt Ridley's An Agile Gene.  I've read a bunch of Matt's books, and I find him to one of the best science writters.

Back to work on the EC.  Next post I'll show some of the BlackJack object structures.

March 12, 2007

Evolution as a Process II

What is evolution if not a reiterative cycle of balance shifts between organisms, their environment, and the influence of that environment?

A reiterative cycle of balance shifts.

To evolve is to repeatedly test against your environment, measure the results of those tests, and adapt to the environment based on those results.  Then you die. 

If some of your tests proved successful, you may have been lucky enough to reproduce yourself, maybe even several different copies.  Each new replica now begins a new cycle.

Here is the big picture of the Evolutionary Process the way I see it.

Process

March 03, 2007

Evolution as a process

Evolution as a process provides a means test multiple paths towards optimization.  It also provides a means to inherit intelligence gained over generations.  Lets break down the process a little and determine the basics.

For simulated evolution to occur, a few things are needed.  First, understand that I am a software developer by trade, so I tend to communicate things from that perspective.  I see "things" as objects.  Not physical objects, but virtual ones, the Grady Booch kind of objects.

For basic evolution we need at least one organism, and an environment for that organism to live.  The organism could also be thought of as a cell, with the ability to replicate itself if allowed.  The environment is needed to sustain the organism and grow along with it.  What is that you say?  The environment will grow along with the organism?  Yes, that is exactly what I mean.

Why do giraffes have long necks?  Again, not to turn this into a theology debate, but I theorize that giraffes have long necks because their primary food source grew taller through multiple generations.  Maybe too many animals were eating its leaves, so it had to grow taller to survive.  Giraffes that grew taller necks would get more food, and thus increase their potential for survival.  Over time, the

Our simulations need to work the same way.  The environments our organisms live in will need to adapt along with the organisms we create.  Therefore, simulated evolution can be thought of as having polar interests.  The environment vs the organism.  If they are in synch, life will flourish, and new generations will survive.  If they are out of synch, life will struggle, and new generations will need to adapt.  It is this equilibrium that is of particular interest to us as observers.

Our organism and our environment need to interact.  So we will need to apply some behaviors to our organism so that it can move on with its life.  For the sake of the discussion, lets say our basic organism is simply a math routine that is designed to find points on a Cartesian graph that form rectangular shapes.

Our organism is given some basic intelligence to understand that a rectangle needs 4 points, each of which must be at 90 degrees to two of the other points, and the lengths of opposing sides need to be equal.  Every time the organism thinks it has 4 points to create a rectangle, it can ask the environment to check.  If the organism is correct, it gets a point.  If it is incorrect, it loses a point.

We can also give our organism capabilities to observe its previous answers, and seek patterns.  We can walk through an example of this and observe the behavior.

1st 4 points (x-coor, y-coor) - (0, 0); (0, 1); (0, 2), (0, 3)   

Points one and two right angles to points three and four - nope
Points two and three right angles to points one and four - nope
No combination of points can produce a right angle
2 x 90 degree points, first test unsuccessful
Distance from point 1 to point 2 = 1
Distance from point 1 to point 3 = 2
Distance from point 1 to point 4 = 3
This fails the second test.  Parallel lengths must be of equal distance.

Minus 1 point.

2nd 4 points (x-coor, y-coor) - (1, 0); (1, 1); (1, 2), (1, 3)

3rd 4 points (x-coor, y-coor) - (2, 4); (4, 2); (8, 4), (4, 8)  and so on...

We will need to teach the organism how to load its values, and how to cycle through those values.

We can teach our organism to build on partial success, and recognize routes to success.  In this test, we will quickly learn that the axes are at right angles to each other.  Therefore, any two points that share the same x coordinate will be parallel.

More soon...