Environmental Selection.
For a better example a system that, given the ability, uses evolution is better. The best known system that does this is Tom Ray's Tierra. This program, devised by a practicing biologist, sets up an environment where creatures compete for machine resources. These creatures are strings of instructions with markers that denote how long they are. As time goes by creatures are gathered by what Tom Ray called the reaper. These collected dead creatures, those who could not carry out instructions, and the unfit. Fitness was decided by the ability to carry out instructions. There was also a time limit, so creatures had to be quick at what they did. The program was first run on a Toshiba laptop. It started on the 3 January 1990, and ran over night resulted in enough data to keep Tom Ray busy for a considerable amount of time. As the creatures were made from assembler language they were not a visible as dawkins creatures so it took a long time to find out quite what had happened. By studying this and other runs Tom discovered that the system he had created was using many of the rules nature loves. The creatures, through evolution, had not only evolved into little reproduction machines but had found loopholes in the environment that meant that the creatures could grow in size beyond the limit the program allowed. Creatures would also cheat by acting like parasites and using other creatures' time to do their work. Others formed groups that acted as one, multi-part creature. Tom sometimes found that some creatures could not reproduce and it took some time to find out that this was because they were dependent on other creatures to do this for them.
Evolution had come up with programming tricks only ever used by some expert programmer. The code was self optimized and did things in and immensely small amount of cycles. As Tom was an adequate programmer and no coding expert he had no way of dictating these routines and often it took him a long while to work out what his creatures were doing.
Tierra had become a breeding ground for what has become silicon based life. Many problems were solved through necessity with predators always ready to pounce on those solutions that were not up to speed.
Another system that behaves as an environment for creatures to live is Venus (I-II). Venus grew out of what was called "Corewars", an environment where computer programs created creatures to battle against each other.
Evolutionary Algorithms and Genetic Algorithms
An evolutionary algorithm is the product of a means of solving computer based problems using evolution as the main tool for design and implementation. There are several different types of Evolutionary Algorithm methods. The main ones are genetic algorithms, evolutionary programming and the use of evolution strategy. These methods are linked with aLife in that their main driving forces are akin to natural forces. Evolution and selection are heavily used as is the basic principle of genetics.
Each process is a method of optimization that uses its fitness to the solution as its likelihood or survival. The ideal is an optimum solution is reached by the 'grown' algorithm. They are best used to solve problems that have proven difficult to code. Hand-written specialist code can often be better than an evolved solution although it has been found that Evolutionary Algorithms can often be very rugged pieces of code. These rugged pieces of are less likely to do nasty things providing the creation technique was good.
The different types of algorithms mainly differ in their approach of the subject. Evolutionary Programming and Evolution Strategies are very similar although they were both devised independently. Each of them does not use a simulation of Genetic crossover as in nature but instead mutate the actual creature. Nature does not do this as changing the DNA of a creature that is living can cause all sort of problems; there are to many interdependencies. In a program it is totally safe to do this, after all that is how programs are written and debugged.
Mutations are applied directly to a parent of a creature. Offspring are therefore reproduced asexually with varying mutations. These mutations can be controlled, unlike nature, and be forced to move more rapidly. An optimum solution to the problem is often estimated and the results of the algorithm reaches towards the values of this solution mutation is lessened to allow for greater accuracy. Evolution does something similar as the harsher the environment; the higher the price paid for not being adapted to that environment.
Genetic Algorithms try and mirror nature by using a DNA type structure as the center of their workings. This is the main difference between genetic algorithms and the other members of evolutionary algorithms. The use of a structure that can be used for crossover recombination means that all the aspects of the program must be able to be converted into a string of simple symbols and back again. Evolutionary programming mutates the phenotype in effect instead of this genotype approach. Evolutionary Strategies often involve the manipulation of variables rather than the program directly.
A concept of a fitness landscape is often used. This landscape has peaks and troughs and each algorithm can be represented as a dot on this landscape. The optimum solution is the highest peak on the map. Each creature's driving goal is to get as far up on the landscape as possible. By the used of predators to pick on the weaknesses of those algorithms that are not fully developed it has been shown that solutions can be reached much quicker.
Evolutionary Algorithms main difference from the main body of aLife is that they have a distinctive goal and one reached often cannot be bettered. This is unlike Life where there is no known goal and is a continuing process. For practical purposes solutions are always needed and Evolutionary Algorithms offer the chance to grow solutions when no obvious one can be found. EAs do not always come up with better solutions than hand crafted ones but they are a useful tool and will in the future become and increasingly used programming tool.
Convergent evolution .. or, Hang on, that was my idea!.This sort of stuff happens all the time, its called convergent evolution. Often a good idea is thought of by several different people at the same time. The question is why did one not have the idea years before. The easy answer is if one did it would not be convergent evolution. The other explanation is no one person can make huge intellectual leaps. Even the most intelligent person has to be fed the right information to get the right answer. News spreads well among like minds and it is no surprise that similar information can act as a spark for several minds. The result is the same idea may be devised by many people at the same time, or at least independently without knowledge of the prior decision.
One advantage of this is that an answer conceived independently by many people, not through the teaching on an idea, is far more likely to be correct as each person has had to prove each step of their thinking. Therefore good theories and correct concepts may arrive independently all the time. All that may change is the finer details or the terminology used. This can be seem when comparing disciplines.