;
This web site and all of its contents Copyright © 2002 Peer Science LLC. All rights reserved

Evolutionary Programming and Genetic Algorithms

The process of biological evolution has produced an incredible variety of life forms on earth. Each of these life forms represents a unique solution to an array of problems to achieve survival in a complex environment. Evolutionary Programming comprises a set of directed random search algorithms seeking to exploit the powerful processes of biological evolution.

Each living organism can be considered to be a unique solution to the problem of survival in its particular environment. This solution is encoded in the DNA of each organism’s chromosomes. In biological evolution, these chromosomes are combined with others by sexual reproduction, randomly mutated occasionally, and constantly evaluated by natural laws governing survival of the fittest.

Evolutionary programming techniques likewise represent the search points (individuals) in a solution space by vectors encoding those solutions. For example, a binary vector could represent the positions of a large number of switches. A fitness function (provided by the designer) is combined with selection procedures to direct the search to areas of higher fitness ("better" switch combinations). This is usually accomplished by allowing individuals with high relative fitness a higher probability of reproduction. Reproduction can incorporate recombination (crossover) to allow exchange of information between individuals, and a low-probability mutation operator provides innovation.

An example of an evolutionary programming technique is the Genetic Algorithm, described by the following block diagram.

Block diagram of a genetic algorithm

The process starts with an initial set, or population, of encoded solutions (chromosomes) which may be generated randomly or by using some a priori knowledge. Members of this population are recombined using a crossover operator to produce a new population, then the chromosomes are altered by mutation. The resulting new population of chromosomes is evaluated by the fitness function to attach a fitness value to each chromosome. Using a kind of weighted roulette wheel, chromosomes with higher fitness are randomly selected for reproduction more often than lesser fit chromosomes in the next round of reproduction, and less fit chromosomes are discarded. The process iterates, producing chromosomes of higher and higher fitness until a satisfactory solution is found.

Evolutionary programming techniques have been finding solutions that have long been considered intractable. They are being applied to such diverse areas as aircraft design, business process optimization, and communication network design. As the ideas of genetics and evolution are further explored, and the cost of computing power continues to drop, these techniques are becoming increasingly more powerful and robust.

Of course, the simple genetic algorithm described above is not the only evolutionary programming technique available. Peer Science professionals have been designing real-world applications of evolutionary programming for over a decade. In the process, they have advanced the state-of-the-art and assembled their most useful tools and their best enhancements into their evolutionary programming toolkit. This toolkit, eXtreme Evolver, enables the rapid development of robust evolutionary programming applications.

Neural Networks

Fuzzy Logic and Fuzzy Expert Systems

Case Based Reasoning