一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情。
退火(什么是物理退火?)
退火是指将固体加热到足够高的温度,使分子呈随机排列状态,然后逐步降温使之冷却,最后分子以低能状态排列,固体达到某种稳定状态。
模拟退火算法(Simulated Annealing)
- 高温阶段优化搜寻单元更加活跃,容忍度大,即使是非优解也愿意接受尝试。(以一定概率接受差解,避免掉入局部最优解)。
- 随着冷却的持续,搜寻单元活性降低,越来越抵触非优解(接受差解的概率减少)。
- 在高温下,可接受与当前状态能量差较大的新状态。
- 在低温下,只接受与挡前状态能量差较小的新状态。
换种通俗角度来讲:模拟退火算法就像是一群兔子想爬上最高的山顶,但是它们喝醉了,朝着四处随机跳跃很长时间,可能跳向高处,可能跳向低处。随着时间的增加,它们慢慢醒酒了,逐渐开始朝着高度方向跳去。
该方法增加了找到最优解的概率,并不一定能够找到最优解。
注意:
- 初温越大,获得高质量解的机率越大,但花费较多的计算时间
- 每次变化后的系统状态可作为下次变化的起点(更优的解或者以一定概率接受的差解)
状态产生函数
产生的候选解应遍布全部解空间,例如在TSP问题中,状态产生函数:
- 互换操作,随机交换两个城市的顺序
- 逆序操作,两个随机位置间的城市逆序
- 插入操作,随机选择某点插入某随机位置 因此,如何设计状态产生函数,就需要我们对问题有清晰的认识。
通常情况下,在当前状态的邻域结构内以一定概率方式(均匀分布、正态分布、指数分布等)产生
模拟退火算法的优点
- 质量高;
- 初值鲁棒性强;
- 简单、通用、易实现。
模拟退火算法的缺点
由于要求较高的初始温度、较慢的降温速率、较低的终止温度,以及各温度下足够多次的抽样,因此优化过程较长。