• 欢迎访问交通人网站!
  • 分享一款小游戏:信任的进化
  •    发表于7年前 (2016-01-11)  数据挖掘 |   抢沙发  582 
    文章评分 0 次,平均分 0.0

    在介绍模拟退火前,需要首先介绍一下爬山算法。

    一. 爬山算法 ( Hill Climbing )

    爬山算法是一种简单的贪心搜索算法,其基本原理是:每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。

    爬山算法的实现很简单,当然缺点也很明显——容易陷入局部最优解,不一定能搜索到全局最优解。

    如下图所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不能得到更优的解。

    模拟退火算法入门

    爬山算法示意图

    二. 模拟退火(SA,Simulated Annealing)思想

    同样为贪心算法,模拟退火算法的不同在于,其在搜索过程引入了随机因素,以一定的概率来接受一个比当前解要差的解。因此,与爬山法相比,模拟退火是有可能会跳出局部的最优解,达到全局的最优解。

    仍以上图为例,模拟退火算法在搜索到局部最优解A后,会以一定的概率接受到E的移动。也许经过几次这样的不是局部最优的移动后会到达D点,于是就跳出了局部最大值A。

    算法描述:

    若\(J_{Y(i+1)} \geq J_{Y(i)}\),即移动后得到更优解,则总是接受该移动;

    若\(J_{Y(i+1)} < J_{Y(i)}\),即移动后的解比当前解要差,则以一定的概率接受移动,而且这个概率随着时间推移逐渐降低(逐渐降低才能趋向稳定)。

    这里的“一定的概率”的计算参考了金属冶炼的退火过程,这也是模拟退火算法名称的由来。

    根据热力学的原理,在温度为\(T\)时,出现能量差为\(dE\)的降温的概率为\(P(dE)\),表示为:

    \[P(dE)=e^{\frac{dE}{kT}}\]

    其中\(k\)是一个常数,且\(dE<0\)。

    这条公式说白了就是:温度越高,出现一次能量差为\(dE\)的降温的概率就越大;温度越低,则出现降温的概率就越小。

    又由于\(dE\)总是小于0(否则就不叫退火了),因此\(\frac{dE}{kT}<0\) ,所以\(P(dE)\)的函数取值范围是(0,1) 。

    随着温度T的降低,\(P(dE)\)会逐渐降低。

    我们将一次向较差解的移动看做一次温度跳变过程,我们以概率\(P(dE)\)来接受这样的移动。

    关于爬山算法与模拟退火,有一个有趣的比喻:

    爬山算法:兔子朝着比现在高的地方跳去。它找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山算法,它不能保证局部最优值就是全局最优值。

    模拟退火:兔子喝醉了。它随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。

    下面给出模拟退火的伪代码表示。

    三. 模拟退火算法伪代码

    四. 算法评价

    模拟退火算法是一种随机算法,并不一定能找到全局的最优解,可以比较快的找到问题的近似最优解。 如果参数设置得当,模拟退火算法搜索效率比穷举法要高。

    参考:博客园·苍梧:大白话解析模拟退火算法

    打赏
    微信
    支付宝
    微信二维码图片

    微信 扫描二维码打赏

    支付宝二维码图片

    支付宝 扫描二维码打赏

     

    除特别注明外,本站所有文章均为交通人原创,转载请注明出处来自http://www.hijtr.com/a-brief-introduction-to-simulated-annealing/

    交通人博客是交通人工作室(JTR Studio)建立的交通人系列网站之一,是交通人工作室的主阵地,旨在整合和分享交通行业相关资讯,具体包括但不限于行业新闻、行业动态,以及行业相关规范、书籍、报告和软件等资源。

    发表评论

    表情 格式

    *

    暂无评论

    
    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享