Emergent behavior is often mistaken for intelligence. Emergent behavior can be defined as characteristic behaviors that emerge from a complex system such as a piece of software or machinery. These behaviors often give the impression that there is intelligence behind them, driving them to do the things that we observe. In reality it is merely a complex set of rules that are being obeyed in multiple and continually changing circumstances.
The program 'Emergent Behavior from Evolution', available for download below, demonstrates this quite effectively. The software is a simple simulation of evolution by natural selection. There are two different types of 'life forms' or 'entities' in this program. One is the 'prey', represented by circles doing nothing more than moving randomly around the screen. The other is the 'predator' (preds), represented by single pixels on the screen.
When the program starts multiple prey and a single pred are spawned. This pred has its own unique 'genetic code'. This code is simply arrays of data that represent different properties of a life form (e.g. speed, life expectancy, efficiency, age, etc). The first pred (pred1) has a standard genetic makeup, which allows it to function in the virtual world in which it lives. When Pred1 spawns it has 'urges' to do things like eat or breed. The strength of these 'urges' and its ability to fulfill them are determined by its 'genetic code'. In order for pred1 to breed it must consume enough food to do so. When it has enough it will breed asexually (divide in two), mutating the genes in the process. The mutations are completely random and can yield positive and negative effects on the new life form (pred2). Pred1 remains unchanged except for its age and its level of hunger. Pred2 is exactly the same as pred1 except for the genetic changes and its level of 'hunger'.
The genetic changes are quite subtle and will yield little difference in behavior. Only over multiple generations will the emergent behaviors become apparent and we will see groups of preds moving together and exhibiting behaviors different to that of other groups. None of this behavior is predetermined; it merely emerges from the complexity of the program in operation. When running the program, the life may become extinct quite rapidly, or it may continue to 'evolve' until the program runs out of memory.
The program is written in QBasic therefore you will need a copy of Qbasic to run it. The zip file below contains several versions of the program so you can see how small variations in the code can affect the outcome. The recommended program to try first is 'evolve.bas'. This version will appear as shown below. When starting the programs, press 'enter' to accept default values.
Emergent Behavior from Evolution (EBE) - 8.31 kb
You may need to run this program for several hours (dependent on your processor speed) before any behaviors become apparent, although sometimes it may happen sooner.