QuOCS(量子最优控制套件)库
项目描述
优化库
QuOCS(Quantum Optimal Control Suite)是一个 python 软件包,用于基于模型和实验的量子过程优化。它使用优秀的 Numpy 和 Scipy 包作为数字后端。QuOCS 旨在提供一个用户友好的界面来解决优化问题。多种流行的最优控制算法可供选择:
- GRAPE(梯度上升脉冲工程)算法
- dCRAB(修整切碎随机基)算法
- AD-GRAPE(自动微分)算法
- 直接搜索算法,即 Nelder Mead、CMA-ES...
QuOCS 是开源的,其界面结构允许用户友好的可定制性(参见定制部分)。它可以在所有基于 Unix 的平台和 Windows 上使用。
安装
QuOCS 可在pip. 您可以通过执行安装 QuOCS
pip install quocs-lib
要求是:
- 设置工具 >= 44.0.0
- numpy >= 1.19.1
- scipy >= 1.5.1
- 如果要使用 AD 算法,则需要安装JAX(Autograd 和 XLA)。
可编辑模式
如果要在 QuOCS 中自定义算法和基础(请参阅自定义),则必须以可编辑模式安装包。您可以使用以下命令轻松完成此操作:
git clone https://github.com/Quantum-OCS/QuOCS.git
cd QuOCS
pip install -e .
文档
您可以在此处找到最新的开发文档。
提供了一系列演示笔记本,其中演示了 QuOCS 的众多功能中的一些。这些存储在 GitHub 上的QuOCS/QuOCS-jupyternotebooks 存储库中。
使用示例
使用 QuOCS 既直观又简单。主要步骤是:
-
创建并加载优化字典。此 json 文件包含所有优化设置(例如,请参阅此文件)。
from quocslib.utils.inputoutput import readjson optimization_dictionary = readjson("opt_dictionary.json"))
-
创建优点图对象。这是一个包含要优化的物理问题的类的实例。在下面,您可以看到如何定义此类的示例。的输入和输出
get_FoM不应该改变。from quocslib.utils.AbstractFoM import AbstractFoM # Define problem class class OneQubit(AbstractFoM): def __init__(self, args_dict:dict = None): """ Initialize the dynamics variables""" if args_dict is None: args_dict = {} ... def get_FoM(self, pulses: list = [], parameters: list = [], timegrids: list = [] ) -> dict: # Compute the dynamics and FoM ... return {"FoM": fidelity} # Create Figure of Merit object FoM_object = OneQubit()
-
通过使用上传的优化字典和 FoM 对象对其进行初始化来定义优化器。之后可以运行执行。
from quocslib.Optimizer import Optimizer # Define Optimizer optimization_obj = Optimizer(optimization_dictionary, FoM_object) # Execute the optimization optimization_obj.execute()
QuOCS/QuOCS-jupyternotebooks 存储库或测试文件夹中提供了完整的示例。
贡献
您想实现一种新算法,还是想在 QuOCS 中拥有一些很酷的新功能?欢迎您为 QuOCS 的发展做出贡献!您可以通过分叉此存储库并发送拉取请求或在问题页面提交错误报告来完成此操作。所有代码贡献都在文档的贡献者部分中得到确认。谢谢您的合作!
引用 QuOCS
如果您在研究中使用 QuOCS,请在此处引用原始 QuOCS 论文。