码迷,mamicode.com
首页 > 编程语言 > 详细

模拟退火算法

时间:2015-08-02 18:08:33      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

  模拟退火算法源于模拟退火的原理。

〇、模拟退火的历史

  1953年,Metropolis提出重要性采样法,即以概率接受新

状态,称Metropolis准则,计算量相对Monte Carlo方法

显著减少。

??   1983年,Kirkpatrick等提出模拟退火算法,并将其应用

于组合优化问题的求解。

一、模拟退火的原理

  假设在状态xold时,系统受到某种扰动而使其状态变为xnew。与此相对应,系统的能量也从E(xold)变成E(xnew),系统由状态xold变为状态xnew的接受概率p:

二、模拟退火的算法流程

  1) 随机产生一个初始解x0,令xbest= x0 ,并计算目标函数值E(x0);

  2) 设置初始温度T(0)=To,迭代次数i = 1;

  3) Do while T(i) > Tmin

    1) for j = 1~k

    2) 对当前最优解xbest按照某一邻域函数,产生一新的解xnew。计算新的目标函数值E(xnew) ,并计算目标函数值的增量ΔE = E(xnew) - E(xbest) 。

    3) 如果ΔE <0,则xbest = xnew

    4) 如果ΔE >0,则p = exp(- ΔE /T(i));

      1) 如果c = random[0,1] < p, xbest = xnew; 否则xbest = xbest。

    5) End for

  4) i = i + 1;

  5) End Do

  6) 输出当前最优点,计算结束

图解:

技术分享

三、模拟退火的应用

  TSP问题...

模拟退火算法

标签:

原文地址:http://www.cnblogs.com/Wanggcong/p/4696267.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!