Generic Metaheuristics by Daniel Wagner