模拟退火算法的原理
http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html#!comments这篇博文讲的蛮好的,在这就不再累述了,只对具体算法中的基本概念进行较详细的解释
基本概念
- 目标函数
目标函数即为待优化的函数,与固体退火过程中的内能类比。在调用函数simulannealbnd来使用现成的工具包时,需要将目标函数编写为M文件或inline函数
需要注意的是,SAT是以求最小值为目标进行优化的。如果要求最大值,乘个-1就好了 温度
当前解 x 类比固体退火过程中的温度T 。温度一方面决定SA以多大的概率接受新解,另一方面,它也限制SA产生新解与当前解之间的距离,也即SA的搜索范围
以多大概率接受新解在后面的Meteopolis准则中会有具体介绍,而限制SA的搜索范围这点可以这么理解:
模拟退火算法是模拟固体的退火过程,实际过程中温度越高,单位时间内内能下降的就越快,对应的温度变化也就越大,而温度越低,单位时间内内能下降的就越慢,对应的温度变化也就越大。所以温度限制了SA的搜索范围退火进度表
退火进度表是指温度随着算法迭代的下降速度,退火过程越缓慢,SA找到全局最优解的机会就越大,对应的运行时间也会增加。退货进度表包括初始温度和温度更新函数等参数Meteopolis准则
以 xi 和 xi+1 代表旧解和新解,则SA接受新解的概率为
P=⎧⎩⎨