Kipu Quantum Iskay Quantum Optimizer – 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.
Iskay Quantum Optimizer – Leitfaden zu Qiskit-Funktionen
Eingaben
problem
Typ: Dict[str, float]
Die Koeffizienten des Optimierungsproblems, formuliert als QUBO/HUBO oder im Spin-Format. Weitere Informationen zur Problemstellung finden Sie unter „Zulässige Problemformate “.
- Erforderlich: Ja
- Beispiel:
{"()": -21.0, "(0, 4)": 0.5,"(0, 2)": 0.5,"(0, 1)": 0.5,"(1, 3)": 0.5}
problem_type
Typ: str
Geben Sie an, ob die Problemkoeffizienten im binären (QUBO/HUBO) oder im Spin-Format vorliegen. Die beiden Möglichkeiten sind "spin" oder "binary". Weitere Informationen zur Problemstellung finden Sie unter „Zulässige Problemformate “.
- Erforderlich: Ja
- Beispiel:
"spin"
backend_name
Typ: str
Name des Backends, an das die Abfrage gesendet werden soll
- Erforderlich: Ja
- Beispiel:
"ibm_fez"
Optionen
Typ: Dict[str, Any]
Einstellungen zur Steuerung der Hardware-Übertragung, z. B. die Anzahl der Aufnahmen. Die Optionen für diese Funktion werden als verschachteltes Wörterbuch angegeben. Hier finden Sie die vollständige Liste der Optionen und ihrer Standardwerte.
- Erforderlich: Nein
- Beispiel:
{"shots": 5000, "num_iterations": 3, "use_session": True, "seed_transpiler": 42}
Die Argumente problem``problem_type und kodieren ein Optimierungsproblem der Form
wo
- Durch die Auswahl
problem_type = "binary"von legen Sie fest, dass die Kostenfunktion imbinaryFormat vorliegt, was bedeutet, dass gilt, d. h., die Kostenfunktion ist in QUBO/HUBO-Formulierung geschrieben. - Andererseits wird durch die Wahl
problem_type = "spin"von die Kostenfunktion in der Ising-Formulierung geschrieben, wobei gilt.
Die Koeffizienten der Aufgabe sollten wie folgt in einem Wörterbuch kodiert werden:
- Bitte beachten Sie, dass die Schlüssel des Wörterbuchs Zeichenfolgen sein müssen, die ein gültiges Tupel aus sich nicht wiederholenden Ganzzahlen enthalten.
Optionsliste
Iskay bietet durch optionale Parameter Möglichkeiten zur Feinabstimmung. Die Standardeinstellungen eignen sich zwar für die meisten Fälle, Sie können das Verhalten jedoch an spezifische Anforderungen anpassen:
shots
Typ: `int`
Standardwert: 10000
Quantenmessungen pro Iteration (höher = genauer)
num_iterations
Typ: `int`
Standardwert: 10
Algorithmus-Iterationen (mehr Iterationen können die Lösungsqualität verbessern)
use_session
Typ: `bool`
Standardwert: True
Nutzen Sie „ IBM “-Sitzungen, um Wartezeiten zu verkürzen
seed_transpiler
Typ: `int`
Standardwert: None
Einheit für die reproduzierbare Erstellung von Quantenschaltungen.
Startwertoptimierung : Beachten Sie, dass standardmäßig seed_transpiler``None auf gesetzt ist. Dadurch wird der automatische Optimierungsprozess des Transpilers aktiviert. In None diesem Fall startet das System einen Testlauf mit mehreren Startwerten und wählt denjenigen aus, der die beste Schaltungstiefe liefert, wobei die volle Leistungsfähigkeit des max_trials Parameters für jede Transpilationsstufe genutzt wird.
direct_qubit_mapping
Typ: `bool`
Standardwert: False
Ordne virtuelle Qubits direkt physikalischen Qubits zu
job_tags
Typ: `List[str]`
Standardwert: None
Benutzerdefinierte Tags für die Auftragsverfolgung
preprocessing_level
Typ: `int`
Standardwert: 0
Intensität der Vorverarbeitung (0–3).
Vorverarbeitungsstufen (0–3) : Besonders wichtig bei größeren Problemen, die derzeit nicht innerhalb der Kohärenzzeiten der Hardware verarbeitet werden können. Höhere Vorverarbeitungsstufen führen durch Approximationen bei der Problemtranspilierung zu geringerer Schaltungstiefe:
- Stufe 0 : Exakte, längere Strecken
- Stufe 1 : Gutes Gleichgewicht zwischen Genauigkeit und Annäherung, wobei nur die Tore mit Winkeln im untersten Zehntel ausgeschlossen werden
- Stufe 2 : Etwas genauere Annäherung, wobei die Gates mit Winkeln im untersten 20. Perzentil herausgefiltert und bei der
approximation_degree=0.95Transpilierung verwendet werden - Stufe 3 : Höchste Annäherungsstufe, wobei die Gates im untersten 30. Perzentil entfernt und bei der
approximation_degree=0.90Transpilierung verwendet werden
postprocessing_level
Typ: `int`
Standardwert: 2
Verfeinerungsgrad der Lösung (0–2).
Nachbearbeitungsstufen (0–2) : Legt fest, in welchem Umfang klassische Optimierung zum Ausgleich von Bit-Flip-Fehlern durch eine unterschiedliche Anzahl von Greedy-Durchläufen einer lokalen Suche angewendet wird:
- Stufe 0 : 1 Durchgang
- Stufe 1 : 2 Durchgänge
- Stufe 2 : 3 Durchgänge
transpilation_level
Typ: `int`
Standardwert: 0
Versuche zur Transpiler-Optimierung (0–5).
Transpiler-Stufen (0–5) : Steuerung der erweiterten Transpiler-Optimierungsversuche für die Kompilierung von Quantenschaltungen. Dies kann zu einem Anstieg des klassischen Overheads führen, und in manchen Fällen ändert sich die Schaltungstiefe dadurch möglicherweise nicht. Der Standardwert führt 2 in der Regel zu der kleinsten Schaltung und ist relativ schnell.
- Stufe 0 : Optimierung der zerlegten DCQO-Schaltung (Layout, Verdrahtung, Zeitplanung)
- Stufe 1 : Optimierung von
PauliEvolutionGateund anschließend der zerlegten DCQO-Schaltung ( max_trials=10 ) - Stufe 2 : Optimierung von
PauliEvolutionGateund anschließend der zerlegten DCQO-Schaltung ( max_trials=15 ) - Stufe 3 : Optimierung von
PauliEvolutionGateund anschließend der zerlegten DCQO-Schaltung ( max_trials=20 ) - Stufe 4 : Optimierung von
PauliEvolutionGateund anschließend der zerlegten DCQO-Schaltung ( max_trials=25 ) - Stufe 5 : Optimierung von
PauliEvolutionGateund anschließend der zerlegten DCQO-Schaltung ( max_trials=50 )
transpile_only
Typ: `bool`
Standardwert: False
Verfügbar für Nutzer, die die Schaltungsoptimierung analysieren möchten, ohne den vollständigen Quantenalgorithmus auszuführen. Nützlich für die Schaltungsanalyse, Studien zur Tiefenoptimierung und zum Verständnis von Transpilations-Effekten, bevor die vollständige Ausführung gestartet wird.
Eine Erhöhung der Anzahl von max_trials mit höheren Werten für transpilation_level führt zwangsläufig zu einer Verlängerung der Transpilierungszeit, verändert jedoch nicht immer die endgültige Schaltung – dies hängt stark von der jeweiligen Schaltungsstruktur und -komplexität ab. Bei manchen Schaltkreisen bzw. Problemen kann der Unterschied zwischen 10 Versuchen (Stufe 1) und 50 Versuchen (Stufe 5) jedoch enorm sein, sodass die Untersuchung dieser Parameter der Schlüssel zum erfolgreichen Finden einer Lösung sein könnte.
Ausgabe
Typ: `Dict[str, Any]`
Lösung und Metadaten. Die Struktur variiert je nach transpile_only Option.
Ergebnisverzeichnis
Die Struktur des Ergebniswörterbuchs hängt vom Ausführungsmodus ab:
solution
Typ: `Dict[str, int]`
Die sortierte Abbildung, bei der die Schlüssel numerisch sortierte Variablenindizes (als Zeichenfolgen) sind und die Werte die entsprechenden Variablenwerte (1/-1 bei Spin-Problemen, 1/0 bei binären Problemen).
- Modus: Standard
- Beispiel:
{'0': -1, '1': -1, '2': -1, '3': 1, '4': 1}
solution_info
Typ: `Dict[str, Any]`
Ausführliche Informationen zur Lösung.
- Modus: Standard
- Beispiel:
{'bitstring': '11100', 'cost': -13.8, 'seed_transpiler': 42, 'mapping': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}} - Standardausführung : Wenn der optionale Parameter
transpile_only=Falseangegeben wird, siehe das nachfolgende Wörterbuch.
bitstring
Typ: `str`
Die Darstellung der Lösung als roher Bitstring.
cost
Typ: `float`
Das mit der Lösung verbundene Kosten-Nutzen-Verhältnis.
seed_transpiler
Typ: `int`
Der Zufallswert, der für den Transpiler verwendet wurde, der dieses Ergebnis erzeugt hat.
mapping
Typ: `Dict[int, int]`
Die ursprüngliche Zuordnung von Qubits zu Variablen, die bei der Berechnung verwendet wurde.
qpu_time
Typ: `float`, optional
Die Ausführungszeit der QPU in Sekunden.
- Das
solutionWörterbuch wird aus dem Lösungsbitstring gewonnen, wobei dasmappingObjekt zur Indizierung der Variablen verwendet wird. - Wenn
problem_type=spinwir die Zuweisungs verwenden. - Die Schlüssel im Lösungswörterbuch sind Variablenindizes, die als Zeichenfolgen numerisch sortiert sind.
prob_type
Typ: `str`
Die Art des Optimierungsproblems (spin oder binary)
- Modus: Standard
- Beispiel:
'spin'
transpilation_info
Typ: `Dict[str, Any]`
Details zur Schaltungsanalyse und Transpilation.
- Modus: Nur Transpile
- Beispiel:
{'best_seed': 42, 'transpilation_time_seconds': 50.06, 'transpiled_circuit': {'depth': 576, 'gate_count': 4177, 'num_qubits': 156, 'width': 176, 'operations': {'sx': 1325, 'rx': 891, 'cz': 783, 'rz': 650, 'rzz': 466, 'x': 42, 'measure': 20}}} - Transpilation-Analyse : Wenn der optionale Parameter
transpile_only=Trueangegeben wird, siehe das folgende Wörterbuch:
best_seed
Typ: `int`
Der für die Transpilation ermittelte optimale Startwert.
transpilation_time_seconds
Typ: `float`
Dauer des Transpilation-Prozesses.
transpiled_circuit
Typ: `Dict`
Schaltungsanalyse mit folgenden Inhalten:
depth
Typ: `int`
Schichtanzahl
gate_count
Typ: `int`
Gesamtzahl der Gatter in der Schaltung.
num_qubits
Typ: `int`
Anzahl der verwendeten Qubits.
width
Typ: `int`
Leiterbahnbreite.
operations
Typ: `Dict[str, int]`
Anzahl der verwendeten Gattertypen.