1.模拟退火法简介
模拟退火法是一种状态空间的局部搜索算法,它属于比较通用的寻找最优解的算法。
模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。
2.模拟退火法算法描述
function Simulated-Annealing(problem, schedule) returns a solution state
inputs: problem, a problem schedule, a mapping from time to “temperature”
local variables: current, a node next, a node T, a “temperature” controlling prob. of downward steps
current←Make-Node(Initial-State[problem])
for t← 1 to ∞ do
T←schedule[t]
if T = 0 then return current
next←a randomly selected successor of current
ΔE←Value[next] – Value[current]
if ΔE > 0 then current←next
else current←next only with probability p
注:
①p = eΔE/T
3.模拟退火法的优势
模拟退火算法的主要优点之一就是能以一定的概率接受目标函数值不太好的状态, 这使得该算法即便落入局部最优的陷阱中,理论上经过足够长的时间也可以跳出局部最优
4.模拟退火法初始温度的重要性
由模拟退火法的优势可以知道,模拟退火算法相对于爬山法来说,它可以从局部最优的陷阱中走出来,形象点说就是它可以“智能地下山”。从算法描述可以看出,该算法由一个概率决定该算法是否会选择”下山”, 这个概率就是p= eΔE/T , T为当前的温度,因此选择一个退火策略很重要。退火策略一般是设定一个温度初始值,然后根据实际情景设计迭代次数进行温度下降,当迭代满足次数时候,该算法就会终止。因此对于模拟退火法来说,合理设计一个初始温度值很重要,因为温度它影响着选择”下山”的概率,如果概率不合理,模拟退火算法可能从一个局部最优解走不出来,得不到全局最优解。
5.模拟退火法初始温度值的计算方法
从google学术中找到关于模拟退火法的论文,它们多数都是优化退火策略的研究。其中一篇论文(作者是Hajek), 他提出要保证找到全局最优解所需要的迭代次数是很多的。在迭代的过程中,从一个状态i到一个状态j的转换概率可以表示如下:
Pij