Monte Carlo Metropolis 方法 - 试步算法

计算科学 计算物理学 蒙特卡洛
2021-12-11 00:20:07

我正在研究磁化模拟并使用 Metropolis 方法编写算法。

我正在使用能量变化和玻尔兹曼分布,但是,我的问题是关于试验步骤。磁化的试验位置应该是完全随机的,还是应该是添加到旧磁化位置上的随机微分?

我的能量基本上取决于一个角度,所以,我的范围是 0 到 Pi,为了得到接近 50% 的拒绝,我在每一步中添加或减去大约 4 的 pi - 这太大了。如果我把它减少到相当小的东西,那么新旧能量概率之间的能量差异大约是 0.999 到 1.001。(这里我创建了一个随机的小角度,并从磁化矢量的当前角度中添加或减去它。)

1个回答

好吧,我想这个问题可能发生在计算科学和物理学中,这取决于物理学家或计算科学家的种类。

然而,对于您的回答,正如我看到的一些可靠的 MC 算法,我建议您将拒绝目标(或接受)作为常量放入您的代码中,并根据实际试用规模按比例改变您的试用规模。

我的意思是你计算拒绝率nrejectedntotal,将其与目标进行比较,并将您的试验规模更新为,比如说,类似±10%它的

δθnew=δθ±0.1δθ

请注意,如果试用版更大,您最终会得到更大的eΔU意味着更多的拒绝,所以检查±根据拒绝率明智地签名。同时验证ntotal仅考虑自上次更新以来记录的条目δθ. 这些东西应该收敛到一个解决方案,探索相空间的有用部分,并避免在较低温度下非常低的可能区域。