Qunova HI-VQE Chemistry API-Referenz
Qiskit Functions — von Partnerorganisationen entwickelte vorgefertigte Tools — abstrahieren Teile des Softwareentwicklungs-Workflows, um die Erforschung von Algorithmen und die Anwendungsentwicklung im großen Maßstab zu vereinfachen und zu beschleunigen. Klicken Sie hier, um die Anleitung zu dieser Qiskit-Funktion anzuzeigen.
HI-VQE-Chemie: Leitfaden zu Qiskit-Funktionen
Eingaben
geometry
Typ: `Union[List[List[Union[str, Tuple[float, float, float]]]], str]`
Dies kann entweder eine Zeichenkette oder eine strukturierte Liste sein, die Atom- und Koordinatenpaare enthält. Wenn dies als Zeichenfolge angegeben wird, muss es sich um eine Molekülgeometrie im kartesischen Koordinatenformat handeln. Wenn dies als Liste angegeben wird, sollte es sich um eine Liste von Listen handeln, die jeweils eine Zeichenkette und ein Koordinatentupel enthalten.
- Erforderlich: Ja
- Beispiel:
[['O', (0, 0, 0)], ['H', (0, 1, 0)], ['H', (0, 0, 1)]]oder"O 0 0 0; H 0 1 0; H 0 0 1"
backend_name
Typ: `str`
Name des Backends, über das die Abfrage ausgeführt werden soll.
- Erforderlich: Ja
- Beispiel:
ibm_fez
max_states
Typ: `int`
Die maximale Unterraumdimension für die Diagonalisierung. Es werden weniger Zustände verwendet, wenn die Zahl kein perfektes Quadrat ist.
- Erforderlich: Ja
- Beispiel:
100
max_expansion_states
Typ: `int`
Die maximale Anzahl klassisch generierter CI-Zustände, die in jede Iteration aufgenommen werden sollen.
- Erforderlich: Ja
- Beispiel:
10
molecule_options
Typ: `dict`
Optionen bezüglich des Moleküls, das als Eingabe für HI-VQE verwendet wird.
Die folgende Liste enthält alle Schlüssel und Werte, die im molecule_options Wörterbuch festgelegt werden können, sowie deren Datentypen und Standardwerte. Alle Angaben sind freiwillig.
charge
Typ: `int`
Standardwert: `0`
Eine ganze Zahl, die die gesamte Nettoladung des molekularen Systems angibt. Der Standardwert ist 0; es kann jedoch jede beliebige ganze Zahl sein.
- Gültigkeitsbereich: Verschiedene
basis
Typ: `str`
Standardwert: `'sto-3g'`
Eine Zeichenkette, die den Basistyp angibt; diese wird an pyscf übergeben. Zum Beispiel: "sto-3g", "3-21g", "6-31g", "cc-pvdz"
- Gültigkeitsbereich: Verschiedene
active_orbitals
Typ: `List[int]`
Standardwert: Every orbital index
Eine Liste der aktiven Orbitalindizes im Intervall [0, n), wobei n die Anzahl der in der Aufgabe verwendeten Qubits ist. Wenn dies angegeben wird, muss auch das Argument „frozen_orbitals“ angegeben werden.
- Gültigkeitsbereich: Die für die Aufgabe gültigen räumlichen Orbitalindizes
frozen_orbitals
Typ: `List[int]`
Standardwert: `No indices`
Eine Liste von festgelegten Orbitalindizes im gleichen Bereich wie active_orbitals. Falls angegeben, muss auch active\_orbitals angegeben werden. Beachten Sie, dass nur besetzte Orbitalen eingefroren werden sollten, da sich die Anzahl der aktiven Elektronen für jedes eingefrorene besetzte Orbital um 2 verringert.
- Gültiger Bereich: Die für das Problem gültigen räumlichen Orbitalindizes, ausgenommen aktive Orbitale
orbital_coeffs
Typ: `List[List[float]]`
Standardwert: `Hartree-Fock molecular orbitals`
Die Koeffizienten für die räumlichen Orbitalen, die bei der Berechnung der elektronischen Abstoßungsintegrale für das System verwendet werden. Einige Beispiele hierfür sind Hartree-Fock-Molekülorbitale, natürliche Orbitale und AVAS-Orbitale.
- Gültigkeitsbereich: Verschiedene
symmetry
Typ: `Union[str, bool]`
Standardwert: `False`
Wird verwendet, um die Punktgruppensymmetrie für die anfänglichen Molekülberechnungen heranzuziehen und so die symmetrieangepasste Orbitalbasis zu erstellen. Diese symmetrieangepassten Orbitale werden als Basisfunktionen für die folgenden SCF-Berechnungen verwendet. Der Standardwert ist „False“; wird er auf „True“ gesetzt, wird die Funktion aufgerufen und beliebige Punktgruppen werden automatisch erkannt und verwendet. Wird eine bestimmte Symmetrie zugewiesen, beispielsweise symmetry = „Dooh“, wird ein Fehler ausgelöst, wenn die Molekülgeometrie nicht dieser geforderten Symmetrie entspricht.
- Gültiger Bereich:
TrueoderFalse
symmetry_subgroup
Typ: `Optional[str]`
Standardwert: `None`
Kann verwendet werden, um eine Untergruppe der erkannten Symmetrie zu erzeugen. Dies hat keine Auswirkung, wenn die Symmetrie über das Schlüsselwortargument „symmetry“ festgelegt wird.
- Gültiger Bereich: Siehe pyscf-Dokumentation
unit
Typ: `str`
Standardwert: `angstrom`
Legt die Maßeinheit fest, die für Atomkoordinaten und Abstände verwendet werden soll. Standardmäßig werden Angström-Einheiten verwendet.
- Gültiger Bereich: Siehe pyscf-Dokumentation
nucmod
Typ: `Optional[Union[dict, str]]`
Standardwert: `None`
Legt das zu verwendende Kernmodell fest. Standardmäßig wird das Punktkernmodell verwendet; durch andere Werte wird das Gaußsche Kernmodell aktiviert. Wird eine Funktion angegeben, wird diese in Verbindung mit dem Gaußschen Kernmodell verwendet, um den Wert der Kernladungsverteilung „zeta“ zu berechnen.
- Gültiger Bereich: Siehe pyscf-Dokumentation
pseudo
Typ: `Optional[Union[dict, str]]`
Standardwert: `None`
Gibt das Pseudopotential für die Atome im Molekül an. Standardmäßig ist hier „None“ eingestellt, was bedeutet, dass keine Pseudopotentiale angewendet werden und alle Elektronen explizit in die Berechnungen einbezogen werden.
- Gültiger Bereich: Siehe pyscf-Dokumentation
cart
Typ: `bool`
Standardwert: `False`
Gibt an, ob bei der Berechnung kartesische GTOs als Basisfunktionen für den Drehimpuls verwendet werden sollen. Der Standardwert „False“ bewirkt die Verwendung sphärischer GTOs.
- Gültiger Bereich: Siehe pyscf-Dokumentation
magmom
Typ: `(`Optional[List[Union[int, float]]]`
Standardwert: `1_000`
Legt das kolineare magnetische Spinmoment jedes Atoms fest. Standardmäßig ist dies „None“, und jedes Atom wird mit einem Spin von Null initialisiert.
- Gültiger Bereich: Siehe pyscf-Dokumentation
avas_aolabels
Typ: `Optional[List[str]]`
Standardwert: `None`
Hiermit wird der Atomorbital zur Einbeziehung in das AVAS-Schema definiert. Siehe AVAS-Dokumentation.
- Gültiger Bereich: z. B. [„H 1s “], „O 2p “ für H O
avas_threshold
Typ: `float`
Standardwert: `0.2`
Hiermit wird der Schwellenwert festgelegt, anhand dessen bestimmt wird, welche atomaren Orbitalen (AOs) im aktiven Raum beibehalten werden.
- Gültiger Bereich: Zwischen 0.0 und 2.0
noons_level
Typ: `Optional[str]`
Standardwert: `None`
Dies definiert den theoretischen Ansatz zur Erstellung natürlicher Orbitale und zur Auswahl aktiver Orbitale auf der Grundlage des NOON-Schemas (Natural Orbital Occupation Numbers). Siehe die Dokumentation zu NOON. Sowohl die aktiven als auch die eingefrorenen Orbitalindizes müssen angegeben werden, um die Anzahl der Orbitale (und die Anzahl der Qubits) zu steuern.
- Gültiger Bereich:
"mp2"oder"ccsd"
- Erforderlich: Nein
- Beispiel:
{"basis": "sto3g", "unit": "angstrom" }
hivqe_options
Typ: `dict`
Optionen zur Steuerung des Verhaltens des HI-VQE-Algorithmus.
Die folgende Liste enthält alle Schlüssel und Werte, die im hivqe_options Wörterbuch festgelegt werden können, sowie deren Datentypen und Standardwerte. Alle Angaben sind freiwillig.
shots
Typ: `int`
Standardwert: `1_000`
Anzahl der Schüsse, die pro Iteration auf dem Quanten-Gerät verwendet werden sollen.
- Gültiger Bereich: Zwischen 1 und 10 000
max_iter
Typ: `int`
Standardwert: `25`
Die maximale Anzahl von Iterationen, die zur Optimierung des Ansatzes durchgeführt werden sollen. Der Algorithmus benötigt möglicherweise weniger Iterationen, wenn die Konvergenz frühzeitig erreicht wird.
- Gültiger Bereich: Zwischen 1 und 50
initial_basis_states
Typ: `List[str]`
Standardwert: The Hartree-Fock state
Kann verwendet werden, um den Algorithmus mit klassischen Zuständen aus einem früheren Ergebnis neu zu starten.
- Gültiger Bereich: Binärzeichenfolgen, deren Bitanzahl der für das Problem erforderlichen Anzahl an Qubits entspricht.
ansatz
Typ: `str`
Standardwert: `epa`
Hiermit wird der zu optimierende Quantenansatz zur Erzeugung neuer Zustände festgelegt. "epa" wählt den ansatz zur Erhaltung der Anregung. "hea" wählt den hardwareeffizienten Ansatz. "lucj" wählt den lokalen unitaren Cluster-Jastrow-Ansatz aus.
- Gültiger Bereich:
"epa","hea", oder"lucj"
convergence_count
Typ: `int`
Standardwert: `3`
Die Anzahl der Iterationen, bei denen sich die berechnete Energie nicht wesentlich ändert und die verstreichen müssen, bevor davon ausgegangen wird, dass der Algorithmus konvergiert ist.
- Mindestens 2
convergence_abstol
Typ: `float`
Standardwert: `1e-4`
Die Größe der Änderung der berechneten Energie, die für die Zwecke der Konvergenzprüfung als signifikant angesehen wird.
- Gültiger Bereich: größer als 0 und höchstens 1
reset_convergence_count
Typ: `bool`
Standardwert: `True`
Damit die convergence_count Iterationen als Truekonvergierend gelten, dürfen sie ohne eine unterbrechende wesentliche Änderung ablaufen. Wenn False, dann bricht der Algorithmus nach ab convergence_count , sofern während des Optimierungsprozesses bei irgendeiner Iteration nur unwesentliche Änderungen aufgetreten sind.
- Gültiger Bereich:
TrueoderFalse
configuration_recovery
Typ: `bool`
Standardwert: `True`
Ob die Konfiguration recovery aus dem qiskit-addon-sqd Paket verwendet werden soll oder nicht. Wenn „True“, werden die vom Quantenbauelement erfassten ungültigen Zustände klassisch korrigiert. Ist der Wert „False“, werden sie verworfen.
- Gültiger Bereich:
TrueoderFalse
ansatz_entanglement
Typ: `str`
Standardwert: `circular`
Hiermit wird das Verschränkungsschema festgelegt, das innerhalb des Quantenschaltkreises verwendet werden soll, wobei die gängigen Konventionen von Qiskit und ffsim für den LUCJ-Ansatz befolgt werden.
- Gültiger Bereich: Eine der folgenden Zahlen:
"reverse_linear"``"linear","pairwise","circular","full",, oder"sca". Wenn man den"lucj"Ansatz verwendet,"lucj_default"ist dies ebenfalls eine Option.
ansatz_reps
Typ: `int`
Standardwert: `2`
Die Anzahl der Wiederholungen jeder Schicht im Quantenkreis.
- Gültiger Bereich: Größer als 0
amplitude_screening_tolerance
Typ: `Union[float,int]`
Standardwert: `0`
Der Toleranzwert, anhand dessen entschieden wird, welche Zustände nach der Diagonalisierung aus dem Unterraum herausgefiltert werden sollen. Es legt den Einbeziehungsschwellenwert für die Unterraumzustände auf der Grundlage ihrer berechneten Amplituden fest.
- Gültiger Bereich: Mindestens 0 und kleiner als 1
overlap_screening_tolerance
Typ: `float`
Standardwert: `1e-2`
Die Toleranz zur Vorhersage, welche Zustände vor der Diagonalisierung aus dem Unterraum herausgefiltert werden sollen. Er bestimmt die Genauigkeit der vorhergesagten Amplituden für jeden Zustand, wobei ein kleinerer Wert zu genaueren Vorhersagen führt.
- Gültiger Bereich: zwischen
1e-4und1e-1, einschließlich
- Erforderlich: Nein
- Beispiel:
{"shots": 10_000, "max_iter": 10 }
Ausgaben
Die Funktion gibt ein Wörterbuch mit vier Schlüsseln und Werten zurück. Die Schlüssel und Werte sind in der folgenden Tabelle aufgeführt:
Schlüssel | Werttyp | Erläuterung |
|---|---|---|
"energy" | float | Die ungefähre Grundzustandsenergie des Moleküls. |
"states" | List[str] | Die ausgewählten Determinanten, die den Unterraum bilden, der zur Bestimmung der Energie herangezogen wird. Sie sind im abwechselnden Alpha-Beta-Format angeordnet. |
"eigenvector" | List[float] | Der Eigenvektor, der dem Grundzustand des aus "states"… bestehenden Unterraums entspricht. |
"energy_variance" | float | Die Energievariation des Grundzustands des aus bestehenden "states" Unterraums, die Aufschluss über die Qualität der Lösung gibt. Dieser Wert ist nicht negativ, und ein niedrigerer Wert bedeutet, dass der Grundzustand des Unterraums einem Eigenzustand des Hamilton-Operators des Systems näher kommt. |
"energy_history" | List[float] | Die Energien, die bei jeder Iteration während des hybriden Optimierungsprozesses berechnet wurden, in derselben Reihenfolge, in der sie berechnet wurden. Im Rahmen des SPSA-Optimierungsprozesses werden pro Iteration zwei Energiewerte berechnet. |