Initial Temperature for Simulated Annealing

13 views (last 30 days)
Sepp
Sepp on 9 Jun 2016
Answered: Rushil on 8 May 2025 at 6:36
Hello
I'm trying to use simulannealbnd for parameter optimization. My big problem is the initial temperature T0. The default value is 100 but this seems not that good.
I have eight parameters with the following ranges:
[-5,15]
[-15,3]
[0,1]
[1,30]
[0,4] (four parameters)
My cost function can take values between 0.5 and 1. I want to use different AnnealingFcn (@annealingfast and @annealingboltz) and different TemperatureFcn (@temperatureexp, @temperaturefast and @temperatureboltz). I'm using the following combinations:
@annealingfast + @temperatureexp
@annealingfast + @temperaturefast
@annealingboltz + @temperatureboltz
What are reasonable values to try for the initial temperature?

Answers (1)

Rushil
Rushil on 8 May 2025 at 6:36
Hello
With reference to the initial temperature (T0) in simulannealbnd, since values of the cost function range from 0.5 to 1, the default T0 = 100 is usually too high for this optimization problem.
A common approach is to set T0 so that the probability of accepting a typical uphill move (ΔE) at the start is about 0.8–0.9. The acceptance probability is given by:
Solving for T0 gives:
For example, if a typical cost increase is ΔE = 0.02 and you want P = 0.8, then:
Based on this, values of T0 to try are 0.05, 0.1, 0.2, or 0.5. Monitor early acceptance rates and adjust them if needed.
This idea will improve the results as compared to taking 100 as an initial temperature.
Hope it helps

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!