Simulated Annealing Algorithm
Simulated Annealing Algorithm
模拟退火算法
来源于固体退火原理
- 将固体加热至充分高,固体内部粒子随之变为无序状,内能 增加
- 再让固体徐徐冷却,内部例子随之有序
- 到达常温状态时,内能减为最小
用固体退火模拟组合优化问题
- 目标函数值
f
视为内能E
,控制参数t
视为温度T
- 由初始解
i
、控制参数初值t
开始,对当前解重复 产生新解->计算目标函数增量->接受或舍弃的迭代,并 逐步衰减t值 - 算法终止时,当前解即为所得近似最优解
- 目标函数值
退火过程由Cooling Schedule控制,包括控制参数初值t、衰减 因子$\Delta t$、迭代次数L、停止条件S
算法
- 初始化:初始温度$t_0$(充分大)、初始解$i_0$、迭代次数L
- 产生新解$i_1$,计算目标函数增量$\Delta f=f(i_1)-f(i)$
- 若$\Delta f<0$则接受$i_1$作为新解,否则以概率 $\exp^{\Delta f/f(i_0)}$接受$i_1$作为新解
- 若满足终止条件则算法结束
- 若干次新解都不被接受:当前解“能量”低
- 迭代次数达到上限
- 否则减小温度为$t_1$继续迭代
说明
解生成器:应该可以通过简单变换即可产生新解,便于减少每次 迭代计算新解耗时
- 比如对新解全部、部分元素进行置换、互换等
- 需要注意的是,这决定了新解的领域结构,对冷却的进度表 选取有影响
新解是否被接受采用的是Metropolis准则
模拟退火算法性质
- 与初值无关
- 具有渐进收敛性
- 具有并行性
- 在理论上被证明是以概率1收敛于全局最优解的算法
- 能够跳出局部最优解
应用
- VLSI:目前退火模拟算法的应用实例,几乎可以完成所有VLSI 设计工作
- 神经网络:模拟退火算法能够跳出局部最优解
- 图像处理:用于进行图像恢复工作
- 其他问题:还可以用于其他各种组合优化问题
Simulated Annealing Algorithm
https://xyy15926.github.io/Algorithm/Heuristic/simulated_anealing.html