qc2.algorithms.qiskit.oo_vqe
Module defining oo-VQE algorithm for Qiskit-Nature.
Classes
Main class for orbital-optimized VQE with Qiskit-Nature. |
Module Contents
- class qc2.algorithms.qiskit.oo_vqe.oo_VQE(qc2data=None, ansatz=None, active_space=None, mapper=None, estimator=None, optimizer=None, reference_state=None, init_circuit_params=None, init_orbital_params=None, freeze_active=False, max_iterations=50, conv_tol=1e-07, verbose=0)[source]
Bases:
qc2.algorithms.qiskit.vqe.VQEMain class for orbital-optimized VQE with Qiskit-Nature.
This class extends the VQE class to include orbital optimization. It supports customized ansatzes, active space definitions, qubit mapping strategies, estimation methods, and optimization routines. Orbital optimization is performed alongside VQE parameter optimization using analytic first and second derivatives
- orbital_params[source]
List of orbital optimization parameters. Defaults to a list with entries of zero.
- Type:
List
- circuit_params[source]
List of VQE circuit parameters. Defaults to a list with entries of zero.
- Type:
List
- oo_problem[source]
An instance of
OrbitalOptimizationproblem class. Defaults to None.- Type:
- max_iterations[source]
Maximum number of iterations for the combined circuit-orbitals parameters optimization. Defaults to 50.
- Type:
- run() qc2.algorithms.algorithms_results.OOVQEResults[source]
Optimizes both the circuit and orbital parameters.
- Returns:
An instance of
qc2.algorithms.qiskit.vqe.OOVQEResultsclass with all oo-VQE info.- Return type:
Example
>>> from ase.build import molecule >>> from qc2.ase import PySCF >>> from qc2.data import qc2Data >>> from qc2.algorithms.qiskit import oo_VQE >>> from qc2.algorithms.utils import ActiveSpace >>> >>> mol = molecule('H2O') >>> >>> hdf5_file = 'h2o.hdf5' >>> qc2data = qc2Data(hdf5_file, mol, schema='qcschema') >>> qc2data.molecule.calc = PySCF() >>> qc2data.run() >>> qc2data.algorithm = oo_VQE( ... active_space=ActiveSpace( ... num_active_electrons=(2, 2), ... num_active_spatial_orbitals=4 ... ), ... mapper="jw", ... optimizer=SLSQP(), ... estimator=Estimator(), ... ) >>> results = qc2data.algorithm.run()
- _circuit_optimization(theta: List, kappa: List) Tuple[List, float][source]
Get total energy and best circuit parameters for a given kappa.
- Parameters:
theta (List) – List with circuit variational parameters.
kappa (List) – List with orbital rotation parameters.
- Returns:
Optimized circuit parameters and associated energy.
- Return type:
Tuple[List, float]
- _get_energy_from_parameters(theta: List, kappa: List) float[source]
Calculates total energy given circuit and orbital parameters.
- Parameters:
theta (List) – List with circuit variational parameters.
kappa (List) – List with orbital rotation parameters.
- Returns:
Total ground-state energy for a given circuit and orbital parameters.
- Return type:
- _get_rdms(theta: List, sum_spin=True) Tuple[numpy.ndarray, numpy.ndarray][source]
Calculates 1- and 2-electron reduced density matrices (RDMs).
- Parameters:
theta (List) – circuit parameters at which RDMs are calculated.
sum_spin (bool) – If True, the spin-summed 1-RDM and 2-RDM will be returned. If False, the full 1-RDM and 2-RDM will be returned. Defaults to True.
- Returns:
1- and 2-RDMs.
- Return type:
Tuple[np.ndarray, np.ndarray]