Initial Temperature for Simulated Annealing

조회 수: 8 (최근 30일)
Sepp
Sepp 2016년 6월 9일
답변: Rushil 2025년 5월 8일
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?

답변 (1개)

Rushil
Rushil 2025년 5월 8일
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

카테고리

Help CenterFile Exchange에서 Simulated Annealing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by