Référence de l'API de chimie Qunova HI-VQE
Qiskit Functions — des outils prêts à l'emploi développés par des organisations partenaires — permettent d'abstraire certaines étapes du processus de développement logiciel afin de simplifier et d'accélérer la découverte d'algorithmes et le développement d'applications à grande échelle. Cliquez ici pour consulter le guide de cette fonction Qiskit.
Guide des fonctions Qiskit pour la chimie HI-VQE
Entrées
geometry
Type: `Union[List[List[Union[str, Tuple[float, float, float]]]], str]`
Il peut s'agir soit d'une chaîne de caractères, soit de listes structurées contenant des paires d'atomes et de coordonnées. Si cette valeur est fournie sous forme de chaîne de caractères, il doit s'agir d'une géométrie moléculaire au format de coordonnées cartésiennes. Si cette donnée est fournie sous forme de liste, elle doit prendre la forme d'une liste de listes, chacune contenant une chaîne de caractères et un tuple de coordonnées.
- Obligatoire : oui
- Exemple :
[['O', (0, 0, 0)], ['H', (0, 1, 0)], ['H', (0, 0, 1)]]ou"O 0 0 0; H 0 1 0; H 0 0 1"
backend_name
Type: `str`
Nom du backend sur lequel effectuer la requête.
- Obligatoire : oui
- Exemple:
ibm_fez
max_states
Type: `int`
La dimension maximale du sous-espace pour la diagonalisation. Si le nombre n'est pas un carré parfait, le nombre d'états utilisés sera moindre.
- Obligatoire : oui
- Exemple:
100
max_expansion_states
Type: `int`
Nombre maximal d'états de CI générés de manière classique à inclure dans chaque itération.
- Obligatoire : oui
- Exemple:
10
molecule_options
Type: `dict`
Options relatives à la molécule utilisée comme entrée dans HI-VQE.
La liste suivante répertorie toutes les clés et valeurs pouvant être définies dans le molecule_options dictionnaire, ainsi que leurs types de données et leurs valeurs par défaut. Toutes les clés sont facultatives.
charge
Type: `int`
Valeur par défaut: `0`
Un nombre entier indiquant la charge nette totale du système moléculaire. La valeur par défaut est 0; toutefois, il peut s'agir de n'importe quel nombre entier.
- Plage valide : Divers
basis
Type: `str`
Valeur par défaut: `'sto-3g'`
Une chaîne de caractères indiquant le type de base; celles-ci sont transmises à pyscf. Par exemple : "sto-3g", "3-21g", "6-31g", "cc-pvdz"
- Plage valide : Divers
active_orbitals
Type: `List[int]`
Valeur par défaut: Every orbital index
Une liste des indices orbitaux actifs dans l'intervalle [0, n), où n est le nombre de qubits utilisés dans le problème. Si cette option est spécifiée, l'argument frozen_orbitals doit également être spécifié.
- Plage valide : indices orbitaux spatiaux valables pour le problème
frozen_orbitals
Type: `List[int]`
Valeur par défaut: `No indices`
Une liste d'indices orbitaux figés appartenant à la même plage que les orbitaux actifs. Si cette option est spécifiée, il faut également indiquer active_orbitals. Notez que seules les orbitales occupées doivent être gelées, car le nombre d'électrons actifs est réduit de 2 pour chaque orbitale occupée qui est gelée.
- Plage valide : indices orbitaux spatiaux valables pour le problème, à l'exclusion des orbitales actives
orbital_coeffs
Type: `List[List[float]]`
Valeur par défaut: `Hartree-Fock molecular orbitals`
Les coefficients des orbitales spatiales utilisés dans le calcul des intégrales de répulsion électronique pour le système. Parmi les exemples valables, on peut citer les orbitales moléculaires de Hartree-Fock, les orbitales naturelles et les orbitales AVAS.
- Plage valide : Divers
symmetry
Type: `Union[str, bool]`
Valeur par défaut: `False`
Utilisé pour appliquer la symétrie du groupe ponctuel aux calculs moléculaires initiaux afin de construire la base d'orbitales adaptée à la symétrie. Ces orbitales adaptées à la symétrie servent de fonctions de base pour les calculs SCF suivants. La valeur par défaut est False; si elle est définie sur True, cette fonction sera appelée et des groupes de points arbitraires seront automatiquement détectés et utilisés. Si une symétrie particulière est définie, par exemple symmetry = « Dooh », une erreur sera générée si la géométrie moléculaire ne respecte pas cette symétrie requise.
- Plage valide :
TrueouFalse
symmetry_subgroup
Type: `Optional[str]`
Valeur par défaut: `None`
Peut être utilisé pour générer un sous-groupe de la symétrie détectée. Cela n'a aucun effet lorsque la symétrie est spécifiée à l'aide de l'argument de mot-clé « symmetry ».
- Plage valide : voir la documentation de pyscf
unit
Type: `str`
Valeur par défaut: `angstrom`
Spécifie l'unité de mesure à utiliser pour les coordonnées atomiques et les distances. Par défaut, on utilise les angströms.
- Plage valide : voir la documentation de pyscf
nucmod
Type: `Optional[Union[dict, str]]`
Valeur par défaut: `None`
Spécifie le modèle nucléaire à utiliser. Par défaut, il utilise le modèle nucléaire ponctuel; d'autres valeurs permettent d'activer le modèle nucléaire gaussien. Si une fonction est fournie, elle sera utilisée avec le modèle nucléaire gaussien pour générer la valeur de la distribution de charge nucléaire « zeta ».
- Plage valide : voir la documentation de pyscf
pseudo
Type: `Optional[Union[dict, str]]`
Valeur par défaut: `None`
Spécifie le pseudopotentiel des atomes de la molécule. La valeur par défaut est « None », ce qui signifie qu'aucun pseudopotentiel n'est appliqué et que tous les électrons sont explicitement pris en compte dans les calculs.
- Plage valide : voir la documentation de pyscf
cart
Type: `bool`
Valeur par défaut: `False`
Indique s'il faut utiliser les GTO cartésiens comme fonctions de base du moment cinétique dans le calcul. La valeur par défaut « False » utilise des GTO sphériques.
- Plage valide : voir la documentation de pyscf
magmom
Type: `(`Optional[List[Union[int, float]]]`
Valeur par défaut: `1_000`
Définit le moment magnétique de spin colinéaire de chaque atome. Par défaut, cette valeur est « None » et chaque atome est initialisé avec un spin égal à zéro.
- Plage valide : voir la documentation de pyscf
avas_aolabels
Type: `Optional[List[str]]`
Valeur par défaut: `None`
Cela définit l'orbite atomique à inclure dans le schéma AVAS. Consultez la documentation AVAS.
- Plage valide : par exemple, [« H 1s », « O 2p »] pour H O
avas_threshold
Type: `float`
Valeur par défaut: `0.2`
Cette valeur détermine le seuil utilisé pour déterminer quelles orbitales atomiques (AO) sont conservées dans l'espace actif.
- Plage valide : entre 0.0 et 2.0
noons_level
Type: `Optional[str]`
Valeur par défaut: `None`
Ceci définit l'approche théorique permettant de calculer les orbitales naturelles et de sélectionner les orbitales actives selon le schéma des nombres d'occupation des orbitales naturelles (NOON). Consultez la documentation de NOON. Il faut fournir à la fois les indices des orbitales actives et des orbitales gelées pour contrôler le nombre d'orbitales (et le nombre de qubits).
- Plage valide :
"mp2"ou"ccsd"
- Obligatoire : Non
- Exemple:
{"basis": "sto3g", "unit": "angstrom" }
hivqe_options
Type: `dict`
Options permettant de contrôler le comportement de l'algorithme HI-VQE.
La liste suivante répertorie toutes les clés et valeurs pouvant être définies dans le hivqe_options dictionnaire, ainsi que leurs types de données et leurs valeurs par défaut. Toutes les clés sont facultatives.
shots
Type: `int`
Valeur par défaut: `1_000`
Nombre de tirages à effectuer sur le dispositif quantique par itération.
- Plage valide : entre 1 et 10 000
max_iter
Type: `int`
Valeur par défaut: `25`
Le nombre maximal d'itérations à effectuer pour optimiser l'ansatz. L'algorithme peut nécessiter moins d'itérations si la convergence est atteinte rapidement.
- Plage valide : entre 1 et 50
initial_basis_states
Type: `List[str]`
Valeur par défaut: The Hartree-Fock state
Permet de relancer l'algorithme en utilisant les états classiques issus d'un résultat précédent.
- Plage valide : chaînes binaires dont le nombre de bits correspond au nombre de qubits requis pour le problème.
ansatz
Type: `str`
Valeur par défaut: `epa`
Cela définit l'ansatz quantique à optimiser pour générer de nouveaux états. "epa" choisit l'hypothèse de conservation de l'excitation. "hea" choisit l'approche optimisée pour le matériel. "lucj" choisit l'approche de Jastrow pour le cluster unitaire local.
- Plage valide :
"epa","hea", ou"lucj"
convergence_count
Type: `int`
Valeur par défaut: `3`
Le nombre d'itérations sans variation significative de l'énergie calculée qui doit s'écouler avant que l'algorithme ne soit considéré comme ayant convergé.
- Au moins 2
convergence_abstol
Type: `float`
Valeur par défaut: `1e-4`
L'amplitude de la variation de l'énergie calculée qui est considérée comme significative aux fins des contrôles de convergence.
- Plage valide : comprise entre 0 et 1 inclus
reset_convergence_count
Type: `bool`
Valeur par défaut: `True`
Pour que l'on puisse parler True de convergence, les convergence_count itérations doivent se dérouler sans changement significatif susceptible de les interrompre. Si False, alors l'algorithme s'arrêtera après convergence_count si des changements insignifiants se sont produits lors de n'importe quelle itération au cours du processus d'optimisation.
- Plage valide :
TrueouFalse
configuration_recovery
Type: `bool`
Valeur par défaut: `True`
Utiliser ou non la configuration recovery fournie par le qiskit-addon-sqd paquet. Si la valeur est « True », les états invalides échantillonnés à partir du dispositif quantique sont corrigés de manière classique. Si la valeur est « False », ils sont ignorés.
- Plage valide :
TrueouFalse
ansatz_entanglement
Type: `str`
Valeur par défaut: `circular`
Ceci définit le schéma d'intrication à utiliser au sein du circuit quantique, conformément aux conventions courantes de Qiskit et ffsim pour l'ansatz LUCJ.
- Plage valide : l'un des éléments suivants
"linear":"reverse_linear","pairwise",,"circular","full", ou"sca". Si l'on utilise"lucj"l'approche,"lucj_default"c'est également une option.
ansatz_reps
Type: `int`
Valeur par défaut: `2`
Le nombre de répétitions de chaque couche dans le circuit quantique.
- Plage valide : supérieure à 0
amplitude_screening_tolerance
Type: `Union[float,int]`
Valeur par défaut: `0`
Le seuil permettant de déterminer quels états doivent être éliminés du sous-espace après la diagonalisation. Elle précise le seuil d'inclusion des états du sous-espace en fonction de leurs amplitudes calculées.
- Plage valide : au moins 0 et moins de 1
overlap_screening_tolerance
Type: `float`
Valeur par défaut: `1e-2`
La tolérance permettant de déterminer quels états doivent être éliminés de l'espace sous-jacent avant la diagonalisation. Il permet de contrôler la précision des amplitudes prévues pour chaque état; plus la valeur est faible, plus les prévisions sont précises.
- Plage valide : entre
1e-4et1e-1, inclus
- Obligatoire : Non
- Exemple:
{"shots": 10_000, "max_iter": 10 }
Sorties
La fonction renvoie un dictionnaire comportant quatre clés et leurs valeurs correspondantes. Les clés et les valeurs sont répertoriées dans le tableau suivant :
Clé | Type de valeur | Explication |
|---|---|---|
"energy" | float | L'énergie approximative de l'état fondamental de la molécule. |
"states" | List[str] | Les déterminants sélectionnés qui forment le sous-espace utilisé pour calculer l'énergie. Ils sont présentés en alternance au format alpha-bêta. |
"eigenvector" | List[float] | Le vecteur propre correspondant à l'état fondamental du sous-espace constitué de "states". |
"energy_variance" | float | La variance énergétique de l'état fondamental du sous-espace formé par "states", qui donne une indication de la qualité de la solution. Cette valeur est non négative; plus elle est faible, plus l'état fondamental du sous-espace se rapproche d'un état propre de l'hamiltonien du système. |
"energy_history" | List[float] | Les énergies calculées à chaque itération au cours du processus d'optimisation hybride, dans l'ordre où elles ont été calculées. Deux valeurs d'énergie sont calculées à chaque itération dans le cadre du processus d'optimisation SPSA. |