精華區beta ask-why 關於我們 聯絡資訊
※ 引述《bingoabingo (狗強者)》之銘言: : 演算法中有一個步驟是 : 把值帶入一個式子exp{(Ei-Ej)/t} : 然後產生一個U(0,1)來比大小 : 我想請問這樣做的原理是啥 你說的是在 Simulated Annealing 中提到的Metropolis Monte Carlo procedure吧 SA的精神就是為了避免 讓找到的解卡在local minima cost 所以設計了一套機制 來逃離這個local minima。 當你用某種方法找的的組態 cost 比本來的小時,就接受這個組態 但萬一找到的組態cost比原本的高,也不一定會放棄這個組態 Metropolis Monte Carlo procedure 就是提供一個簡單的程序 來求出接受這個組態的機率。 簡單的說,他讓你在系統溫度高(式子裡面的t)時,較易接受大的cost增加量 而當溫度低的時候(代表SA程序已經進入尾聲)高的cost就很難再爬上去 cost就是你的Ei-Ej 當Ei-Ej > 0 的時候 演算法就直接接受這個組態,進入下一個iteration 當Ei-Ej < 0 (代表後面的組態cost比較大)時 演算法決定採用Ej這個組態的機率 就是根據exp{(Ei-Ej)/t}這個式子(此值介於0和1之間)來決定 若|Ei-Ej|的值越大,接受的機率就越小 而在相同的|Ei-Ej|情況之下,t越小 接受的機率也越小 這代表在高溫的狀態下 往上爬比較容易 等到冷掉了(t很小)就不容易往上爬了 覺得自己解釋的很差 直接去看 http://www.internetcad.com/thesis/annealing.pdf 的2.1後半段 或許會比較清楚 在google找到的 -- 生物多樣性之所以重要,就在於我們不知道為什麼重要。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.166.66
wmn:寫得很好呀~~ 218.171.9.36 07/16