Use a more sophisticated simulated annealing algorithm
Revamp simulated annealing algorithm
Merge branch 'master' into realsiman