mindquantum.simulator.mqchem.prepare_uccsd_vqe
- mindquantum.simulator.mqchem.prepare_uccsd_vqe(molecular, threshold: float = 1e-6)[source]
Prepare all components for a UCCSD-VQE simulation with the MQChemSimulator.
This factory function streamlines the setup for a VQE simulation by:
Generating all singlet UCCSD excitation operators using :function:`~.algorithm.nisq.chem.uccsd_singlet_generator`.
Extracting the corresponding amplitudes from a pre-computed CCSD calculation included in the molecular data.
Filtering excitations based on their CCSD amplitudes via the threshold.
Constructing a parameterized UCCSD ansatz circuit using
UCCExcitationGate
.Creating a
CIHamiltonian
for expectation evaluation.Returning all necessary components to run a VQE experiment.
- Parameters
molecular (openfermion.MolecularData) – Molecular data object that must contain CCSD calculation results.
threshold (float) – The threshold for CCSD amplitudes. Excitations with amplitudes below this value will be discarded. Default:
1e-6
.
- Returns
hamiltonian (mqchem.CIHamiltonian), The CI-space Hamiltonian.
ansatz_circuit (Circuit), The parameterized UCCSD ansatz circuit.
initial_amplitudes (numpy.ndarray), The CCSD amplitudes corresponding to the parameters in ansatz_circuit, suitable as an initial guess for an optimizer.
Examples
>>> from openfermionpyscf import run_pyscf >>> from openfermion import MolecularData >>> from scipy.optimize import minimize >>> from mindquantum.simulator import mqchem >>> >>> molecule = MolecularData([("H", (i, 0, 0)) for i in range(6)], 'sto-3g', 1, 0) >>> mol = run_pyscf(molecule, run_ccsd=True) >>> hamiltonian, ansatz_circuit, initial_amplitudes = mqchem.prepare_uccsd_vqe(mol, 1e-3) >>> >>> simulator = mqchem.MQChemSimulator(mol.n_qubits, mol.n_electrons) >>> grad_ops = simulator.get_expectation_with_grad(hamiltonian, ansatz_circuit) >>> >>> result = minimize(grad_ops, initial_amplitudes, method='L-BFGS-B', jac=True) >>> print(f"VQE energy: {result.fun}") VQE energy: -3.2354494505390528