1个不稳定版本

0.1.0 2023年4月28日

#473机器学习

自定义许可

17KB
447

ThRust

ThRust是一个Rust包,它提供了一个热力学和概率计算的框架。此包目前支持以下功能

  • 基本pbit门:COPYNOTANDOR
  • 基本的p-circuit编译和可组合性。
  • 通过马尔可夫链蒙特卡洛采样进行p-circuit模拟。

教程

GridPbit用于构建二维晶格。

let p0 = GridPbit::new(0, 0);
let p1 = GridPbit::new(0, 1);

该结构可以用以下方式可视化

Pbits可以用作概率自旋逻辑(PSL)门的输入

let cp0 = Copy::new(p0, p1);

一组PSL门可以用来构建p-circuit

let circuit = Circuit::new();
circuit.append(Box::new(cp0));
circuit.compile();

或者,可以从PSL门的向量中创建电路

let circuit = Circuit::from_vector(vec![Box::new(cp0)]);
circuit.compile();

最后,创建一个新的模拟器,通过马尔可夫链蒙特卡洛找到基态配置

let mut sim = MCMC::new(circuit);
sim.run();

可组合性

ThRust还实现了基本的p-circuit可组合性。例如,以下是一个双门p-circuit的示例

let p1 = GridPbit::new(0, 0);
let p2 = GridPbit::new(0, 1);
let p3 = GridPbit::new(1, 0);
let p4 = GridPbit::new(2, 0);
let p5 = GridPbit::new(2, 1);

let mut circuit = Circuit::new();
circuit.append(Box::new(And::new(p1, p2, p3)));
circuit.append(Box::new(Or::new(p3, p4, p5)));
circuit.compile();

let mut sim = MCMC::new(circuit);
sim.run();

未来添加功能

要实现的功能列表

  • 非交集电路的电路编译
  • 更健壮的电路编译算法
  • 更好的绘图实现,具有更多选项
  • 计算并报告可观察量,包括配置能量
  • 强制连接约束
  • 编译适用于FPGA硬件实现的代码

参考文献

更多关于概率计算的参考资料。

  1. 热力学AI和涨落前沿
  2. 概率自旋逻辑的p-Bits
  3. 使用稀疏伊辛机器的大规模并行概率计算

引用

如果您使用此仓库,请引用!

许可

查看LICENSE文件。

依赖项

~17MB
~163K SLoC