智能算法-模拟退火算法

501 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

退火(什么是物理退火?)

退火是指将固体加热到足够高的温度,使分子呈随机排列状态,然后逐步降温使之冷却,最后分子以低能状态排列,固体达到某种稳定状态

模拟退火算法(Simulated Annealing)

  • 高温阶段优化搜寻单元更加活跃,容忍度大,即使是非优解也愿意接受尝试。(以一定概率接受差解,避免掉入局部最优解)。
  • 随着冷却的持续,搜寻单元活性降低,越来越抵触非优解(接受差解的概率减少)。
  • 在高温下,可接受与当前状态能量差较大的新状态。
  • 在低温下,只接受与挡前状态能量差较小的新状态。

换种通俗角度来讲:模拟退火算法就像是一群兔子想爬上最高的山顶,但是它们喝醉了,朝着四处随机跳跃很长时间,可能跳向高处,可能跳向低处。随着时间的增加,它们慢慢醒酒了,逐渐开始朝着高度方向跳去。

该方法增加了找到最优解的概率,并不一定能够找到最优解。

image.png

注意:

  • 初温越大,获得高质量解的机率越大,但花费较多的计算时间
  • 每次变化后的系统状态可作为下次变化的起点(更优的解或者以一定概率接受的差解)

状态产生函数

产生的候选解应遍布全部解空间,例如在TSP问题中,状态产生函数:

  1. 互换操作,随机交换两个城市的顺序
  2. 逆序操作,两个随机位置间的城市逆序
  3. 插入操作,随机选择某点插入某随机位置 因此,如何设计状态产生函数,就需要我们对问题有清晰的认识。

通常情况下,在当前状态的邻域结构内以一定概率方式(均匀分布、正态分布、指数分布等)产生

模拟退火算法的优点

  • 质量高;
  • 初值鲁棒性强;
  • 简单、通用、易实现。

模拟退火算法的缺点

由于要求较高的初始温度、较慢的降温速率、较低的终止温度,以及各温度下足够多次的抽样,因此优化过程较长。

算法流程图

image.png