Simulated annealing (SA) is an effective, heuristic algorithm that stochastically searches for the global optimum of an objective function on a landscape where many local optima may be present. The approach has analogies to physical annealing, where a material avoids getting trapped in local energy minima (e.g., defective crystals or glasses) and eventually realizes its lowest energy state (i.e., crystal) by slowly cooling it from high to low temperature.