**What is this?**
A search for interesting Cellular Automaton using
Genetic Programming enables ordered patterns to evolve from a random population under your direct control.
A *Cellular Automaton* defines a system of individual elements (turtles/ants/cars) following exactly the same rule.
*Genetic Programming* is a population of individual programs of rules which are recombined according their fitness
for a given task, to produce a new population. The fitness in this case is simply how attractive an individual pattern of turtles
is to the user.
**How do I use this?**
The patterns are user rated by clikcing on the image. The more you like a presented pattern
the further down the image you should click. Initially there will be a few random looking
patterns which you may appreciate but on which you should generally click nearer the top. As you progress,
combinations of previously highly rated patterns will *evolve* together to provide interesting patterns
in further generations. You will see shared traits between patterns as this happens.
You also have control over how large each population is.

**Getting Going.**
Firstly, change any values in the form on the right to set up the parameters of a "run". At any time you may restart
with a fresh population of individuals by clicking the browser's refresh button. Two reasons
for doing this might be convergence where all patterns have come to look alike or when there are no
interesting individuals being presented (probably because you need a break!).

**Parameters.**
The parameters which you may set are explained here and on the right. Try experimenting with all these values,
they are listed in the order of their effect on patterns. Each turtle making up the pattern is
organized into a hierarchy. The initial oligarchic set **Size Of Oligarchy** is the set of turtles at
the top of this hierarchy. Their positions affect the positions of all their children and hence of all the turtles. The number of
children each member of this set has and that each turtle has is fixed by the parameter **Turtle Children**.
The **Animation Steps** parameter is used to specify how many steps of animation there is in each cycle.
If you want the chance of a quickly repeating set of patterns then use a small value. This value gets used
with the trigonometric functions and I usually set it to 360 so you get wave forms. The larger the polulation
of patterns **Population Size** the greater chance of finding a great pattern but the more
ratings you have to make.

A guide to rating patterns includes the following considerations :-

__Originality.__
If a pattern presented seems unique then rate it highly. This ensures novelty in the population.
If a pattern has already appeared then rate it less than you normally might to avoid convergence.

__Natural.__
How much does this pattern mesmerize you? How closely does it remind you of something natural?

__Priority.__
First rate interesting coordination between turtles, then movements followed by colour.

__Random.__
Rating some patterns at random helps to give a population an interesting flavour.

__Patience.__
It will take a minimum of two or three generations to get to an interesting population.

__One Window.__
For the self organized complexity also please only keep one window open at a time!