模拟退火法
模拟退火法基础
1.固体退火基础
- 固体退火是先将固体加热至熔化,在徐徐冷却使之凝固成规整晶体的热力学过程
- 当温度升至熔化温度后,固体的规则性被彻底破坏,粒子排列从有序的结晶态转变为无序的液态。熔化过程与系统的熵增过程相联系,系统能量也随温度升高而增大
- 冷却时,液体粒子的热运动逐渐减弱,随着温度的徐徐降低,粒子运动渐趋有序,当温度降至结晶温度后,粒子运动变为围绕晶体格点的微小振动,液体凝固成固体的晶态,此过程称为退火,退火过程中系统的熵值不断减小,系统能量也随温度降低趋于最小值
- 退火过程为什么必须徐徐进行
为了使系统在每一温度下都达到平衡态,最终达到固体的基态,冷却时若急剧降低温度,则将引起淬火效应,即固体只能冷凝为非均匀的亚稳态,系统能量也不会达到最小值
- 退火过程中系统在每一温度下达到平衡态的过程,可以用封闭系统的等温过程来描述
- 根据玻尔兹曼有序性原理,退火过程遵循应用于热平衡封闭系统的热力学定律————
自由能减少定律:对于与周围环境交换热量而温度保持不变的封闭系统,系统状态的自发变化总是朝着自由能减少的方向进行的。当自由能达到最小值时,系统达到平衡态
- 根据玻尔兹曼有序性原理,退火过程遵循应用于热平衡封闭系统的热力学定律————
2.退火过程中的统计力学
- 在温度T下,如果材料达到了热平衡,这时材料处于具有所有N个状态的S空间中的某一状态i的概率可由玻尔兹曼分布描述:
P T ( i ) = e x p ( − E i K T ) ∑ k = 1 N e x p ( − E k K T ) P_T(i)=\frac{exp(\frac{-E_i}{KT})}{\sum_{k=1}^Nexp(\frac{-E_k}{KT})} PT(i)=∑k=1Nexp(KT−Ek)exp(KT−Ei)
K是物理学中的玻尔兹曼常数,T是材料的温度, E i E_i Ei和 E k E_k Ek分别是状态i和k对应的内能 - 此处难顶,暂时不懂
3.Metropolis准则
- 从 物理系统倾向于能量较低的状态,而热运动有妨碍它准确地落入最低态 的物理原理出发,采样时着重取那些有重要贡献的状态,则可以较快的到达较好的结果
- 给定以粒子相对位置表征的初始状态 i 作为当前状态,然后用摄动方法使随机选取的某个粒子的位移随机的产生以微小变化,得到一个新的状态 j
- (1) 若 E ( j ) ≤ E ( i ) E(j)\leq E(i) E(j)≤E(i),则状态转换被接受(找到个更漂亮的妹子能不接受吗?)
- (2) 若 E ( j ) ≥ E ( i ) E(j)\geq E(i) E(j)≥E(i),则状态转换的概率为 P T ( i → j ) = e x p ( − E i − E j K T ) P_T(i\rightarrow j)=exp(-\frac{E_i-E_j}{KT}) PT(i→j)=exp(−KTEi−Ej)(找到一个漂亮的妹子但没有前一个妹子漂亮,但是有概率长大后变得更漂亮,所以等长大后判断是否变得更漂亮来决定是否接受)
- (3)产生随机数
r
=
r
a
n
d
o
m
(
0
,
1
)
r = random(0,1)
r=random(0,1),与(2)中式子比较
若 P T ≥ r P_T\geq r PT≥r,则接受状态j
若 P T < r P_T< r PT<r,则拒绝状态j,保持i不变
- 理解:对同样的接受概率,因为T是分母,在高温下可接受的新状态能量差大一些;而在低温下则接受的能量差较小,这与不同温度下热运动的影响一致。当温度趋于零时, E ( j ) > E ( i ) E(j)>E(i) E(j)>E(i)的新状态j都不能接受(P都大于1了,违反常规)
模拟退火算法
- 模拟退火算法与物理退火过程的对应
模拟退火 物理退火 解 粒子状态 目标函数 能量 最优解 能量最低态 设定初温 加温过程 扰动 热涨落 Metropolis采样过程 热平衡,粒子状态满足玻尔兹曼分布 控制参数的下降 冷却
1.算法描述
- 标准模拟退火法的一般步骤
- 步骤1:给定初始温度 T k = T 0 T_k=T_0 Tk=T0,随机产生初始状态 x = x 0 x=x_0 x=x0,令 k = 0 k=0 k=0
- 步骤2:如果不满足停止准则,重复以下过程
- 步骤2.1:执行以下过程
L
k
L_k
Lk次:
- 步骤2.1.1:从状态 x x x的领域解中随机选取新状态 x ′ x' x′;
- 步骤2.1.2:令 Δ = f ( x ′ ) − f ( x ) \Delta=f(x')-f(x) Δ=f(x′)−f(x);
- 步骤2.1.3:若 Δ ≤ 0 \Delta \leq 0 Δ≤0,则令 x = x ′ x=x' x=x′,否则以概率 e x p ( − Δ / T k ) exp(-\Delta/T_k) exp(−Δ/Tk)令 x = x ′ x=x' x=x′
- 步骤2.2:退温:令 k = k + 1 k=k+1 k=k+1,计算 T k = α T k − 1 T_k=\alpha T_{k-1} Tk=αTk−1,同时按规则更新 L k L_k Lk
- 步骤2.1:执行以下过程
L
k
L_k
Lk次:
- 步骤3:输出
x
x
x
注:其中步骤2.1.1为新解产生器,它从当前解的领域产生一个新的候选解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jk5m8Hmx-1582272268910)(模拟退火法流程图.jpg)]
- 模拟退火算法与传统的局域搜索算法(爬山法)的比较:
爬山法只接受比当前状态好的状态,而迷你退火法不但接受好的状态,而且以概率接受不好的状态,这在一定程度上避免了搜索停止在局部极小点。从理论上讲,模拟退火法能够收敛于全局最优解。
2.算法参数的确定
- 1.初始温度
T
0
T_0
T0
- 初始温度越大,获得高质量解的几率也越大,但花费的计算时间将延长,故,初始温度的选取应同时考虑优化质量与优化效率
- 1)Metropolis准则法
要使算法在开始时达到准平衡,应该让初始接受概率 P 0 P_0 P0接近于1。如果能够估算在初始状态下目标函数转换时的改变量 Δ f \Delta f Δf,则由Metropolis准则可知接收率为 P 0 = e x p ( − Δ f T 0 ) P_0=exp(-\frac{\Delta f}{T_0}) P0=exp(−T0Δf),则有初始温度为 T 0 = − Δ f l n P 0 T_0=-\frac{\Delta f}{lnP_0} T0=−lnP0Δf
例如,取接受率 P 0 = 0.9 P_0=0.9 P0=0.9,当 Δ f = 100 \Delta f=100 Δf=100时 T 0 > 949 T_0>949 T0>949 - 2)Kirkpatrick法
不是很懂,暂时不写了
- 冷却进度表
- 其由温度更新函数确定,定义了温度下降的方式
- 常用的温度冷却方式定义为 T k = α T k − 1 , k = 1 , 2 , … , K T_k=\alpha T_{k-1},k=1,2,\dots,K Tk=αTk−1,k=1,2,…,K式中, α \alpha α为预先给定的控制参数,其值小于但接近1;K为控制参数的总下降次数
- 另一种
T
k
+
1
=
T
0
K
−
k
k
,
k
=
1
,
2
,
…
,
K
T_{k+1}=T_0\frac{K-k}{k},k=1,2,\dots,K
Tk+1=T0kK−k,k=1,2,…,K可以看出,温度越低下降控制参数变化应越小
- Markov链长度
L
k
L_k
Lk
- 其控制在温度 T k T_k Tk下产生的候选解数目。要达到热平衡,Markov链应足够长。但试验表明,在控制参数T保持较小减少量的情况下,过长的Markov链无助于最终解质量的提高,而只会导致执行时间的无谓增加
- 选取原则:在控制参数T的下降函数确定后, L k L_k Lk应使得在控制参数的每一取值上都能恢复准平衡
- 常用方法:用一个常量L限制
L
k
L_k
Lk的值,则
L
k
L_k
Lk与控制参数
T
k
T_k
Tk的取值无关,对于一般组合优化问题,
L
k
L_k
Lk可取常量
- 停止准则
常用的选取停止准则的方法:- 温度降低到冷却阈值 T s T_s Ts以下
- 当前最好的解已经连续在若干降温状态没有得到进一步改善
- 降温总次数大于预设值K
的方法: - 温度降低到冷却阈值 T s T_s Ts以下
- 当前最好的解已经连续在若干降温状态没有得到进一步改善
- 降温总次数大于预设值K