Qiskit Optimization:一个用于量子计算优化应用的库
项目描述
Qiskit Optimization
Qiskit Optimization 是一个开源框架,涵盖了从优化问题的高级建模,到自动将问题转换为不同所需表示的全过程,再到一套易于使用的量子优化算法,这些算法可以运行在经典模拟器上,也可以通过Qiskit在真实量子设备上运行。
优化模块通过使用docplex,使优化问题的建模变得简单、高效。它提供了一个统一的接口,以及不同问题表示形式之间的自动转换,允许用户使用大量算法解决问题,从变分量子算法,如量子近似优化算法QAOA,到使用GroverOptimizer的Grover自适应搜索,利用由Qiskit算法提供的基本算法。此外,优化模块的模块化设计使其易于扩展,并促进了新算法的快速开发和测试。还提供了兼容的经典优化器,用于测试、验证和基准测试。
安装
我们鼓励您通过pip工具(一个Python包管理器)安装Qiskit优化。
pip install qiskit-optimization
pip将自动处理所有依赖项,并且您将始终安装最新(且经过良好测试)的版本。
如果您想尝试在官方发布之前尝试功能,或者如果您想为优化做出贡献,那么您可以安装源代码。为此,请遵循文档中的说明。
可选安装
-
IBM CPLEX可以使用命令
pip install 'qiskit-optimization[cplex]'
安装,以启用读取LP
文件和使用CplexOptimizer
,它是cplex.Cplex
的包装器。CPLEX是一个独立的包,其Python版本的支持独立于Qiskit优化,因此,如果尚无兼容的CPLEX版本,此CPLEX命令将不会产生影响。 -
CVXPY可以使用命令
pip install 'qiskit-optimization[cvx]'
安装。安装CVXPY将启用使用Goemans-Williamson算法作为优化器GoemansWilliamsonOptimizer
。 -
Matplotlib可以使用命令
pip install 'qiskit-optimization[matplotlib]'
安装。安装Matplotlib将启用在图优化应用程序类中使用draw
方法。 -
Gurobipy可以使用命令
pip install 'qiskit-optimization[gurobi]'
安装。安装Gurobipy将启用使用GurobiOptimizer。
在Qiskit中创建您的第一个优化编程实验
现在,Qiskit优化已安装,是时候开始使用优化模块了。让我们尝试一个优化实验来计算最大切割问题的解。最大切割问题可以表示为二次规划,可以使用Qiskit中的许多不同算法来求解。在此示例中,使用了MinimumEigenOptimizer与量子近似优化算法(QAOA)结合作为最小特征值求解程序。
from docplex.mp.model import Model
from qiskit_optimization.algorithms import MinimumEigenOptimizer
from qiskit_optimization.translators import from_docplex_mp
from qiskit.primitives import Sampler
from qiskit_algorithms.utils import algorithm_globals
from qiskit_algorithms import QAOA
from qiskit_algorithms.optimizers import SPSA
# Generate a graph of 4 nodes
n = 4
edges = [(0, 1, 1.0), (0, 2, 1.0), (0, 3, 1.0), (1, 2, 1.0), (2, 3, 1.0)] # (node_i, node_j, weight)
# Formulate the problem as a Docplex model
model = Model()
# Create n binary variables
x = model.binary_var_list(n)
# Define the objective function to be maximized
model.maximize(model.sum(w * x[i] * (1 - x[j]) + w * (1 - x[i]) * x[j] for i, j, w in edges))
# Fix node 0 to be 1 to break the symmetry of the max-cut solution
model.add(x[0] == 1)
# Convert the Docplex model into a `QuadraticProgram` object
problem = from_docplex_mp(model)
# Run quantum algorithm QAOA on qasm simulator
seed = 1234
algorithm_globals.random_seed = seed
spsa = SPSA(maxiter=250)
sampler = Sampler()
qaoa = QAOA(sampler=sampler, optimizer=spsa, reps=5)
algorithm = MinimumEigenOptimizer(qaoa)
result = algorithm.solve(problem)
print(result.prettyprint()) # prints solution, x=[1, 0, 1, 0], the cost, fval=4
更多示例
学习路径笔记本可以在文档的优化教程部分找到,这是一个很好的开始。
贡献指南
如果您想为Qiskit做出贡献,请查看我们的贡献指南。此项目遵循Qiskit的行为准则。通过参与,您应遵守此准则。
我们使用GitHub问题来跟踪请求和错误。请加入Qiskit Slack社区进行讨论和简单问题。对于更适合在论坛中提出的问题,我们在Stack Overflow中使用Qiskit
标签。
作者和引用
优化是由一群研究人员的集体工作所启发、撰写和实现的。优化在众多人士的帮助和努力下不断成长,这些人以不同的层次为项目做出贡献。[如果您使用Qiskit,请根据提供的BibTeX文件进行引用。](https://github.com/qiskit-community/qiskit-optimization/graphs/contributors)
许可证
本项目使用Apache License 2.0。
项目详情
下载文件
下载适合您平台的应用文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。
源代码发行版
构建发行版
qiskit-optimization-0.6.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0ad8c2bc83fe80657c788b5f282ce4055d0ec005c4876789e5069499ee3c00c0 |
|
MD5 | bef7547ff3ba5a216e7b06271d63daf4 |
|
BLAKE2b-256 | 806330ae1aa61c407ccd7f2a1499884653cf6be87fd4a216013c226273796a8f |
qiskit_optimization-0.6.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3f09f31289dfef66bbbb03b782a94d88a4ba5681c728b4b8e96884de5fc83879 |
|
MD5 | 70a15c5d1bdf0bf4de64783f596340e8 |
|
BLAKE2b-256 | a7677669e6ad0b41b1e4ab79b592a4f1de748cac946169f5409e7a9f4bafef10 |