Simulated annealing is a computer technique that can find good — although not necessarily optimum — solutions to a problem. It is so named because it mimics the metallurgical process of annealing. In metals, annealing is the process of purification by heating the metal then cooling it slowly. The computer program “purifies” the solution space until all that remain are solutions that are best or very nearly best.
There are two critical factors that the user of a simulated annealing program needs to specify: the starting temperature, or the percentage of worse solutions that can be explored; and the rate of cooling, which is the rate at which that percentage is reduced. A low starting temperature will often end with a result far removed from optimum. Starting at a very high temperature can result in the search taking far more time than necessary. Similarly, a rate of cooling that is too high will generate poor results, while a very low rate of cooling will result in a program that runs for a very long time.
The “high temperature” state for the simulated annealing program is a setting which allows it to look at a wide range of solutions, including many that are worse than solutions it has already found. The computer is allowed to look at many solutions that are worse than the current solution to avoid sticking at a local minimum that is substantially worse than the best. As an example, one can imagine starting at the top of a hill or mountain with the goal of reaching the base. Along the way there may be gullies or chasms. If the computer can’t go uphill far enough to get out, it will get stuck even though it is nowhere close to the base.
How far up hill the program can go is determined by the percentage of worse solutions the program is allowed to examine. With the passage of time, progressively better solutions are found and the risk of a deep chasm lessens, so the percentage of worse solutions that the computer can explore is diminished. Diminishing this fraction is referred to as “cooling.” When the temperature reaches a pre-set fraction — which need not be 0 — the search ends.
The reason to use simulated annealing or other artificial intelligence search techniques is to reduce to a manageable amount the time needed to find a near-optimum solution. For many problems, an exhaustive search — the testing of each possible solution against each other possible solution — could take months or years. The most widely known alternative to simulated annealing is genetic algorithms. Other popular artificial intelligence search algorithms include ant colony optimization, particle swarm optimization, nearest neighbor and Bayesian classifiers.