' d Y: S3 f/ u$ G二. 模拟退火(SA,Simulated Annealing)思想 $ `8 K, a" ?7 m5 i N' i% \$ S5 ?* G9 }1 @& ]3 v, u$ A+ t
爬山法是完完全全的贪心法,每次都鼠目寸光的选择一个当前最优解,因此只能搜索到局部的最优值。模拟退火其实也是一种贪心算法,但是它的搜索过程引入了随机因素。模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以图1为例,模拟退火算法在搜索到局部最优解A后,会以一定的概率接受到E的移动。也许经过几次这样的不是局部最优的移动后会到达D点,于是就跳出了局部最大值A。 L" u# s S' a ]
. `- j! L0 O- o. ~$ f+ q c6 m
模拟退火算法描述:: Z& p5 h2 t& z N
8 {0 K6 B' d* H% u# { n' h 若J( Y(i+1) )>= J( Y(i) ) (即移动后得到更优解),则总是接受该移动! L$ g" B" S B: h7 E
. L/ u* E0 c9 y4 f; t3 v 若J( Y(i+1) )< J( Y(i) ) (即移动后的解比当前解要差),则以一定的概率接受移动,而且这个概率随着时间推移逐渐降低(逐渐降低才能趋向稳定)+ n. s# j" Q" U6 B$ `2 G0 ]4 H |6 S
+ v( ?7 U5 j; h2 V; L( b5 e" ~
这里的“一定的概率”的计算参考了金属冶炼的退火过程,这也是模拟退火算法名称的由来。 1 y' j* K$ e, }7 G* J8 [" y3 r6 E# M$ k0 X9 A- J0 E
根据热力学的原理,在温度为T时,出现能量差为dE的降温的概率为P(dE),表示为:) `- P; d- ^1 S( B5 `5 t