Heuristics find “good” solutions on large-size problem instances. They allow to
obtain acceptable performance at acceptable costs in a wide range of problems. In
general, heuristics do not have an approximation guarantee on the obtained solutions.
They may be classified into two families: specific heuristics and metaheuristics. Specific
heuristics are tailored and designed to solve a specific problem and/or instance.
Metaheuristics are general-purpose algorithms that can be applied to solve almost any
optimization problem. They may be viewed as upper level general methodologies that
can be used as a guiding strategy in designing underlying heuristics to solve specific
optimization problems