........ Ventrella.com

Breeding Gliders
in Cellular Automata

Breed a population of CA's to be Closer to Langton's
"Edge of Chaos", and Gliders will naturally emerge.

DOWNLOAD (Windows only :(

Check it out. This program animates many different kinds of cellular automata (CA) rules, and let's you breed a population of them to become increasingly complex Life universes, analogous to Conway's Game of Life. You can breed them such that coherent space-time structures (gliders) emerge. This breeder uses an experimental interface, in which evolutionary dynamics goes on in the background and you simply judge various CA's. As you judge them, the population evolves according to a Darwinian fitness ranking that you affect by your judgements.

The idea for this was inspired by Kirk Israel, through one of our conversations, while I was teaching a class at Tufts University in 1995.
For some background on Cellular Automata, check out the research of Chris Langton (Alife II proceedings, 1992). I seem to recall Karl Sims wrote something on evolving CA's (a SIGGRAPH paper, I'll look it up for next update of this page). Also see a BEAUTIFUL treatment of many classic CA's in... John Walker/Rudy Rucker's CA's. Also, a site with info on CA's, edited by Howard Gutowitz, from Artificial Life Online , has a lot of info as well. A good book to get is "Cellular Automata Machines", by Toffoli and Margolus, 1987, MIT Press). Also look at Jean-Claude Heudin's overview of CA's in Virtual Worlds . Also, Poundstone's "The Recursive Universe" is a good book, for a nice intro on Conway's Life. These are of course just a few examples of references.

This is free software
It is for educational and research purposes only
There are no viruses here
It downloads very fast
It runs on Windows or NT

(This program will not evolve the likeness of Elvis)


Here's How it Works

Simply watch the CA as it animates and judge it as either bad, medium, or good. After you judge it, another CA will animate. Judge that one. Repeat this process many times until you are happy with the results. When you hit upon a CA with gliders you really like, save it as a file (the interface is simple at this point, and will be enhanced later).

Many of the CA's you see will die quickly, and others will "freeze up", after about 10 steps. These will automatically be judged as bad, and thrown out. Some will be very chaotic. After a period allowing it to settle, CA's that are still too chaotic will be judged bad and thrown out as well. The "status" of the CA will be displayed as either DEAD, FROZEN, CHAOTIC, or OK. If the CA comes out OK, and if you like it, give it a good or medium judgement. It will take several minutes , but gradually, more interesting ones will appear, and bad ones will occur less frequently. Make sure you judge some of them as good. Remember: your judgements provide the Darwinian fitness values that help guide the direction of evolution. The process continues indefinately.

The implementation I have made works as follows: CA's are finite-state automata occuring at the sites of a 2D lattice. The lattice wraps around to avoid boundary issues. Each cell (a square at a lattice site) can have one of many states (up to 8). As the clock ticks, each cell changes its state, depending on its current state and the various states of its eight neighbors. This CA uses the counting scheme: each cell counts the number of neighbors of each of the states. Based on these numbers, it uses a transition rule to take on a new state. Similar to Conway's Game of Life, this CA considers it's own state in addition to the counts of neighbor states. In fact, in the large genetic space of possible CA's evolvable here, Conway's Life exists! But don't count on stumbling upon it any time soon!

There are a number of possible transition rules for determining the dynamics of a CA. Here, there are 50 rules. They are a population of rules, simply called "CA's" for convenience. At the start, the population of CA's is randomized. Most of these, at the start, will be either too chaotic, too orderly, or just plain uninteresting. But some will have potential.

At the start, each CA is given an average fitness value (a value of 0.5, in the range of 0.0-1.0). When you judge a CA as bad, medium, or good, you are assigning a fitness of 0.0, 0.5, or 1.0 to the CA. Also, at every breeding cycle, all the fitness values decay by a tiny amount, such as: (fitness * 0.99). In doing so, the fitness of older CA's are able to slowly fade into the past as new CA's are introduced into the population.

After a while, the fitness profile will vary quite a bit with values ranging from 0.0 to 1.0, and many values inbetween (not just 0.5, because of the decaying of previous medium and good judgements). The purpose of this is psychological: you, the breeder, are likely to favor your more recent CA's than the ones of the remote past, and so you would rather not have some old CA that was once the best (but is now not the best) to stay as a strong influence. read on for more info on mating, and this should become more clear.
CA's can mate with each other to make offspring CA's which inherit the genes of the parent CA's. A CA's genes are what determine the transition rules for each of its cells. For a given CA, the exact same rule is used on each cell, thus, genetic variety does not occur among cells of one CA, but rather among different CA's. The genes determine things like which states a cell will be in when it checks its neighbor count, which states it counts, and how many neigbors of a specific state it takes for the cell to change its own state. Other genes determine the new state the cell takes on.

As you can imagine, there are many possible permutations of transition rules possible with only a handful of genes. I have merely scratched the surface. Other folks have devised much larger genetic search spaces than this one. This is something I will be exploring, so as to make many more CA's possible. I am, however, just as interested in making this a real-time appplication, which is fun and educational, so I am considering ways to keep the CA running fast on average computers, and on having relatively fast evolutionary convergence.

While you are judging CA's, some of them are having sex in the background, behind the scenes. (no need for you to see this - it is not interesting or arousing at all). Two CA's mate per breeding cycle. Every time you make a judgement, two random CA's mate and have one offspring. In fact each CA you judge is the offspring of two parent CA's who have just mated.

The CA's that mate are statistically more fit than the rest, meaning, they have been given good fitness values by you, at some point. Also, for every breeding cycle, one CA is killed off to make room for the new offspring. The one that is killed off is the one with the lowest fitness value. Since the more fit CA's are doing the mating, their offspring have a better chance of looking interesting to you.
On either side of Langton's "Edge of Chaos", where the truly stylin' CA's hang out, is order, on one side, and chaos, on the other. Some CA's you will notice are very chaotic and random-looking, while others will settle into simple periodicity, or simply die. My intuition is that the CA's that are most attractive to us are the one's that naturally lie on the cusp, the transition between order and chaos. One thing's for sure, this is where the most interesting gliders are.

Jeffrey Ventrella