Skip to main content
IBM Quantum Platform

Référence de l'API de chimie Qunova HI-VQE

  • Qiskit Functions

    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.


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 : True ou False

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 ».

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.

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 ».

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.

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.

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.

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 2_2 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 : True ou False

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 : True ou False

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-4 et 1e-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"floatL'é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"floatLa 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.
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.