In mathematical programming, a heuristic refers to a procedure that seeks a solution to an optimization problem but does not guarantee that it will find one. Heuristics use a heuristic function to guide the search, as a human would do. The heuristic search can be either an informed search or a blind search. Greedy algorithms employ blind searches that use little information about the system. The heuristics that use the heuristic function in a strategic way (i.e. an informed search) are referred to as meta-heuristics.
A meta-heuristic is a general framework for heuristics for solving hard global optimization problems.Mostmeta-heuristicsarebasedonsomekindofnaturalphenomenon.Examplesof commonly used meta-heuristics are briefly described below.