Evolutionary programs create individual programs that compete for survival. Those that do well reproduce, usually with another individual that did well. The child gets a random mix of traits from the parents and may do better or worse than the parents. Some of these programs are written for specific problem solving ability, others for general skills. Often a mutation will be thrown in that will effect a very small percentage of the population.
The simplest of these is Conway’s Life. A grid of squares is laid out and life multiplies or dies off depending on the number of occupied neighboring cells. The newer, more complex versions have genetic code that children inherit as subroutines from both parents, a bit of randomness mixed in and they compete in a survival of the fittest environment. The hope is that after many generations we will have intelligence. By modern standards Life is more of a flocking algorithm rather than an evolution of a population.
Artificial societies are also being used to study and predict what real world societies will do. Using a simple version of life you can change the rules and mimic real world situations. This method is also being used by archaeologists to determine what caused the rises and falls of civilizations gone by. In 1971 an economist, Thomas C. Schelling, used such a method to show how neighborhoods segregate and that racism was not the cause of segregation. Usually a few very simple rules are all that are needed to have real life simulations develop.
Game of Life by Conway in Java. A grid of squares randomly is marked with on or off. If a square has less than 2 neighbors it dies of loneliness, if it has 2 neighbors it stays the same, if it has 3 neighbors a birth occurs, if it has more than 3 neighbors it dies of over crowding.
Conway’s Life for iPhones
Sexual Swimmers Emergent Morphology and Locomotion Without a Fitness Function
Aspects of Evolutionary Design by Computers
A particle swarm selects for evolution of gliders in non-uniform 2d cellular automata