## 3 Evolutionary Techniques for Intelligent Sensor Systems Design
### Genetic Algorithm  
Genetic algorithms (GA) are search algorithms based on the concept of natural selection and natural genetics [22, 23]. GA optimization is a powerful tool with the ability not to get stuck in unfortunate local solutions like gradient descent. This allows one to find feasible and superior solutions in many real applications. Due to this reason, we adopt this optimization concept of GA to solve the problems faced in our design methodology. Briefly, the main steps of the GA are initialization (generate an initial population), selection for recombination (e.g., Roulette Wheel Selection or Tournament Selection), recombination (e.g., one point crossover), mutation, selection for reproduction / replacement (e.g., elitism with the best 5-10% of the population), and termination conditions (maximum number of generations exceeded or objective function criteria achieved). Each candidate solution is referred as an individual or chromosome of a population. An individual encodes a point in the search space of a given problem. The individuals are compared by means of a fitness function. The fitness value is used to guide the recombination and survival of individuals. A few modifications from the basic concept of GA are needed to cope with our particular system design requirements. The modifications of GA implementation are due to the representation of candidate solutions that are usually composed of heterogeneous structure and different types of values (_i.e._, binary, integer, and floating-point). Those types of values in the single candidate solution representation usually require properly selected operators (e.g., crossover and mutation) and the combination of those operators. For example, the evolved Gaussian kernels of feature computation reported in [26] applied five different mutation operators to deal with replacement of entire set of solutions, kernel replacement, magnitude adjustment, kernel position adjustment, and kernel width adjustment. Those five mutation operators are controlled by the dynamic weight factor. However, the main steps of GA still remains as shown in Figure 10.  
To find an optimal solution, Genetic Algorithms usually require a large number of individuals in the population (around 50 to 100). Two operators, namely, recombination and mutation, play an important  
Figure 10: The general process of GA.  
role to increase the population diversity and to ensure the exploration of the search space in finding the best solution. Recombination (crossover) operators are applied probabilistically according to a crossover rate \(P_{c}\), which is typically in the range [0.5,1.0]. Usually two parents are selected and then a random variable is drawn from [0,1) and compared to \(P_{c}\). If the random value is lower than the crossover rate \(P_{c}\), then two offspring are created via recombination of two parents; otherwise they just copy their parents. Recombination operator can be distinguished into two categories, namely, _discrete_ recombination and _arithmetic_ recombination [48]. Discrete recombination is the process of exchanging the segments of parents (crossover) to produce offspring, as illustrated in Figure 11. _One point_ crossover works by choosing a random number in the range of the encoding length, then splitting both parents at this point, and creating the two opffspring by exchanging the tails. This operator is mostly used due to the simplicity. One-point crossover can easily be generalised to _N-point_ crossover, where the representation is broken into more than two segments of contiguous genes, and then taking alternative segments from the two parents creates the children. In contrast to those two crossover operators, _uniform_ crossover works by treating each gene independently and making a random choice as to which parent it should be inherited from. This is implemented by generating a string of random variables (equal to the encoding length) from a uniform distribution over [0,1].