Genetic algorithms (GA) are a widely used class of population-based heuristic optimization algorithms inspired by evolutionary adaptation in nature. At the core of a GA is a population of individuals that represent potential solutions to the problem at hand. In the most general setting, the population is used to produce a set of offspring by means of "genetic operators" that typically take one or two parents as input. The population of the next generation is then selected from the current population and their offspring using a selection rules that favors fitter solutions. The effectiveness of these algorithms depends on the representation of solutions, the definition of the genetic operators that act on these representations, and the selection scheme . Following the paradigm of biological evolution, the overwhelming majority of GA implementations uses fixed length strings to represent solutions and employs mutation (i.e., relabeling) as well as crossover to produce variants to select from in each generation. Occasionally, other data structures are used, such as permutations as encodings for tours in the traveling salesman problem, that require specialized crossover operators .