Skip to main content
IBM Quantum Platform

Kipu Quantum Iskay Quantum Optimizer – API-Referenz

  • Qiskit Functions

    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.


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}
Zulässige Problemformate

Die Argumente problem``problem_type und kodieren ein Optimierungsproblem der Form

min⁡(x1,x2,…,xn)∈DC(x1,x2,…,xn)\begin{align} \min_{(x_1, x_2, \ldots, x_n) \in D} C(x_1, x_2, \ldots, x_n) \nonumber \end{align}

wo

C(x1,...,xn)=a+∑ibixi+∑i,jci,jxixj+...+∑k1,...,kmgk1,...,kmxk1...xkmC(x_1, ... , x_n) = a + \sum_{i} b_i x_i + \sum_{i, j} c_{i, j} x_i x_j + ... + \sum_{k_1, ..., k_m} g_{k_1, ..., k_m} x_{k_1} ... x_{k_m}
  • Durch die Auswahl problem_type = "binary"von legen Sie fest, dass die Kostenfunktion im binary Format vorliegt, was bedeutet, dass D={0,1}nD = \{0, 1\}^{n} 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 D={−1,1}nD = \{-1, 1\}^{n} gilt.

Die Koeffizienten der Aufgabe sollten wie folgt in einem Wörterbuch kodiert werden:

{"()":a,"(i,)":bi,"(i, j)":ci,j,⋮"(k1,...,km)":gk1,...,km,}\begin{align} \nonumber &\texttt{\{} \\ \nonumber &\texttt{"()"}&: \quad &a, \\ \nonumber &\texttt{"(i,)"}&: \quad &b_i, \\ \nonumber &\texttt{"(i, j)"}&: \quad &c_{i, j}, \\ \nonumber &\quad \vdots \\ \nonumber &\texttt{"(} k_1, ..., k_m \texttt{)"} &: \quad &g_{k_1, ..., k_m}, \\ \nonumber &\texttt{\}} \end{align}
  • 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.95 Transpilierung verwendet werden
  • Stufe 3 : Höchste Annäherungsstufe, wobei die Gates im untersten 30. Perzentil entfernt und bei der approximation_degree=0.90 Transpilierung 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 PauliEvolutionGate und anschließend der zerlegten DCQO-Schaltung ( max_trials=10 )
  • Stufe 2 : Optimierung von PauliEvolutionGate und anschließend der zerlegten DCQO-Schaltung ( max_trials=15 )
  • Stufe 3 : Optimierung von PauliEvolutionGate und anschließend der zerlegten DCQO-Schaltung ( max_trials=20 )
  • Stufe 4 : Optimierung von PauliEvolutionGate und anschließend der zerlegten DCQO-Schaltung ( max_trials=25 )
  • Stufe 5 : Optimierung von PauliEvolutionGate und 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.

Leistung auf Transpilationsebene

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.

Hinweise zur variablen Zuordnung
  • Das solution Wörterbuch wird aus dem Lösungsbitstring gewonnen, wobei das mapping Objekt zur Indizierung der Variablen verwendet wird.
  • Wenn problem_type=spin wir die Zuweisungs 1→−1,0→11 \rightarrow -1, \quad 0 \rightarrow 1 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.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.