跳至内容

团簇更新

在系统的临界温度 TcT_c 附近,系统表现出长程关联,由于临界慢化,局域更新方法变得低效。在模拟过程中,局域更新的提议总是被拒绝,系统似乎被困在某个特定的状态构型中。团簇更新算法通过在一步之内翻转大的自旋团簇来解决这一问题,使系统能够更有效地探索构型空间。

Wolff 算法

Wolff 算法是一种团簇更新方法,旨在克服伊辛模型中的临界慢化。它根据自旋的取向构建自旋团簇,并将其整体翻转,从而保证在临界温度附近的高效采样。

Wolff 算法的关键步骤:

  1. 选择种子自旋:

    • 从晶格中随机选择一个种子自旋 sizs_i^z。
  2. 构建团簇:

    • 对种子自旋的每个近邻 sjzs_j^z,若 sjz=sizs_j^z = s_i^z,则以如下概率将其加入团簇: Padd=1−e−2βJ, P_{\text{add}} = 1 - e^{-2 \beta J}, 该概率依赖于温度和相互作用强度 JJ。
  3. 翻转团簇:

    • 团簇构建完成后,翻转团簇中的所有自旋(即对团簇中所有自旋执行 siz→−sizs_i^z \to -s_i^z)。
  4. 重复:

    • 将该过程重复许多个蒙特卡洛步,以保证对构型空间的充分采样。

Wolff 算法的优点:

  • 高效:Wolff 算法通过同时翻转大的自旋团簇,显著减轻了临界慢化。
  • 细致平衡:该算法满足细致平衡,保证系统向正确的平衡分布演化。
  • 无需调参:与 Metropolis-Hastings 算法不同,Wolff 算法不需要调节步长之类的参数。

Wang-Landau 算法

Wang-Landau 算法是一种直接估计系统态密度 g(E)g(E) 的蒙特卡洛方法,从而可以在很宽的能量和温度范围内计算热力学量。它对于具有复杂能量景观的系统特别有用。

Wang-Landau 算法的关键步骤:

  1. 初始化态密度:

    • 从态密度 g(E)g(E) 的一个粗略估计开始,通常对所有能量都设为 11。
  2. 在能量空间中进行随机游走:

    • 使用蒙特卡洛过程(例如 Metropolis 或 Wolff 更新)探索能量空间。以如下概率接受移动: PE1→E2=min⁡(1,g(E1)g(E2)). P_{E_1 \to E_2} = \min\left(1, \frac{g(E_1)}{g(E_2)}\right).
  3. 更新态密度:

    • 每次移动之后,更新态密度: g(E)→g(E)⋅f, g(E) \to g(E) \cdot f, 其中 f>1f > 1 是修正因子(初始时 f=ef = e)。
  4. 改进估计:

    • 重复该过程,并逐步减小修正因子 ff(例如 f→ff \to \sqrt{f}),直到 g(E)g(E) 收敛到真实的态密度。
  5. 计算热力学量:

    • 一旦得到 g(E)g(E),就可以计算配分函数、自由能和比热等热力学量。

Wang-Landau 算法的优点:

  • 直接估计 g(E)g(E):该算法提供了一种直接计算态密度的方法,从而可以在很宽的温度范围内研究热力学性质。
  • 高效:Wang-Landau 算法对于具有复杂能量景观的系统特别有效,而传统方法在这类系统上可能会遇到困难。
  • 无需先验知识:该算法不需要事先了解系统的能量分布。