Niching Methods for Genetic Algorithms