如何理解及運用王和朗道演算法(Wang and Landau algorithm)?
在alps中能找到相關代碼,具體明天看看論文回憶一下,來解釋一下。當年剛讀研究生的時候,研究過,後來不用忘得差不多。算是蒙特卡洛一個比較重要的進步。
題主問如何理解和運用,我也不知道是用在哪個方面,並且我也沒用過。。。我就說怎麼理解吧。
不知道題主是不是已經熟知蒙特卡洛方法的基本想法,如果需要我以後補充,Wang-Landau演算法的核心是計算態密度,不知題主有沒有手算過黑體輻射公式,實際上是類似的,把態密度算出來,其他所有的結果都有了。
一般而言,統計物理的問題是要計算配分函數
。
這個配分函數以Ising模型為例, ,可以認為是某一種自旋分布,那麼對所有可能的狀態求和就得到了配分函數。
當然也可以對能量進行求和把配分函數改成如下:
。
這裡的 就是態密度,對於Ising模型而言,能量離散分布,其含義就是能量為 的狀態一共有多少個。
其他的物理量都可以通過配分函數獲得,這是統計物理的基本內容。
那麼蒙特卡洛模擬的時候,就利用了上面的結果,因為只要知道配分函數,那麼任何一種狀態出現的概率就可以用下面的公式計算:
。
所以蒙特卡洛模擬中,只要取樣滿足上面的概率就可以了,具體細節好像 @霍開拓 最近寫了一個程序,你可以看看。
Wang-Landau演算法,不直接計算公式(3), 而是利用公式(2),當然結論理論上是一致的。那麼公式(2) 中唯一不知道的就是這個態密度了。那麼他們發明了一種方法來獲得這個結果。
大致的想法是這樣的:
首先不考慮溫度的影響,也就是指數因子我們先忽略。那麼在位形空間 均勻採樣的話,那麼那種能量的狀態出現可能性最大呢,當然就是態密度最大的。這類似與你在工科學校更容易碰見男生一樣。也就是說,如果以能量為橫軸,相應能量狀態數目為縱軸,畫另一個histogram。那麼分布應該是正比於態密度。
可是,位形空間的狀態非常非常的多,每一個能量對應的狀態數都非常大,如果單純用均勻隨機數採樣的話,是不可能遍歷所有的能量狀態,只會陷入到那些態密度最大的狀態中。
所以呢,作者想了一個雞賊的辦法,利用重要性採樣的方式,控制採樣的分布反比於態密度。這樣以來,程序就不會陷入到那些最可能出現的狀態,而是在不同的能量上都有樣本。並且採樣足夠多的時候,這些樣本的histogram是均勻分布的,每種能量狀態出現的可能是一樣的。
這一結果也恰好對應於態密度也收斂到他的真實狀態,所以作者設計了一個演算法,在上面採樣的過程中,把態密度給計算出來。細節就不說了,只解釋一下為啥用Ln函數。因為態密度通常非常非常的大,比方說 ,那麼直接用什麼精度都不行,所以只能去計算 。
只要態密度獲得,原則上問題就解決了。
貴乎竟然有這樣的問題
有幸在去年看過他們的一篇文章,但不是很懂,後來就撂下了。
這篇文章被引用1600+,是一項開創性工作。
--Efficient, Multiple-Range RandomWalk Algorithm to Calculate the Density of States--
《Physical Review Letters》, 2001, 86(10):2050-3
一、摘要
We present a new Monte Carlo algorithm that produces results of high accuracy with reduced simulational effort. Independent random walks are performed (concurrently or serially) in different, restricted ranges of energy, and the resultant density of states is modified continuously to produce locally flat histograms. This method permits us to directly access the free energy and entropy, is independent of temperature, and is efficient for the study of both 1st order and 2nd order phase transitions. It should also be useful for the study of complex systems with a rough energy landscape.
引言中的做後一段
In this paper, we introduce a new, general, efficient Monte Carlo (MC) algorithm that offers substantial advantages over existing approaches. Unlike conventional Monte Carlo methods that directly generate a canonical distribution at a given temperatur g(E)e^(-E/KBT), our approach is to estimate the density of states g(E) accurately via a random walk which produces a flat histogram in energy space.
大概是再說
在本文中,我們介紹一種新的,通用的,高效的蒙特卡羅(MC)演算法,它比現有的方法具有實質性的優勢。 與傳統的在給定溫度下直接生成典型分布的蒙特卡洛方法不同,我們的方法是通過隨機遊走精確地估計狀態密度 g(E)e^(-E/KBT) 在能量空間的flat histogram。
文章的最後又說
到目前為止我們討論的所有熱力學量都與能量直接相關。 也可以計算任何與能量不直接相關的量[16]。 隨機遊走不限於能量空間,我們的演算法可以應用於任何其他參數空間。 為了將我們的演算法應用於新系統,我們需要知道的唯一的事情是哈密爾頓量,然後該演算法可以被優化以估算在感興趣的溫度範圍內與態密度相關的特性。
Wang做出了這麼好的工作,最後去了工業界。我想Wang已經給了答案
看成了王朗演算法。。。鬼畜中毒太深==
圍觀題主,坐等答案
推薦閱讀:
※中醫黑們為什麼喜歡說概率?
※林卡爾天然鈣真的能提高生男孩么?如何說服身邊的人不要信這個?
※在北京大馬路上撞見自己某一個前男友/前女友的數學概率是多少?
※雙胞胎的基因有遺傳嗎?如果爸爸是雙胞胎,他的女兒懷上雙胞胎的概率有多少?
※如果生男生女概率相同,且堅持計劃生育政策,是否有可能以後中國只剩下一個姓?