**1. Introduction**

22 S/D Binary Encoding and Its Operators

104 Bio-Inspired Computational Algorithms and Their Applications

Schaffer, J. D., Caruana, R. A., Eshelman, L. J. & Das, R. (1989b). A study of control parameters

Sendhoff, B., Kreutz, M. & von Seelen, W. (1997). A condition for the genotype-phenotype

Whitley, D. (2000). Local search and high precision gray codes: Convergence results

Algorithms 6. San Francisco, California: Morgan Kaufmann Publishers, Inc. Wong, Y. Y., Lee, K. H., Leung, K. S. & C.W. Ho, C. W. (2003). A novel approach in parameter

Wong, Z. Y., Leung, K. S., Wong, M. L. & Fang, J. (2000). A new type of nonlinear integrals and the computational algorithm. Fuzzy Sets and System, 112, pp. 223-231. Xu, K. B., Wang, Z. Y., Heng, P. A. & Leung, K. S. (2003a). Classification by Nonlinear Integral Projections. IEEE Transactions on Fuzzy Systems, 11(2), pp. 187 - 201. Xu, Z. B., Leung, K. S., Liang, Y. & Leung, Y. (2003b). Efficiency speed-up strategies for

Zhu, Z. Y. & Leung, K. S. (2002a). An enhanced annealing genetic algorithm for multi-objective

Zhu, Z. Y. & Leung, K. S. (2002b). Asynchronous self-adjustable island genetic algorithm

Liang, Y. & Leung, K. S. (2011). Genetic Algorithm with Adaptive Elitist-population

Kaufmann Publishers

Universiteit Leuven.

pp. 506-515.

pp. 1160-1171.

Mateo, CA: Morgan Kaufmann.

Computation 142, pp. 341-388.

Conference 2002, New York, USA.

Computation 2002, Hawaii, USA.

Third International Conference on Genetic Algorithms. San Francisco, CA: Morgan

affecting online performance of genetic algorithms for function optimization. Proceedings of the Third International Conference on Genetic Algorithms. San

mapping: Causality. In Back, T. (ed.), Proceedings of the Seventh International Conference on Genetic Algorithms, pp. 73-80, San Francisco: Morgan Kaufmann. Thierens, D. (1995). Analysis and design of genetic algorithms. Leuven, Belgium: Katholieke

and neighborhoods. In Martin, W., & Spears, W. (Eds.), Foundations of Genetic

adaptation and diversity maintenance for genetic algorithm. Soft Computing, 7(8),

evolutionary computation: fundamentals and fast-GAs. Applied Mathematics and

optimization problems, Proceeding of Genetic and Evolutionary Computation

for multi-objective optimization problems, Proceeding of Congress on Evolutionary

Strategies for Multimodal Function Optimization. Applied Soft Computing, 11(2),

The genetic algorithm (GA) is an optimization and search technique based on the principles of genetics and natural selection. A GA allows a population composed of many individuals to evolve under specified selection rules to a state that maximizes the "fitness" (i.e., minimizes the cost function). The fundamental principle of natural selection as the main evolutionary principle has been formulated by Charles Darwin, without any knowledge about genetic mechanism. After many years of research, he assumed that parents qualities mix together in the offspring organism. Favorable variations are preserved, while the unfavorable are rejected. There are more individuals born than can survive, so there is a continuous struggle for life. Individuals with an advantage have a greater chance for survive i.e., the "survival of the fittest". This theory arose serious objections to its time, even after the discovering of the Mendel's laws, and only in 1920s "was it proved that Mendel's genetics and Darwin's theory of natural selection are in no way conflicting and that their happy marriage yields modern evolutionary theory" (Michalewicz, 1996).

The dynamical principles underlying Darwin's concept of evolution have been used to provide the basis for a new class of algorithms that are able to solve some difficult problems in computation. These "computational equivalents of natural selection, called evolutionary algorithms, act by successively improving a set or generation of candidate solutions to a given problem, using as a criterion how fit or adept they are at solving the problem." (Forbes, 2005). Evolutionary algorithms (EAs) are highly parallel, which makes solving these difficult problems more tractable, although usually the computation effort is huge.

In this chapter we focus on some applications of the GAs in Digital Electronic Design, using the concept of extrinsic Evolvable Hardware (EHW). But first of all, we present the genesis of the main research directions in Evolutionary Computation, the structure of a Simple Genetic Algorithm (SGA), and a classification of GAs, taking into account the state of the art in this field of research.

### **2. A brief history of evolutionary computation**

In the 1950s and the 1960s several computer scientists independently studied evolutionary systems with the idea that evolution could be used as an optimization tool for engineering

Genetic Algorithms: An Overview with Applications in Evolvable Hardware 107

Papers in the field of GAs

Fig. 1. Increasing the number of works in the field over the past 20 years

SpringerLink IEEExplorer Digital Library

contain 32632 papers on GAs, from a total amount of 2926204.

**3. A simple Genetic Algorithm** 

2000

4000

6000

Number of papers

8000

10000

12000

14000

the problems" (Sivanandam & Deepa, 2008).

abstract representation.

Figure 1 represents the number of papers in the field of GAs, in the last 20 years, in two of the most popular databases: SpringerLink from Springer, which contain 81187 papers on GAs, from a total amount of 5276591, and IEEExplore Digital Library from IEEE, which

<sup>1990</sup> <sup>1992</sup> <sup>1994</sup> <sup>1996</sup> <sup>1998</sup> <sup>2000</sup> <sup>2002</sup> <sup>2004</sup> <sup>2006</sup> <sup>2008</sup> <sup>2010</sup> <sup>0</sup>

Year

The set of all the solutions of an optimization problem constitutes the search space. The problem consists in finding out the solution that fits the best, from all the possible solutions. When the search space becomes huge, we need a specific technique to find the optimal solution. GAs provides one of these methods. Practically they all work in a similar way, adapting the simple genetics to algorithmic mechanisms. GA handles a population of possible solutions. Each solution is represented through a chromosome, which is just an

Coding all the possible solutions into a chromosome is the first part, but certainly not the most straightforward one of a GA. A set of reproduction operators has to be determined, too. Reproduction operators are applied directly on the chromosomes, and are used to perform selection of the parents, by using a fitness function (usually the most fitted, with some likelihood), recombinations (crossover) and mutations and over solutions of the problem. "Appropriate representation and reproduction operators are really something determinant, as the behavior of the GA is extremely dependant on it. Frequently, it can be extremely difficult to find a representation, which respects the structure of the search space and reproduction operators, which are coherent and relevant according to the properties of

problems. The idea in all these systems was to evolve a population of candidate solutions to a given problem, using operators inspired by natural genetic variation and natural selection.

In the 1960s, two german scientists, Ingo Rechenberg and Hans-Paul Schwefel introduced "evolution strategies", a method they used to optimize real−valued parameters for the shape of airplane wings. The field of evolution strategies "has remained an active area of research, mostly developing independently from the field of genetic algorithms (although recently the two communities have begun to interact)" (Mitchell, 1997). Around the same time, completely independently, american scientist Lawrence Fogel developed a method of computational problem solving he termed "evolutionary programming", a technique in which candidate solutions to given tasks were represented as finite−state machines, which were evolved by randomly mutating their state−transition diagrams and selecting the fittest (Forbes, 2005).

Genetic algorithms (GAs) "were invented by John Holland in the 1960s and were developed by Holland and his students and colleagues at the University of Michigan in the 1960s and the 1970s. In contrast with evolution strategies and evolutionary programming, Holland's original goal was not to design algorithms to solve specific problems, but rather to formally study the phenomenon of adaptation as it occurs in nature and to develop ways in which the mechanisms of natural adaptation might be imported into computer systems. Holland's 1975 book *Adaptation in Natural and Artificial Systems* presented the genetic algorithm as an abstraction of biological evolution and gave a theoretical framework for adaptation under the GA. Holland's GA is a method for moving from one population of "chromosomes" (e.g., strings of ones and zeros, or "bits") to a new population by using a kind of "natural selection" together with the genetics−inspired operators of crossover, mutation, and inversion. (…) Holland's introduction of a population−based algorithm with crossover, inversion, and mutation was a major innovation" (Mitchell, 1997). Rechenberg's evolution strategies generate a single offspring, which is a mutated version of the parent.

"Holland was the first to attempt to put computational evolution on a firm theoretical footing. Until recently this theoretical foundation, based on the notion of "schemas," was the basis of almost all subsequent theoretical work on genetic algorithms. In the last several years there has been widespread interaction among researchers studying various evolutionary computation methods, and the boundaries between GAs, evolution strategies, evolutionary programming, and other evolutionary approaches have broken down to some extent. Today, researchers often use the term "genetic algorithm" to describe something very far from Holland's original conception" (Mitchell, 1997).

Current techniques are more sophisticated and combine the basic algorithms with other heuristics. Koza developed in 1992 "genetic programming", which applies a GA to writing computer programs. "The variables are various programming constructs, and the output is a measure of how well the program achieves its objectives. The GA operations of mutation, reproduction (crossover) and cost calculation require only minor modifications. GP is a more complicated procedure because it must work with the variable length structure of the program or function. A GP is a computer program that writes other computer programs" (Haupt & Haupt, 2004). "Genetic Programming uses evolution-inspired techniques to produce not just the fittest *solution* to a problem, but an *entire optimized computer program*." (Forbes, 2005).

106 Bio-Inspired Computational Algorithms and Their Applications

problems. The idea in all these systems was to evolve a population of candidate solutions to a given problem, using operators inspired by natural genetic variation and natural selection. In the 1960s, two german scientists, Ingo Rechenberg and Hans-Paul Schwefel introduced "evolution strategies", a method they used to optimize real−valued parameters for the shape of airplane wings. The field of evolution strategies "has remained an active area of research, mostly developing independently from the field of genetic algorithms (although recently the two communities have begun to interact)" (Mitchell, 1997). Around the same time, completely independently, american scientist Lawrence Fogel developed a method of computational problem solving he termed "evolutionary programming", a technique in which candidate solutions to given tasks were represented as finite−state machines, which were evolved by randomly mutating their state−transition diagrams and selecting the fittest

Genetic algorithms (GAs) "were invented by John Holland in the 1960s and were developed by Holland and his students and colleagues at the University of Michigan in the 1960s and the 1970s. In contrast with evolution strategies and evolutionary programming, Holland's original goal was not to design algorithms to solve specific problems, but rather to formally study the phenomenon of adaptation as it occurs in nature and to develop ways in which the mechanisms of natural adaptation might be imported into computer systems. Holland's 1975 book *Adaptation in Natural and Artificial Systems* presented the genetic algorithm as an abstraction of biological evolution and gave a theoretical framework for adaptation under the GA. Holland's GA is a method for moving from one population of "chromosomes" (e.g., strings of ones and zeros, or "bits") to a new population by using a kind of "natural selection" together with the genetics−inspired operators of crossover, mutation, and inversion. (…) Holland's introduction of a population−based algorithm with crossover, inversion, and mutation was a major innovation" (Mitchell, 1997). Rechenberg's evolution

strategies generate a single offspring, which is a mutated version of the parent.

far from Holland's original conception" (Mitchell, 1997).

"Holland was the first to attempt to put computational evolution on a firm theoretical footing. Until recently this theoretical foundation, based on the notion of "schemas," was the basis of almost all subsequent theoretical work on genetic algorithms. In the last several years there has been widespread interaction among researchers studying various evolutionary computation methods, and the boundaries between GAs, evolution strategies, evolutionary programming, and other evolutionary approaches have broken down to some extent. Today, researchers often use the term "genetic algorithm" to describe something very

Current techniques are more sophisticated and combine the basic algorithms with other heuristics. Koza developed in 1992 "genetic programming", which applies a GA to writing computer programs. "The variables are various programming constructs, and the output is a measure of how well the program achieves its objectives. The GA operations of mutation, reproduction (crossover) and cost calculation require only minor modifications. GP is a more complicated procedure because it must work with the variable length structure of the program or function. A GP is a computer program that writes other computer programs" (Haupt & Haupt, 2004). "Genetic Programming uses evolution-inspired techniques to produce not just the fittest *solution* to a problem, but an *entire optimized computer program*."

(Forbes, 2005).

(Forbes, 2005).

Fig. 1. Increasing the number of works in the field over the past 20 years

Figure 1 represents the number of papers in the field of GAs, in the last 20 years, in two of the most popular databases: SpringerLink from Springer, which contain 81187 papers on GAs, from a total amount of 5276591, and IEEExplore Digital Library from IEEE, which contain 32632 papers on GAs, from a total amount of 2926204.
