模拟退火

概念

模拟退火是随机化算法,可以用来解决一类不是单峰函数的问题。

其优于爬山算法的原因是其能通过接受当前最优解附近的非最优解,来跳出局部最优解。

对于新状态得到的解,若其更优则更新答案,否则以一定概率来判断是否接受新状态。

设温度为 \(T\),新状态和当前状态的能量差为 \(\Delta E(\Delta E \geqslant0)\),新状态得到的解不优,却仍接受新状态来状态转移的概率为:

\[\large P(\Delta E)=e^{\frac{-\Delta E}{T}} \]

具体退火时有三个参数,初始温度,降温系数,终止温度,每尝试进行一次转移,就让当前温度乘以降温系数,直到温度小于终止温度,退火就结束。

为了解的精确,可以进行多次退火。每次退火以过程中遇到的最优解作为最终结果。

应用

实现:[AHOI2014/JSOI2014]保龄球

[TJOI2010]分金币

posted @ 2020-08-17 21:43  lhm_liu  阅读(219)  评论(0编辑  收藏  举报