Choose an initial state s0 and an initial temperature T0
s = s0; T = T0;
while ( termination condition is not satisfied ) do
  repeat the following a fixed number of times 
     if ( state s is a solution ) then return(s); 
     choose a new state s' from the neighbourhood of s;
     if ( state s' is a solution ) then return(s');
     E := energy(s);
     E' := energy(s');
     if ( E' < E or random() < e-(E-E')/kT ) then {s := s';E :=E';}
  end repeat;
  decrease the temperature T;
end while
return(s); // whatever found so far

Figure 1: High-level description of the SA algorithm.

Back to Article