You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qiskit Chemistry迁移至Qiskit Nature:Hamiltonian与TransformationType替代咨询

Qiskit Chemistry迁移至Qiskit Nature的VQE代码修改方案

核心迁移对应关系

  • qiskit.chemistry.core.Hamiltonian:无需直接导入,通过Qiskit Nature的问题类自动生成哈密顿量
  • qiskit.chemistry.core.TransformationType:替换为qiskit_nature.units.DistanceUnit
  • qiskit.chemistry.drivers.PySCFDriver:替换为qiskit_nature.second_q.drivers.PySCFDriver
  • qiskit.aqua模块(VQE、SLSQP等):迁移至qiskit.algorithms及子模块

修改后的完整代码

import numpy as np
from qiskit import Aer
from qiskit.algorithms import VQE
from qiskit.algorithms.optimizers import SLSQP
from qiskit.circuit.library import TwoLocal
from qiskit_nature.second_q.drivers import PySCFDriver
from qiskit_nature.units import DistanceUnit
from qiskit_nature.second_q.problems import ElectronicStructureProblem
from qiskit_nature.second_q.mappers import ParityMapper, QubitConverter

# Set the number of qubits and optimization parameters
depth = 3

# Set up the molecule and driver
molecule = 'H .0 .0 -{0}; H .0 .0 {0}'
distance = 0.74
# 替换原TransformationType.ANGSTROM为DistanceUnit.ANGSTROM
driver = PySCFDriver(
    atom=molecule.format(distance/2),
    unit=DistanceUnit.ANGSTROM,
    charge=0,
    spin=0,
    basis='sto3g'
)
# 生成电子结构问题,替代原qmolecule.get_molecular_hamiltonian()
problem = ElectronicStructureProblem(driver)
# 转换为量子比特哈密顿量
converter = QubitConverter(ParityMapper(), two_qubit_reduction=True)
hamiltonian = problem.second_q_ops()['ElectronicEnergy']
qubit_hamiltonian = converter.convert(hamiltonian)
n_qubits = qubit_hamiltonian.num_qubits

# Define the ansatz circuit
ansatz = TwoLocal(n_qubits, ['ry', 'rz'], 'cz', reps=depth)

# Define the optimizer
optimizer = SLSQP(maxiter=1000)

# Define the VQE algorithm(移除原QuantumInstance,直接用backend)
backend = Aer.get_backend('statevector_simulator')
vqe = VQE(ansatz, optimizer, quantum_instance=backend)

# Run the VQE algorithm
result = vqe.compute_minimum_eigenvalue(qubit_hamiltonian)

# 获取并打印基态能量
electronic_result = problem.interpret(result)
print('Ground state energy: ', electronic_result.total_energies[0].real)

关键修改说明

  1. 驱动与问题定义:用ElectronicStructureProblem封装驱动,替代原qmolecule的哈密顿量生成逻辑
  2. 哈密顿量转换:通过QubitConverter将第二量子化哈密顿量转为量子比特哈密顿量,支持Parity映射及两比特约简(对应原Chemistry的默认行为)
  3. 模块迁移:qiskit.aqua下的VQE、SLSQP等已迁移至qiskit.algorithms,无需再导入aqua_globals或QuantumInstance(直接传入backend即可)
  4. 结果解析:用problem.interpret()解析VQE结果,获取包含核排斥能的总能量(原代码默认包含该能量,迁移后需显式解析)

内容的提问来源于stack exchange,提问作者Kenson Wesley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:53:12