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 算法
335KB
8K SLoC
IsingMonteCarlo
lib.rs
:
qmc
是一个库,用于使用蒙特卡罗方法在晶格上模拟经典和量子伊辛系统。
sse库包含处理伊辛模型内置的类,以及处理任意相互作用的类。
它还提供了一些特性模块
- 使用
tempering
或parallel-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