## 3 Hybrid GA with Layered Process for MIMO Detection
### Proposed Hybrid Genetic Algorithm
#### 3.1.4 Procedure of the Proposed HGA  
The procedure of the proposed HGA is almost identical to that of the basic GA, except for a mechanism to update the population using genetic operations. Figure 4 shows the population update mechanism of the proposed HGA. As described in Section 3.1, the _selection_ operation of the proposed HGA is performed only once, and only the fittest individual is selected and copied to the next population. Unlike the _crossover_ of the basic GA, the _crossover_ of the proposed HGA generates only one offspring in a single _crossover_ operation such that all offspring generated by the _crossover_ can be different. The _mutation_ operation of the proposed HGA performs a completely different operation to that of the _mutation_ operation of the basic GA. The _mutation_ operation of proposed HGA performs a neighborhood search that generates the \(mN\) vector-neighbor of a parent and insert them into the next population, where \(m\) is the dimension of the individual and \(N\) denotes the number of nearby neighbors, respectively. Moreover, the parent for the _mutation_ operation of the proposed HGA is selected from the _crossover_, not the current population. Therefore, the genetic operations of the proposed HGA are performed in the order of _selection_, _crossover_, and _mutation_. Through the proposed HGA, we can find better solutions by efficiently searching using approaches such as avoiding repeated searches and performing intensive searches of a wide range of areas. The overall procedure of the proposed HGA can be summarized as follows. 1. Define an fitness function, and set the GA operations. 2. The fitness function, and set the GA operations, are defined as follows. 3. The fitness function, and set the GA operations, are defined as follows. 4. The fitness function, and set the GA operations, are defined as follows. 5. The fitness function, and set the GA operations, are defined as follows. 6. The fitness function, and set the GA operations, are defined as follows. 7  
* Initialize the algorithm. 1. Generate the initial population \(\mathbf{P}_{0}\). 2. Evaluate the fitness of the initial population \(\mathbf{Fit}_{0}\). 3. Generate the _mutation list_\((\mathbf{MU}_{list})\) as a empty set. 3. Update the population by using the genetic operations. 1. Initialize the current population \(\mathbf{P}_{g}\) and the checker for selection \(\mathbf{S}_{\mathbf{chk}}\). 2. _Selection_: select the fittest individual \(\mathbf{s}_{g}\) of \(\mathbf{P}_{g-1}\) and copy to \(\mathbf{P}_{g}\). If \(\mathbf{s}_{g}\) is not an element of \(\mathbf{MU}_{list}\), set \(S_{chk}\) to one. 3. _Crossover_ i. Generate the _crossover_ result set \(\mathbf{CR}_{pool}\) as a empty set and \(CR_{chk}\), which is the number of times _crossover_ has been performed is zero. ii. Select the two different parents from the \(\mathbf{P}_{g-1}\) using the roulette wheel selection method, and randomly select the _crossover_ length \(CR_{len}\). iii. Perform a single-point _crossover_ using two parents and the \(CR_{len}\) to generate _crossover_ offspring \(\mathbf{off}_{cr}\). iv. If the \(\mathbf{off}_{cr}\) is not an element of \(\mathbf{CR}_{pool}\), insert the \(\mathbf{off}_{cr}\) into \(\mathbf{CR}_{pool}\) and increase \(CR_{chk}\) by one. v. If \(CR_{chk}\) is less than the _crossover size_\(C_{r}\), go back to step (ii). vi. Insert the \(\mathbf{CR}_{pool}\) to \(\mathbf{P}_{g}\). 4. _Mutation_ i. Generate the _mutation_ result set \(\mathbf{MU}_{pool}\) as a empty set and \(MU_{chk}\), which is the number of times _mutation_ has been performed is zero. ii. Select a single parent from the \(\mathbf{CR}_{pool}\) using the roulette wheel selection. iii. Remove the individual selected as the parent from \(\mathbf{CR}_{pool}\). If the parent is not an element of \(\mathbf{MU}_{list}\), insert the parent and vector-neighbor of the parent into the \(\mathbf{MU}_{pool}\). Furthermore, insert the parent into the \(\mathbf{MU}_{list}\) and increase \(MU_{chk}\) by one. iv.