模拟退火算法
模拟退火算法源于模拟退火的原理。
〇、模拟退火的历史
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问题...