美文网首页
第四章:经典搜索之外——退火算法

第四章:经典搜索之外——退火算法

作者: 上海王尔德 | 来源:发表于2016-07-22 05:56 被阅读64次

    英文名:Simulated annealing(刺激·退火)

    一个没有“下坡”的爬山算法是不完全的,因为我们可以预见它会掐在半山腰(局部最大值)。一个完全随机的爬山算法,正相反,它是完全的但是极端低效。所以,我们的目标就是开发一种在某些方面采用随机性,但又保证完全和高效的算法。

    模拟退火就是这样一种两者兼得的算法。退火(不是回火),作为一种金属处理工艺,就是说把金属或玻璃加热到高温后,逐渐降温,到达低能结晶态,用来加强硬度的方法。

    具体来讲,我们在初始时给定一个温度函数,然后让这个温度函数随着时间(aka迭代数)慢慢降低。我们也从当前状态的子状态中随机抽取一个,如果这个子状态把我们引向更高处,则它取代当前状态,继续迭代;如果子状态是个下坡,有一定几率我们仍然用它取代当前状态。下坡越大,几率越小;温度越高,几率越大。

    def Simulated-Annealing(problem, schedule) returns a solution state
      current = Make-Node(problem.initial_state)
      for t in range(1,+infinity):
        T = schedule(t)
        if T = 0: return current
        next = random-successor(current)
        delta = next.value - current.value
        if delta > 0: current = next
        else: current = next, with probability exp(delta/T)

    相关文章

      网友评论

          本文标题:第四章:经典搜索之外——退火算法

          本文链接:https://www.haomeiwen.com/subject/dxymjttx.html