Simulated annealing - faster convergence?


paolog
07-11-2007, 05:55 AM
I am working on an image-processing problem that involves minimisation of a large number of parameters (three [red, green, blue] per pixel plus an additional constant amount).

After experimenting with the simplex method and SVD and not achieving results, I am finally getting somewhere with simulated annealing. My cost function seems to have many local minima that the first two methods were all too keep to leap into, and simulated annealing is ideally suited to avoiding this problem.

Having read the discussions in the book and on this forum, I think I have a fairly reasonable annealing schedule, but the problem is that it converges incredibly slowly. I called amebsa 21700 times (= 100 times the number parameters) and cost cost went down by around 10%. This took about an hour to run. The number of parameters was only 217 as I subsampled my image severely (taking one pixel from every other row).

Does anyone have any suggestions for improving the convergence? It might be that my current annealing schedule (see pseudocode below) is not good enough - does anyone have any suggestions for a better one?

num cycles = 100 * num parameters
typical range of error = 300.0 / top pixel value //initial error is about this much, and minimum error would be 0, so this is the range of the error
temperature = 5.0 * typical range of error
for cycle = 0 to num cycles - 1iter = 15 * num parameters
call amebsa
if lowest cost (yb) has gone down 30 times consecutively OR 250 cycles have elapseddecrease temperature by 10% of its current value

Thanks for any help.

PS: My pixel values are floating-point and in the range 0 to 1. The delta for the simplex is 0.2. Is this a reasonable value to use?

judaslucas
09-26-2007, 08:16 PM
Just read this paper. May be useful to you.


On the Design of an Adaptive Simulated Annealing Algorithm (PDF)

http://research.microsoft.com/constraint-reasoning/Workshops/Autonomous-CP07/Papers/2.pdf