|
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
|