  There are many combinatorial optimization problems whose solutions are best
represented by permutations. The classic traveling salesperson seeks an optimal
ordering over a set of cities. Scheduling problems often seek optimal orderings
of tasks or activities. Although some evolutionary approaches to such problems
utilize the bit strings of a genetic algorithm, it is more common to directly
represent solutions with permutations. Evolving permutations directly requires
specialized evolutionary operators. Over the years, many crossover and mutation
operators have been developed for solving permutation problems with
evolutionary algorithms. In this paper, we survey the breadth of evolutionary
operators for permutations. We implemented all of these in Chips-n-Salsa, an
open source Java library for evolutionary computation. Finally, we empirically
analyze the crossover operators on artificial fitness landscapes isolating
different permutation features.
