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.
翻译:许多组合优化问题的最佳解以排列表示。经典的旅行商问题寻求城市集合的最优排序,调度问题通常寻求任务或活动的最优顺序。尽管某些进化方法对此类问题采用遗传算法的位串表示,但更常见的是直接使用排列表示解。直接进化排列需要专门的进化算子。多年来,针对排列问题的进化算法已开发出多种交叉与变异算子。本文综述了排列的各类进化算子,并在开源Java进化计算库Chips-n-Salsa中实现了所有这些算子。最后,我们通过人工适应度景观(隔离不同排列特征)对交叉算子进行实证分析。