build_excitation_span_minimization_model
build_excitation_span_minimization_model(excitations, num_modes, *, objective='multi', mix_delta=0.1)
Costruire un modello Pyomo per ordinare le modalità fermioniche in modo da minimizzare gli intervalli di eccitazione.
Il modello costruisce una permutazione in cui a ciascun indice di modalità originale viene assegnata esattamente una posizione in un ordinamento lineare. Per ogni tupla di eccitazione a 2 e 4 modi, l'intervallo delle posizioni occupate viene ridotto al minimo in base all'obiettivo scelto.
L'elenco excitations viene sottoposto a pre-elaborazione come segue:
- gli indici che compaiono due volte all’interno della stessa tupla vengono annullati
- le tuple risultanti di lunghezza 0 o 1 vengono ignorate, pertanto non impongono alcun vincolo di distanza nel modello di minimizzazione risultante
- di conseguenza, ci si aspetta solo tuple post-elaborate di lunghezza 2 o 4
Per un'analisi più approfondita e una spiegazione del ragionamento alla base di questa fase di pre-elaborazione, si rimanda alla sezione “ III.B ” del presente articolo.
Parametri
-
excitations (Sequence[tuple[int, int] | tuple[int, int, int, int]]) – una sequenza di tuple di indici di eccitazione su indici di modi fermionici.
-
num_modes (int) – il numero totale di modi fermionici da ordinare.
-
objective (Literal['minmax', 'multi', 'avg']) –
la modalità oggettiva selezionata. Può trattarsi di uno dei seguenti valori letterali:
minmax: riduce al minimo l'ampiezza massima di eccitazione.avg: riduce al minimo l'intervallo medio di eccitazione.multi: riduce al minimomax_span + mix_delta * average_span.
-
mix_delta (float) – il peso di miscelazione utilizzato nel caso di
objective="multi".
Risultati
Un modello di ottimizzazione Pyomo che codifica le variabili di permutazione, le variabili di span, i vincoli e l'obiettivo. Risolvi questo modello con un risolutore Pyomo per ottenere un ordine ottimizzato.
Aumenti
- ValueError – se una tupla di eccitazione sottoposta a post-elaborazione ha una lunghezza diversa da 2 o 4.
- ValueError – se si
objectivesceglie un’incognita.
Tipo di restituzione