这是之前做的一篇报告,算法来自经典模拟算法。
我们都知道 物体是由微观分子或者原子组成的,在此次算法讨论中,我们统一理解为分子。
物体表现是由微观分子排列决定的,所以有人研究了一下他们之间的关系:
在温度T,分子排布状态r满足Boltzmann概率分布:
(1)在同一个温度,分子停留在能量小状态的概率大于停留在能量大状态的概率
(2)温度越高,不同能量状态对应的概率相差越小;温度足够高时,各状态对应概率基本相同。
(3)随着温度的下降,能量最低状态对应概率越来越大;温度趋于时,其状态趋于1
既然已经有了理论,我们找一找工业上的应用
这里要说明的是,工业上的退火和淬火是不一样的,简单来说,淬火是迅速降温,退火是或缓慢降温。
产品有什么区别呢? 退火得到韧性好的,淬火得到硬度强的。
好了,截至现在,我们带出了退火的概念,现在来看看怎么移植到算法上去。
最经典的旅行商问题,实例如下图:
加入我们要走遍那么多城市,该怎么规划路线
有两种解决方法:
1,穷举法,就是列举出所有的可能性,就能够找到最优解。
2,寻找相似问题,看相似问题是如何解,然后移植过来。
穷举法显然太累。
我们找相似:
从这张图能够看出,条件类似,要求的结果类似,所以高兴一下,按理说问题就要解决了
继续高兴一下,看蓝色字体,理论中的解决方法出来了
不能高兴的太早,嘴上说和实际做还是有很大区别,这里最主要的因素就在于抽样过程
,因为其他的三个比较容易实现,设定初温就是设定一个数,控制参数下降,那就是让数
字缓慢变化,以及目标函数我们是有的。
上图就是我们要解决抽样问题的一个方法,不是抽样吗,我们这样来抽。
为什么这么抽样呢?看下图,因为有条件的选择接受可以跳出局部最优解啊
再来看看下面这张图,四个”必备“因素已经有了,我们就可以写代码了。
写代码之前看看算法流程
我们这里不演示代码的运行,在各大开源网站都有可以参考的代码,大家可以去看。如有
需要,可以后台找我要我用的代码。
写完了代码,运行过后,我们对算法进行回顾
此算法应用也很广
上面对算法的评价中说到,参数控制问题,已经有一批研究者开始研究,并且进行了改进,目前对于模拟退火算法的改进集中在以下几个方面:
刚开始写算法分析以及介绍,还请多多指正。需要PPT的同学后台联系作者。
注:图片来自作者PPT截图,部分图片来自书籍或者网页,如有侵权,请联系管理员。
领取专属 10元无门槛券
私享最新 技术干货