qc2.algorithms.pennylane.oo_vqe
Module defining oo-VQE algorithm for PennyLane.
Classes
Main class for orbital-optimized VQE with PennyLane. |
Module Contents
- class qc2.algorithms.pennylane.oo_vqe.oo_VQE(qc2data=None, ansatz=None, active_space=None, mapper=None, device=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.pennylane.vqe.VQEMain class for orbital-optimized VQE with PennyLane.
This class is responsible for optimizing both circuit and orbital parameters of simple molecules. Analytic first and second derivatives are considered in the orbital optimization part.
- 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:
- static _get_default_init_orbital_params(n_kappa: List) List[source]
Set up the init orbital rotation parameters.
- Parameters:
n_kappa (List) – number of orbital rotation parameters.
- Returns:
List of params values
- Return type:
List
- run(*args, **kwargs) qc2.algorithms.algorithms_results.OOVQEResults[source]
Optimizes both the circuit and orbital parameters.
- Parameters:
*args –
device_args (optional):
qml.devicearguments.qnode_args (optional):
qml.qnodearguments.
**kwargs –
device_kwargs (optional):
qml.devicekeyword arguments.qnode_kwargs (optional):
qml.qnodekeyword arguments.
- Returns:
An instance of
qc2.algorithms.pennylane.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.pennylane 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 ... ), ... optimizer=qml.GradientDescentOptimizer(stepsize=0.5), ... device="default.qubit" ... ) >>> results = qc2data.algorithm.run()
- _circuit_optimization(theta: List, kappa: List, *args, **kwargs) 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.
*args –
device_args (optional):
qml.devicearguments.qnode_args (optional):
qml.qnodearguments.
**kwargs –
device_kwargs (optional):
qml.devicekeyword arguments.qnode_kwargs (optional):
qml.qnodekeyword arguments.
- Returns:
Optimized circuit parameters and associated energy.
- Return type:
Tuple[List, float]
- _get_energy_from_parameters(theta: List, kappa: List, *args, **kwargs) 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.
*args –
device_args (optional):
qml.devicearguments.qnode_args (optional):
qml.qnodearguments.
**kwargs –
device_kwargs (optional):
qml.devicekeyword arguments.qnode_kwargs (optional):
qml.qnodekeyword arguments.
- Returns:
Total ground-state energy for a given circuit and orbital parameters.
- Return type:
- _get_rdms(theta: List, sum_spin=True, *args, **kwargs) Tuple[pennylane.numpy.ndarray, pennylane.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.
*args –
device_args (optional):
qml.devicearguments.qnode_args (optional):
qml.qnodearguments.
**kwargs –
device_kwargs (optional):
qml.devicekeyword arguments.qnode_kwargs (optional):
qml.qnodekeyword arguments.
- Returns:
1- and 2-RDMs.
- Return type:
Tuple[np.ndarray, np.ndarray]