zoukankan      html  css  js  c++  java
  • 模拟退火

    模拟退火:

    一、原理

    是模拟统计物理中固体物质的结晶过程。模拟退火来自冶金学的专有名詞退火。退火是将材料加热后再经特定速率冷却,目的是增大晶粒的体积,並且減少晶格中的缺陷。材料中的原子原来会停留在使内能有局部最小值的位置,加热使能量变大,原子会离开原来位置,而随机在其他位置中移动。退火冷却时速度较慢,使得原子有较多可能可以找到内能比原先更低的位置。

    模拟退火的原理也和金属退火的原理近似:

    我们将热力学的理论套用到统计学上,将搜索空间内每一点想象成空气内的分子;分子的能量,就是它本身的动能;而搜索空间内的每一點,也像空气分子一样带有“能量”,以表示该点对命题的合適程度。算法先以搜索空间内一个任意点作起始:每一步先选择一个“邻居”,然后再计算从现有位置到达“邻居”的概率。

    在退火的过程中,如果搜索到好的解接受;否则,以一定的概率接受不好的解(即实现多样化或变异的思想),达到跳出局部最优解得目的

    二、模型

    第一步是由一个产生函数从当前解产生一个位于解空间的新解。


    第二步是计算与新解所对应的目标函数差。因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。


    第三步是判断新解是否被接受,判断的依据是一个接受准则,

    最常用的接受准则是Metropolis准则: 若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′作为新的当前解S。


    第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。

    三、接受概率

     

    解释:

    温度越高,选择 “不好的” 概率越大,温度变低,相当于“不好的”都尝试过了,概率变小

    朝闻道
  • 相关阅读:
    table操作:边框-斑马线-多表头-焦点高亮-自动求和
    Pygame
    Struts+HIbernate+Spring
    java 中hashcode 与 equals的关系
    Testcase的编写
    Struts+Hibernate+Spring常见问题
    我的思考
    JSP-------<%@ %>
    Python yield
    Python:itertools模块
  • 原文地址:https://www.cnblogs.com/wander-clouds/p/8446099.html
Copyright © 2011-2022 走看看