Functional Minimization using Simulated Annealing


Just Looking: An example code


To Get Started and Explore

The following files are in the distribution:


Some Questions to Help You Understand the Technique

- Flowchart

Look at the source anneal.f and write a flowchart describing the code. You don't need a lot of detail, just indicate the main loops and decision processes (the flowchart should fit on one page).

- Annealing rate

Try different annealing factors (0.8, 0.9, 0.95) with different random seeds. How slowly do you have to anneal to settle down in the global minimum over 90% of the time? Just estimate the quantity, but provide some explanation and data to support your answer.

- Sqrt(T) scaling

Notice that the step size used in the code for the metropolis algorithm (in SUBROUTINE step) is scaled by SQRT(temperature). What is the reason for this choice? Hint, look at the acceptance ratios, and think about diffusion and thermal distributions in parabolic wells (i.e. related to the type of FUNCTION).

- "Specific Heat" Type Quantity

Do a long run with slow annealing, and look at the specific heat Cv (you can use gnuplot cv.gnu). Since Cv has a large variance, you will need to set the number of steps per block fairly high (at least 10000). Identify the main feature in this curve, and relate the energy to an energy scale in the energy curve. By comparing to some of the graphs produced by gnuplot x_1d.gnu, explain how Cv can indicate where simulated annealing may fail.