模擬退火演算法理論+Python解決函式極值+C++實現解決TSP問題
阿新 • • 發佈:2018-11-20
簡述
演算法設計課這周的作業:
趕緊寫了先,不然搞不完了。
文章目錄
演算法理論部分
- 用粒子的排列或相應的能量表示物體所處的狀態,在溫度T下,物體(系統)所處的狀態具有一定的隨機性。主流趨勢是系統向能量較低的狀態發展,但粒子的不規則熱運動妨礙系統準確落入低能狀態。
簡單來說就是,在溫度T下,
有兩種可能
- , 那沒得說有更好的肯定選更好的。
- ,這個時候我們也有一定的概率選這個。
概率為
其中K為玻爾茲曼常數(在這個演算法上,我們經常使用數值1代替這個)
- ,一般設定為
- ,我們在遞減的過程中,終止的T,一般認為是
變數簡單分析
不難看出,隨著T下降,這個狀態轉移的概率是下降的。
- 原因:
物理上解釋:
-
因為之前的這個轉移概率,認為是,在高溫情況下,分子可能會產生較為不穩定的隨機運動。且溫度越高,這個分子不規則運動的可能是更大的。這是在模擬這個過程。
-
所以,我們稱這個演算法為,模擬退火演算法
從狀態轉移概率到狀態概率
這個分析過程,其實是類似於推理馬爾可夫鏈的過程。
- 之前給給出的 其實是條件概率。
我們假設第n個狀態為 ,那麼現在就是考慮下一個狀態的概率。
我們用 ,表示第n個狀態。
用條件概率公式得到