In computer science and mathematical optimization, a metaheuristic is a higher-level procedure or heuristic designed to find, generate, or select a heuristic (partial search algorithm) that may provide a sufficiently good solution to an optimization problem, especially with incomplete or imperfect information or limited computation capacity. Metaheuristics sample a set of solutions which is too large to be completely sampled. Metaheuristics may make few assumptions about the optimization problem being solved, and so they may be usable for a variety of problems.
Compared to optimization algorithms and iterative methods, metaheuristics do not guarantee that a globally optimal solution can be found on some class of problems. Many metaheuristics implement some form of stochastic optimization, so that the solution found is dependent on the set of random variables generated. By searching over a large set of feasible solutions, metaheuristics can often find good solutions with less computational effort than algorithms, iterative methods, or simple heuristics. As such, they are useful approaches for optimization problems. Several books and survey papers have been published on the subject.
Most literature on metaheuristics is experimental in nature, describing empirical results based on computer experiments with the algorithms. But some formal theoretical results are also available, often on convergence and the possibility of finding the global optimum. Enormously many metaheuristic methods have been published with claims of novelty and practical efficacy. Unfortunately, many of the publications have been of poor quality; flaws include vagueness, lack of conceptual elaboration, poor experiments, and ignorance of previous literature. The field also features high-quality research.
Properties and classification
These are properties that characterize most metaheuristics:
- Metaheuristics are strategies that guide the search process.
- The goal is to efficiently explore the search space in order to find near–optimal solutions.
- Techniques which constitute metaheuristic algorithms range from simple local search procedures to complex learning processes.
- Metaheuristic algorithms are approximate and usually non-deterministic.
- Metaheuristics are not problem-specific.
One approach is to characterize the type of search strategy. One type of search strategy is an improvement on simple local search algorithms; Metaheuristics of this type include simulated annealing, tabu search, iterated local search, variable neighborhood search, and GRASP. The other type of search strategy has a learning component to the search; metaheuristics of this type include ant colony optimization, evolutionary computation, and genetic algorithms.
Another classification dimension is single solution vs population-based searches. Single solution approaches focus on modifying and improving a single candidate solution; single solution metaheuristics include simulated annealing, iterated local search, variable neighborhood search, and guided local search. Population-based approaches maintain and improve multiple candidate solutions, often using population characteristics to guide the search; population based metaheuristics include evolutionary computation, genetic algorithms, and particle swarm optimization. Another category of metaheuristics is Swarm intelligence which is collective behavior of decentralized, self-organized agents in a population or swarm. Ant colony optimization, particle swarm optimization, social cognitive optimization, and artificial bee colony  algorithms are examples of this category.
In addition to the serial algorithms above, there are hybrid and parallel metaheuristics. A hybrid metaheuristic is one which combines a metaheuristic with other optimization approaches, such as algorithms from mathematical programming, constraint programming, and machine learning. Both components of a hybrid metaheuristic may run concurrently and exchange information to guide the search. A parallel metaheuristic is one which uses the techniques of parallel programming to run multiple metaheuristic searches in parallel; these may range from simple distributed schemes to concurrent search runs that interact to improve the overall solution.
Metaheuristics are used for combinatorial optimization in which an optimal solution is sought over a discrete search-space. An example problem is the travelling salesman problem where the search-space of candidate solutions grows faster than exponentially as the size of the problem increases, which makes an exhaustive search for the optimal solution infeasible. Additionally, multidimensional combinatorial problems, including most design problems in engineering such as form-finding and behavior-finding, suffer from the curse of dimensionality, which also makes them infeasible for exhaustive search or analytical methods. Popular metaheuristics for combinatorial problems include simulated annealing by Kirkpatrick et al., genetic algorithms by Holland et al., scatter search and tabu search by Glover. Literature review on metaheuristic optimization, suggested that it was Fred Glover who coined the word metaheuristics 
Many different metaheuristics are in existence and new variants are continually being proposed. Some of the most significant contributions to the field are:
- 1952: Robbins and Monro work on stochastic optimization methods.
- 1954: Barricelli carry out the first simulations of the evolution process and use them on general optimization problems.
- 1963: Rastrigin proposes random search.
- 1965: Matyas proposes random optimization.
- 1965: Nelder and Mead propose a simplex heuristic, which was shown by Powell to converge to non-stationary points on some problems.
- 1966: Fogel et al. propose evolutionary programming.
- 1970: Hastings proposes the Metropolis-Hastings algorithm.
- 1970: Cavicchio proposes adaptation of control parameters for an optimizer.
- 1970: Kernighan and Lin propose a graph partitioning method, related to variable-depth search and prohibition-based (tabu) search.
- 1975: Holland proposes the genetic algorithm.
- 1977: Glover proposes Scatter Search.
- 1978: Mercer and Sampson propose a metaplan for tuning an optimizer's parameters by using another optimizer.
- 1980: Smith describes genetic programming.
- 1983: Kirkpatrick et al. propose simulated annealing.
- 1986: Glover proposes tabu search, first mention of the term metaheuristic.
- 1989: Moscato proposes memetic algorithms.
- 1992: Dorigo introduces Ant colony optimization in his Phd Thesis.
- 1995: Wolpert and Macready prove the no free lunch theorems.
- Stochastic search
- Swarm intelligence
- Genetic algorithms
- Simulated annealing
- Bianchi, Leonora; Marco Dorigo; Luca Maria Gambardella; Walter J. Gutjahr (2009). "A survey on metaheuristics for stochastic combinatorial optimization". Natural Computing: an international journal 8 (2): 239–287. doi:10.1007/s11047-008-9098-4.
- Blum, C.; Roli, A. (2003). "Metaheuristics in combinatorial optimization: Overview and conceptual comparison" 35 (3). ACM Computing Surveys. pp. 268–308.
- Goldberg, D.E. (1989). Genetic Algorithms in Search, Optimization and Machine Learning. Kluwer Academic Publishers. ISBN 0-201-15767-5.
- Glover, F.; Kochenberger, G.A. (2003). Handbook of metaheuristics 57. Springer, International Series in Operations Research & Management Science. ISBN 978-1-4020-7263-5.
- Talbi, E-G. (2009). Metaheuristics: from design to implementation. Wiley. ISBN 0-470-27858-7.
- Sörensen, Kenneth. "Metaheuristics—the metaphor exposed" (PDF). International Transactions in Operational Research. doi:10.1111/itor.12001.
- M. Dorigo, Optimization, Learning and Natural Algorithms, PhD thesis, Politecnico di Milano, Italie, 1992.
- Karaboga, Dervis (2010). "Artificial bee colony algorithm". Scholarpedia 5 (3): 6915. doi:10.4249/scholarpedia.6915.
- Tomoiagă B, Chindriş M, Sumper A, Sudria-Andreu A, Villafafila-Robles R. Pareto Optimal Reconfiguration of Power Distribution Systems Using a Genetic Algorithm Based on NSGA-II. Energies. 2013; 6(3):1439-1455.
- Kirkpatrick, S.; Gelatt Jr., C.D.; Vecchi, M.P. (1983). "Optimization by Simulated Annealing". Science 220 (4598): 671–680. doi:10.1126/science.220.4598.671. PMID 17813860.
- Holland, J.H. (1975). Adaptation in Natural and Artificial Systems. University of Michigan Press. ISBN 0-262-08213-6.
- Glover, Fred (1977). "Heuristics for Integer programming Using Surrogate Constraints". Decision Sciences 8 (1): 156–166. doi:10.1111/j.1540-5915.1977.tb01074.x.
- Glover, F. (1986). "Future Paths for Integer Programming and Links to Artificial Intelligence". Computers and Operations Research 13 (5): 533–549. doi:10.1016/0305-0548(86)90048-1.
- X. S. Yang, Metaheuristic optimization, Scholarpedia, 6(8):11472 (2011).
- Glover F., (1986). Future paths for integer programming and links to artificial intelligence, Computers and Operations Research,13,533-549 (1986).
- Robbins, H.; Monro, S. (1951). "A Stochastic Approximation Method". Annals of Mathematical Statistics 22 (3): 400–407. doi:10.1214/aoms/1177729586.
- Barricelli, N.A. (1954). "Esempi numerici di processi di evoluzione". Methodos: 45–68.
- Rastrigin, L.A. (1963). "The convergence of the random search method in the extremal control of a many parameter system". Automation and Remote Control 24 (10): 1337–1342.
- Matyas, J. (1965). "Random optimization". Automation and Remote Control 26 (2): 246–253.
- Nelder, J.A.; Mead, R. (1965). "A simplex method for function minimization". Computer Journal 7: 308–313. doi:10.1093/comjnl/7.4.308.
- Fogel, L.; Owens, A.J.; Walsh, M.J. (1966). Artificial Intelligence through Simulated Evolution. Wiley. ISBN 0-471-26516-0.
- Hastings, W.K. (1970). "Monte Carlo Sampling Methods Using Markov Chains and Their Applications". Biometrika 57 (1): 97–109. doi:10.1093/biomet/57.1.97.
- Cavicchio, D.J. (1970). "Adaptive search using simulated evolution". Technical Report (University of Michigan, Computer and Communication Sciences Department). hdl:2027.42/4042.
- Kernighan, B.W.;Lin, S. (1970). "An efficient heuristic procedure for partitioning graphs". Bell System Technical Journal 49 (2): 291–307. doi:10.1002/j.1538-7305.1970.tb01770.x.
- Mercer, R.E.; Sampson, J.R. (1978). "Adaptive search using a reproductive metaplan". Kybernetes (The International Journal of Systems and Cybernetics) 7 (3): 215–228. doi:10.1108/eb005486.
- Smith, S.F. (1980). A Learning System Based on Genetic Adaptive Algorithms (PhD Thesis). University of Pittsburgh.
- Moscato, P. (1989). "On Evolution, Search, Optimization, Genetic Algorithms and Martial Arts: Towards Memetic Algorithms". Caltech Concurrent Computation Program (report 826).
- Wolpert, D.H.; Macready, W.G. (1995). "No free lunch theorems for search". Technical Report SFI-TR-95-02-010 (Santa Fe Institute).
- Igel, Christian, Toussaint, Marc (Jun 2003). "On classes of functions for which No Free Lunch results hold". Information Processing Letters (Elsevier North-Holland, Inc.) 86 (6): 317–321. doi:10.1016/S0020-0190(03)00222-9. ISSN 0020-0190. Retrieved 9 April 2013.
- Auger, Anne, Teytaud, Olivier (2010). "Continuous Lunches Are Free Plus the Design of Optimal Optimization Algorithms". Algorithmica (Springer-Verlag) 57 (1): 121–146. doi:10.1007/s00453-008-9244-5. ISSN 0178-4617. Retrieved 9 April 2013.
- Stefan Droste, Thomas Jansen, Ingo Wegener (2002). "Optimization with Randomized Search Heuristics – The (A)NFL Theorem, Realistic Scenarios, and Difficult Functions". Theoretical Computer Science 287 (1): 131–144. doi:10.1016/s0304-3975(02)00094-4. Retrieved 9 April 2013.
- EU/ME forum for researchers in the field.
- MetaHeur - Excel application to metaheuristic methods