Genetic algorithms are multi-agent search strategies applicable to a wide range of problems. However, it is often very difficult in practice to design an optimal set of genetic operators for a problem, because a genetic operator which works well for a problem might not work well for another problem. This paper tries to understand when and why some genetic operators are useful and how we can combine them together to improve the performance of genetic algorithms. Experiments have been carried out to analyse the role of crossover and mutation as well as selection mechanisms. Several genetic algorithms with different genetic operators and selection mechanisms are used in the empirical study. The study suggests that "greedy" crossover and "hard" selection with a low mutation rate often give genetic algorithms better performance. © 1993.