模拟退火

现在有一个多峰函数,要求最小值。

温度为 \(T\) ,代表下一次会走的步长,每次以一定的衰减系数减小。

设初始温度为 \(T_0\) ,终止温度为 \(T_E\) ,衰减系数为 \(0.999\) (意为每次 \(T=T\times 0.999\)) 。

现在随机选择一个点,设 \(f(新点)-f(当前点)=\triangle E\)

则分两种情况。

  1. \(\triangle E\lt 0\) ,则跳到新点

  2. \(\triangle E\gt 0\) ,则以 \(e^{-\frac{\triangle E}{T}}\) 的概率跳到新点

(double)rand()/RAND_MAX 就是取 \(0\)\(1\) 之间的随机数。

posted @ 2022-03-24 21:26  yzh_Error404  阅读(17)  评论(0)    收藏  举报