47个稳定版本

2.20.0 2021年10月21日
2.19.2 2021年7月19日
2.19.1 2021年6月23日
2.16.3 2021年3月30日
2.10.1 2020年11月27日

#852 in 算法

MIT许可证

335KB
8K SLoC

IsingMonteCarlo


lib.rs:

qmc 是一个库,用于使用蒙特卡罗方法在晶格上模拟经典和量子伊辛系统。

sse库包含处理伊辛模型内置的类,以及处理任意相互作用的类。

它还提供了一些特性模块

  • 使用 temperingparallel-tempering 功能门实现的并行退火系统。
  • 在变量、键或任意值上执行自相关计算:使用 autocorrelations
  • 使用 serialize 功能通过serde进行图序列化。

基本量子伊辛示例

use qmc::sse::*;
use rand::prelude::*;

// H = J_ij s_i s_j
let edges = vec![
  ((0, 1), -1.0), // ((i, j), J)
  ((1, 2), 1.0),
  ((2, 3), 1.0),
  ((3, 0), 1.0)
];
let transverse = 1.0;
let longitudinal = 0.0;
let beta = 1.0;

// Make an ising model using default system prng.
let rng = rand::thread_rng();
let mut g = DefaultQmcIsingGraph::<ThreadRng>::new_with_rng(edges, transverse, longitudinal, 3, rng, None);

// Take timesteps
g.timesteps(1000, beta);

// Take timesteps and sample states (as Vec<Vec<bool>>).
let (state, average_energy) = g.timesteps_sample(1000, beta, None);

依赖项

~0.3–1.6MB
~31K SLoC