浅谈模拟退火
核心思想
模擬退火十分好寫,它的核心思想就是:
每一次降溫都可以從當前狀態轉移到另一種相近狀態(沒有嚴格定義,可以自己想產生相近解的方法)
如果那個相近狀態的答案更優,當然轉移到那種狀態!
但如果更劣,也需要一定的概率轉移到那種狀態(防止陷入局部最優解)
那個概率就是:
\[ P=e^{\frac{nowVal-nextVal}{T}} \]
這里的T就是當前溫度,Val是對應狀態的答案
要注意\(\frac{nowVal-nextVal}{T}\)是一個負值,因此必定有\(0<P<1\)
可以看出,當那種相近狀態越劣(\(nowVal-nextVal\)越小),就有越小的概率轉移到那種狀態
而當前溫度越低,也是越穩定的
(這里針對的是答案越小越優的題目)
參數設置
模擬退火是一個十分依賴參數的隨機化算法,大致有以下幾個參數
①初始溫度\(startT\)
②溫度變化率\(deltaT\)
③溫度下限\(lowT\)
④隨機種子\(seed\)
初始溫度大致可以設在100~10000,防止一開始活躍性太高,陷入太劣的解
溫度變化率宜設置在0.99~0.999
溫度下限可以很小,大概在1e-15~1e-10之間
至于\(seed\)...
大致流程
綜上,模擬退火的大致流程就是:
①初始化溫度
②產生相近狀態
③利用上述方法判斷是否轉移,并同時改變記錄的答案值
④降溫,goto ②
直到溫度低于下限結束
最后說一下,四個參數的調整對算法效率影響很大,可以自己做題體會一下
例題
提供幾道例題練手
[JSOI2004]平衡點
[NOIp提高組2017]寶藏
轉載于:https://www.cnblogs.com/ytxytx/p/9705916.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 如何把网址配置为http和https可以
- 下一篇: 平心静气