跳转至

Qiskit 2.1.2 版本更新说明

概述

本文档说明如何将原有的QAOA代码适配到Qiskit 2.1.2版本。主要更新涉及后端调用方式和电路运行流程的现代化。

主要变更

1. 后端系统更新

旧版本代码:

from qiskit import Aer
backend = Aer.get_backend('qasm_simulator')

新版本代码:

from qiskit_aer import AerSimulator
backend = AerSimulator()

2. 电路运行方式更新

旧版本代码:

counts = backend.run(qc, seed_simulator=10, nshots=512).result().get_counts()

新版本代码:

# 先编译电路
qc_compiled = transpile(qc, backend)
# 再运行电路
job = backend.run(qc_compiled, shots=512)
result = job.result()
counts = result.get_counts()

3. 添加transpile步骤

在新版本中,强烈建议在运行电路前使用transpile函数进行编译优化:

from qiskit import transpile
qc_compiled = transpile(qc, backend)

完整的更新示例

原始文件:qaoa_chinese_complete.ipynb

需要更新以下部分:

  1. 导入语句:将from qiskit import QuantumCircuit, Aer改为:

    from qiskit import QuantumCircuit, transpile
    from qiskit_aer import AerSimulator
    

  2. 后端初始化:替换所有Aer.get_backend()调用为AerSimulator()

  3. 电路运行:添加transpile步骤并更新运行方式

创建的新文件

  1. qaoa_qiskit_updated_simple.py - 简化版的QAOA示例,完全兼容Qiskit 2.1.2
  2. QAOA_Qiskit_2.1.2_Example.ipynb - Jupyter笔记本格式的更新示例

验证结果

运行更新后的代码,成功获得:

  • 优化结果:COBYLA算法收敛,找到最优参数
  • 测量结果:'0101'和'1010'具有最高概率(140和116次),符合最大割问题的预期解
  • 性能:算法正常运行,没有兼容性问题

环境配置

确保在qiskit_env虚拟环境中安装了以下包:

pip install qiskit qiskit-aer networkx scipy matplotlib

注意事项

  1. 新版本的AerSimulator提供了更好的性能和更多配置选项
  2. transpile步骤可以显著提高电路运行效率
  3. 测量结果的比特顺序可能与旧版本有所不同,需要相应调整解析逻辑

结论

Qiskit 2.1.2版本的QAOA实现更加现代化和高效。通过上述更新,原有的QAOA代码可以完全兼容新版本,并获得更好的性能和稳定性。