模拟退火略谈

模拟退火算法(Simulate Anneal,SA)是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的最优解。模拟退火是由S.Kirkpatrick, C.D.Gelatt和M.P.Vecchi在1983年所发明的。V.Černý在1985年也独立发明此演算法。模拟退火算法是解决TSP问题的有效方法之一。
模拟退火的出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法是一种通用的优化算法,其物理退火过程由加温过程、等温过程、冷却过程这三部分组成。——百度百科

  • 核心:随机化,贪心
  • 算法流程:随机一个新解,当新解比旧解更优时,选择新解,当新解比旧解劣时,以一定概率选择新解,每次随机新解后降一次温,最后当温度小于一个临界值时,退出退火过程,就有很大概率找到了最优解

就像这样
在这里插入图片描述

选择劣解的概率

这里的概率计算公式如下
(至于为什么,问S.Kirkpatrick, C.D.Gelatt,M.P.Vecchi和V.Čern&yacute去)


p = p= p= e d e t l a t e m p e r a t u r e {e}^{\frac{detla}{temperature}} etemperaturedetla

temperature指当前退到的温度,detla是新解与旧解的差(小于零)
易得此值随着温度的降低而渐渐趋近于1
于是在程序中,我们如果将得到劣解是否接受的判定条件设为

e d e t l a t e m p e r a t u r e {e}^{\frac{detla}{temperature}} etemperaturedetla>rand()/RAND_MAX

由于0<rand()/RAND_MAX<=1且概率均等,那么随着温度的降低,不等号左侧,为一个底数为e的指数函数,由于指数分子无限趋近于0,故整个指数函数趋近于1,右侧等于[0,1]的概率均等,故条件满足的可能性就越小,选择较劣解的可能性就越小


一些其他的参数问题

1.上文提到的

  • T(temperature)
  • detla=s现-s原

2.其他必要的

  • eps(下限温度)
  • D(降温速率)

对于参数的设置,我们可以尝试一下手动二分,由于T,D与运行时间成正比,eps与运行时间成反比,故可以调整这三个参数,使保证精度的同时保证时间上限


应用

JSOI2004

code

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AndrewMe8211

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值