build_excitation_span_minimization_model
build_excitation_span_minimization_model(excitations, num_modes, *, objective='multi', mix_delta=0.1)
Erstellen Sie ein Pyomo-Modell zur Anordnung fermionischer Moden, um die Anregungsspannen zu minimieren.
Das Modell erzeugt eine Permutation, bei der jeder ursprüngliche Modusindex genau einer Position in einer linearen Reihenfolge zugeordnet wird. Für jedes 2-Modus- und 4-Modus-Anregungs-Tupel wird die Spannweite der besetzten Positionen entsprechend dem gewählten Ziel minimiert.
Die Liste excitations wird wie folgt vorverarbeitet:
- Indizes, die innerhalb desselben Tupels zweimal vorkommen, werden aufgehoben
- Die resultierenden Tupel der Länge 0 oder 1 werden ignoriert, sodass im resultierenden Minimierungsmodell keine Abstandsbeschränkung auferlegt wird
- Folglich werden nur nachbearbeitete Tupel der Länge 2 oder 4 erwartet
Eine ausführlichere Erörterung und Erläuterung der Gründe für diese Vorverarbeitung finden Sie im Abschnitt „ III.B “ dieses Artikels.
Parameter
-
excitations (Sequence[tuple[int, int] | tuple[int, int, int, int]]) – eine Folge von Erregungsindex-Tupeln über die Indizes der fermionischen Moden.
-
num_modes (int) – die Gesamtzahl der zu ordnenden fermionischen Moden.
-
objective (Literal['minmax', 'multi', 'avg']) –
der gewählte Objektivmodus. Dies kann eines der folgenden Literale sein:
minmax: minimiert die maximale Anregungsspanne.avg: minimiert die durchschnittliche Anregungsdauer.multi: minimiertmax_span + mix_delta * average_span.
-
mix_delta (float) – das im Fall von … verwendete Mischgewicht
objective="multi".
Rückgabe
Ein Pyomo-Optimierungsmodell, das die Permutationsvariablen, Spannweitenvariablen, Nebenbedingungen und das Ziel enthält. Lösen Sie dieses Modell mit einem Pyomo-Löser, um eine optimierte Reihenfolge zu erhalten.
Erhöhungen
- ValueError – wenn ein nachbearbeitetes Anregungstupel eine Länge hat, die nicht 2 oder 4 beträgt.
- ValueError – wenn eine unbekannte Größe gewählt
objectivewird.
Rückgabetyp