模拟退火算法(SA)的基本思想
问题描述
SA是一种启发式的随机寻优算法,模拟了物理退火过程从给定的一个初始高温开始,利用具有突跳特性的Metropolis抽样策略在解空间随机搜索,伴随稳定的不断下降重复抽样的过程。
基本步骤:
给定初温t=t_0,随机产生初始状态s=s_0,令k=0;
Repeat
Repeat
产生新的状态S_j=Gnente(s);
if min{1,exp[-(C(s_j)-C(s))/t_k]}>=random[0,1]
s=s_j;
Until 抽样稳定准则满足
退温t_{k+1}=update(t_k)并令k=k+1;
Until 算法终止准则满足
输出算法搜索结果
可以看出,影响SA优化结果的主要因素就是:三函数两原则以及初始温度
SA算法的基本要求与要素
基本要求:
- 1、初始温度足够高
- 2、降温过程足够慢
- 3、终止温度足够低
算法要素: - 1、状态表达
- 2、领域的定义与移动
- 3、热平衡达到
- 4、降温函数:常用的降温函数有:
a : T k + 1 = T k ∗ r , 其 中 r ∈ ( 0.95 , 0.99 ) a: T_{k+1}=T_k*r,其中r\in (0.95,0.99) a:Tk+1=Tk∗r,其中r∈(0.95,0.99)
b : T k + 1 = T k − Δ T , Δ T 是 每 一 步 下 降 的 长 度 b: T_{k+1}=T_k-\Delta T,\Delta T是每一步下降的长度 b:Tk+1=Tk−ΔT,ΔT是每一步下降的长度
SA的计算步骤
- 1、初始化,任选初始解,i,给定初始温度T_0,终止温度T_f,令迭代指标k=0,T_k=T_0。
- 要注意:选择T_0时,要足够高,使 E i / T k → 0 E_i/T_k\rightarrow 0 Ei/Tk→0
- 2、随机产生一个邻域解,计算目标值增量
j
∈
N
(
i
)
,
(
N
(
i
)
表
示
i
的
邻
域
)
j\in N(i), (N(i)表示i的邻域)
j∈N(i),(N(i)表示i的邻域)
Δ f = f ( j ) = f ( i ) \Delta f=f(j)=f(i) Δf=f(j)=f(i) - 3、若 Δ f < 0 \Delta f<0 Δf<0令i=j转步骤4(j比i好,就进行无条件转移);否则产生 ξ ∈ U ( 0 , 1 ) \xi \in U(0,1) ξ∈U(0,1)若 e x p ( − Δ f / T k ) > ξ exp(-\Delta f/T_k)>\xi exp(−Δf/Tk)>ξ则令i=j(j比i好,有条件转移)
- 注意:T_k高时,广域搜索;T_k低时,局域搜索
- 4、若达到热平衡(内循环的次数大于n(T_k))转步骤5,否则转步骤2
- 5、k=k+1 降低T_k,若T_k<T_f停止,否则转步骤2
- 注意:降低T_k的方法有以下两种
a : T k + 1 = T k ∗ r , 其 中 r ∈ ( 0.95 , 0.99 ) a: T_{k+1}=T_k*r,其中r\in (0.95,0.99) a:Tk+1=Tk∗r,其中r∈(0.95,0.99)
b : T k + 1 = T k − Δ T , Δ T 是 每 一 步 下 降 的 长 度 b: T_{k+1}=T_k-\Delta T,\Delta T是每一步下降的长度 b:Tk+1=Tk−ΔT,ΔT是每一步下降的长度