Simulated Annealing (based on Metropolis Algorithm)
Simulated annealing (SA) is a generalization of a Monte Carlo method for examining the equations of state and frozen states of n-body systems. The concept is based on the manner in which liquids freeze or metals recrystalize in the process of annealing. In an annealing process a metal, initially at high temperature and in a disordered state is slowly cooled so that the system at any time is approximately in thermodynamic equilibrium. As cooling proceeds, the system becomes more ordered and approaches a frozen ground state at .Hence the process can be thought of as an adiabatic approach to the lowest energy state. If the initial temperature of the system is too low or cooling is done insufficiently slowly then the system may become quenched forming defects or freezing out in metastable states (i.e., trapped in a local minimum energy state).
By analogy the generalization of this Monte Carlo approach to combinatorial problems is straight forward. The current state of the thermodynamic system is analogous to the current solution to the combinatorial problem, the energy equation for the thermodynamic system is analogous to at the objective function, and the ground state is analogous to the global minimum. The major difficulty in implementation of the algorithm is that there is no obvious analogy for the temperature with respect to a free parameter in the combinatorial problem. Furthermore, avoidance of entrainment in local minima (quenching) is dependent on the "annealing schedule", (i) the choice of initial temperature, (ii) how many iterations are performed at each temperature, and (iii) how much the temperature is decremented at each step as cooling proceeds.
Simulated annealing has been used in various combinatorial optimization problems and has been particularly successful in circuit design problems. Figure 12.3 gives the pseudo-code for the Simulated Annealing (SA) process, which the reader is advised to understand for a better understanding of the procedure.
Pseudo code for the Simulated Annealing (SA) method

Figure 12.3: Pseudo-code for Simulated Annealing (SA) |