Text this: The Roles of Crossover and Mutation in Real-Coded Genetic Algorithms