【基于随机化的非确定性算法】模拟退火学习笔记

来源:互联网 发布:rdp端口号 编辑:程序博客网 时间:2024/05/06 20:03

暑假zky学长讲了模拟退火,现在正式来更一发学习笔记.
这次不口胡直接正文!

—————————————– > w < 线 割 分 是 我 —————————————————

模拟退火(Simulated Annealing,简称SA)是一种通用概率算法,用来在一个大的搜寻空间内找寻命题的最优解。

这是小学生百科给的定义.
然后后面扯了一大堆什么和冶金学相关…
我觉得小学生百科说的东西都并没有什么卵用…

一句话概括:其实模拟退火就是随机化的贪心.
有一种贪心算法叫爬山算法.
我们把答案数值的分布画出图像,可以看出是连绵不断的山峰的形状.
爬山算法就是在一个点单纯的选择两边的某个更优解,然后直到走到一个山峰.
很显然这样会陷入局部最优解而得不到全局最优解.

那么模拟退火就借助随机化的手段,每次我们面临更优解和较劣解的选择时并不会直接选择最优解,而是会以一定概率来接受那个较劣解,这样就可以跳出局部最优解而访问到全局最优解.
这个概率在模拟退火中叫做“温度”.就像冶金一样,这个概率随着算法的运行是不断降低的.大概是随着算法的运行每次乘一个rate(通常是0.99,0.98,0.97…).
写模拟退火的时候最痛苦的就是调这个rate(据说)

算法的初始温度设定应当足够大.
需要注意的是:对于新产生的解,如果它更优,那么算法是一定接受这个解的,只是对于较劣解才会使用概率.

最后当这个概率小于一定值,我们就退出算法,认为当前解就是最优解.

泥问我这东西的正确性和复杂度?
我都不知道啊QAQ

0 0