As can be read in the webpage of the metaheuristics network (http://www.metaheuristics.org), a metaheuristic is a set of concepts that can be used to define heuristic methods that can be applied to a wide set of different problems. In other words, a metaheuristic can be seen as a general algorithmic framework which can be applied to different optimization problems with relatively few modifications to make them adapted to a specific problem. Examples of metaheuristics include evolutionary algorithms, simulated annealing, tabu search, iterated local search, and ant colony optimization. Metaheuristics have been widely used to solve different combinatorial (and numerical) optimization problems, with the goal of obtaining a very good solution (but perhaps not the optimum) to NP-complete problems in which exact search methods are intractable even for small problem sizes.