NOIP前急谈模拟退火
形象比喻:
模拟退火:兔子喝醉了。它随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。
基本要素:
初始温度\(T\),结束温度\(T_0\),降温速率\(base\),随机数rand.
因为我们希望的温度大的时候,勇于尝试新解,温度小的时候比较稳定,所以主要步骤如下:
1.更据T大小随机一个解.ans+(rand()*2-RAND_MAX)*t
2.算出此时答案res,并算出与之前答案的差值\(\Delta\)
3.如果\(\Delta\)小于0,即更优,替换ans和方案
4.否则当exp(-de/t)*RAND_MAX>rand()时候更改方案,但是不更改ans
可以用clock()卡时间.
祝大家NOIPrp++;

浙公网安备 33010602011771号