added genetic algorithm