"活"的模拟退火算法

看到网上很多人只会用"死"的模拟退火算法,网上的资料也全是"死"的模拟退火算法,所以我来说一说"活"的模拟退火算法……


大家都知道算法步骤: 先取一个初始状态集合和一个足够大的温度T,若T没有降到Tmin,对于集合中的每个状态,求出它能扩展出的最优状态,若更优则替换原解,否则以e的ΔE/T次方的概率替换原解,取最优解作为答案
当具体到某个实际问题时,这样可能不能起到好的效果,不是每个问题都是让你"退火"的!!


我要说的是 "退火"的思想和本质!!
模拟退火算法的具有智能的地方是考虑了" 非更优解能扩展出更优解的概率",这种概率在"非退火"问题上未必是e的ΔE/T次方,未必随T升高而升高,随ΔE的绝对值的升高而降低,我们完全有权利改造这个概率函数,使得它能解决其他问题。


思考非更优解扩展出更优解的概率变化,与哪些量呈正相关,与哪些量呈负相关?
当概率与温度成正相关,与评价函数差的绝对值成负相关时,就和狭义的模拟退火算法一样,
否则可以自己设计概率函数,这是广义的模拟退火算法。
若此概率不和温度相关,就不要判温度了!
若非更优解扩展出更优解的概率是0,那就又可以 欢乐地爬山了。


同样地,算法终止条件也未必是温度降到了某个值, 要根据当前解为最优解的时机来考虑,甚至也可以搞一个概率,很随意的。。学东西不要学死了!!如果说的不对请轻喷... 


以上不是重点,下面才是重点,能解决很多几何问题的神器——变步长爬山!!很多情况下能替代模拟退火。。
更神的算法(很多人把它叫做模拟退火,这实际上不是模拟退火,而是变步长爬山……)
我们想象在一个三维的空间内,有一个山脉的地形图,有山峰和山谷,越高表示这个位置的值越优,
如果这个图中山峰非常密集,忽高忽低,乱七八糟,到处都是"尖塔"和"裂缝",就没什么启发信息了,别想用启发式搜索了!
当然这种情况很少见,一个问题中往往总会有些量是渐变的。。
否则可以直接搞多人变步长爬山,人数大概是山峰的个数*2(个人经验),
这样非常简单非常暴力,其AC率远远高于用不合理的概率函数的AC率……
个人认为,变步长爬山是先大步后小步,与模拟退火的先大概率接受后小概率接受有很大的内在联系。
如果是离散的,不知道这个状态扩展N次(步长)后的状态是什么,那就只能模拟退火了囧。。


至于遗传算法,个人认为适应度函数不是很好设计,在竞赛中实际应用也没有模拟退火多,
人工智能算法我强烈推荐A*、变步长爬山和模拟退火,其他的可以只做了解……
纯属个人见解。。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值