Riferimento API Qunova HI-VQE per la chimica
Qiskit Functions — strumenti preconfigurati realizzati da organizzazioni partner — astraggono alcune parti del flusso di lavoro dello sviluppo software per semplificare e accelerare la scoperta di algoritmi su larga scala e lo sviluppo di applicazioni. Clicca qui per visualizzare la guida relativa a questa funzione di Qiskit.
Guida alle funzioni di chimica HI-VQE in Qiskit
Input
geometry
Tipo: `Union[List[List[Union[str, Tuple[float, float, float]]]], str]`
Può trattarsi sia di una stringa che di elenchi strutturati contenenti coppie di atomi e coordinate. Se viene specificato come stringa, deve trattarsi della geometria di una molecola in formato di coordinate cartesiane. Se viene fornito sotto forma di lista, deve trattarsi di una lista di liste, ciascuna delle quali contiene una stringa atomica e una tupla di coordinate.
- Obbligatorio: sì
- Esempio:
[['O', (0, 0, 0)], ['H', (0, 1, 0)], ['H', (0, 0, 1)]]oppure"O 0 0 0; H 0 1 0; H 0 0 1"
backend_name
Tipo: `str`
Nome del backend su cui eseguire la query.
- Obbligatorio: sì
- Esempio:
ibm_fez
max_states
Tipo: `int`
La dimensione massima del sottospazio per la diagonalizzazione. Se il numero non è un quadrato perfetto, verranno utilizzati meno stati.
- Obbligatorio: sì
- Esempio:
100
max_expansion_states
Tipo: `int`
Il numero massimo di stati CI generati in modo classico da includere in ogni iterazione.
- Obbligatorio: sì
- Esempio:
10
molecule_options
Tipo: `dict`
Opzioni relative alla molecola utilizzata come input per HI-VQE.
Il seguente elenco riporta in dettaglio tutte le chiavi e i valori che possono essere impostati nel molecule_options dizionario, insieme ai relativi tipi di dati e valori predefiniti. Tutte le chiavi sono facoltative.
charge
Tipo: `int`
Valore predefinito: `0`
Un numero intero che indica la carica netta totale del sistema molecolare. Il valore predefinito è 0; tuttavia, può essere un numero intero qualsiasi.
- Intervallo valido: Varie
basis
Tipo: `str`
Valore predefinito: `'sto-3g'`
Una stringa che specifica il tipo di base; questi vengono passati a pyscf. Ad esempio: "sto-3g", "3-21g", "6-31g", "cc-pvdz"
- Intervallo valido: Varie
active_orbitals
Tipo: `List[int]`
Valore predefinito: Every orbital index
Un elenco degli indici orbitali attivi nell'intervallo [0, n), dove n è il numero di qubit utilizzati nel problema. Se viene specificato questo parametro, è necessario specificare anche l'argomento frozen_orbitals.
- Intervallo valido: gli indici orbitali spaziali validi per il problema
frozen_orbitals
Tipo: `List[int]`
Valore predefinito: `No indices`
Un elenco di indici orbitali congelati compresi nello stesso intervallo degli orbitali attivi. Se specificato, occorre specificare anche active_orbitals. Si noti che solo gli orbitali occupati devono essere congelati, poiché il numero di elettroni attivi si riduce di 2 per ogni orbitale occupato che viene congelato.
- Intervallo valido: gli indici orbitali spaziali validi per il problema, esclusi gli orbitali attivi
orbital_coeffs
Tipo: `List[List[float]]`
Valore predefinito: `Hartree-Fock molecular orbitals`
I coefficienti relativi agli orbitali spaziali utilizzati nel calcolo degli integrali di repulsione elettronica per il sistema. Alcuni esempi significativi sono gli orbitali molecolari di Hartree-Fock, gli orbitali naturali e gli orbitali AVAS.
- Intervallo valido: Varie
symmetry
Tipo: `Union[str, bool]`
Valore predefinito: `False`
Utilizzato per applicare la simmetria del gruppo puntiforme ai calcoli molecolari iniziali al fine di costruire la base di orbitali adattata alla simmetria. Questi orbitali adattati alla simmetria vengono utilizzati come funzioni di base per i successivi calcoli SCF. Il valore predefinito è False; se impostato su True, verrà attivato e verranno automaticamente rilevati e utilizzati gruppi di punti arbitrari. Se viene assegnata una simmetria specifica, ad esempio symmetry = “Dooh”, verrà generato un errore qualora la geometria molecolare non rispetti tale simmetria richiesta.
- Intervallo valido:
TrueoFalse
symmetry_subgroup
Tipo: `Optional[str]`
Valore predefinito: `None`
Può essere utilizzato per generare un sottogruppo della simmetria rilevata. Ciò non ha alcun effetto quando la simmetria viene specificata tramite l'argomento chiave «symmetry».
- Intervallo valido: consultare la documentazione di pyscf
unit
Tipo: `str`
Valore predefinito: `angstrom`
Specifica l'unità di misura da utilizzare per le coordinate atomiche e le distanze. L'impostazione predefinita prevede l'uso delle unità angstrom.
- Intervallo valido: consultare la documentazione di pyscf
nucmod
Tipo: `Optional[Union[dict, str]]`
Valore predefinito: `None`
Specifica il modello nucleare da utilizzare. Per impostazione predefinita viene utilizzato il modello nucleare puntiforme, mentre altri valori attivano il modello nucleare gaussiano. Se viene specificata una funzione, questa verrà utilizzata con il modello nucleare gaussiano per generare il valore della distribuzione della carica nucleare «zeta».
- Intervallo valido: consultare la documentazione di pyscf
pseudo
Tipo: `Optional[Union[dict, str]]`
Valore predefinito: `None`
Specifica lo pseudopotenziale degli atomi presenti nella molecola. Il valore predefinito è None, il che indica che non vengono applicati pseudopotenziali e che tutti gli elettroni sono inclusi esplicitamente nei calcoli.
- Intervallo valido: consultare la documentazione di pyscf
cart
Tipo: `bool`
Valore predefinito: `False`
Specifica se utilizzare GTO cartesiane come funzioni di base del momento angolare nel calcolo. Il valore predefinito "False" comporta l'utilizzo di GTO sferici.
- Intervallo valido: consultare la documentazione di pyscf
magmom
Tipo: `(`Optional[List[Union[int, float]]]`
Valore predefinito: `1_000`
Imposta il momento magnetico di spin colineare di ciascun atomo. Per impostazione predefinita, il valore è None e ogni atomo viene inizializzato con uno spin pari a zero.
- Intervallo valido: consultare la documentazione di pyscf
avas_aolabels
Tipo: `Optional[List[str]]`
Valore predefinito: `None`
Questo definisce l'orbita atomica da includere nello schema AVAS. Consultare la documentazione di AVAS.
- Intervallo valido: ad esempio, ["H 1s ", "O 2p "] per H O
avas_threshold
Tipo: `float`
Valore predefinito: `0.2`
Questo parametro specifica il valore di soglia utilizzato per determinare quali orbitali atomici (AO) vengono mantenuti nello spazio attivo.
- Intervallo valido: tra 0.0 e 2.0
noons_level
Tipo: `Optional[str]`
Valore predefinito: `None`
Questo definisce l'approccio teorico per la preparazione degli orbitali naturali e la selezione degli orbitali attivi sulla base dello schema dei numeri di occupazione degli orbitali naturali (NOON). Consultare la documentazione di NOON. È necessario specificare sia gli indici degli orbitali attivi che quelli degli orbitali congelati per controllare il numero di orbitali (e il numero di qubit).
- Intervallo valido:
"mp2"o"ccsd"
- Obbligatorio: No
- Esempio:
{"basis": "sto3g", "unit": "angstrom" }
hivqe_options
Tipo: `dict`
Opzioni che regolano il comportamento dell'algoritmo HI-VQE.
Il seguente elenco riporta in dettaglio tutte le chiavi e i valori che possono essere impostati nel hivqe_options dizionario, insieme ai relativi tipi di dati e valori predefiniti. Tutte le chiavi sono facoltative.
shots
Tipo: `int`
Valore predefinito: `1_000`
Numero di calcoli da eseguire sul dispositivo quantistico per ogni iterazione.
- Intervallo valido: da 1 a 10 000
max_iter
Tipo: `int`
Valore predefinito: `25`
Il numero massimo di iterazioni da eseguire per ottimizzare l'ansatz. L'algoritmo potrebbe richiedere un numero inferiore di iterazioni se la convergenza viene raggiunta in anticipo.
- Intervallo valido: da 1 a 50
initial_basis_states
Tipo: `List[str]`
Valore predefinito: The Hartree-Fock state
Può essere utilizzato per riavviare l'algoritmo con gli stati classici derivati da un risultato precedente.
- Intervallo valido: stringhe binarie il cui numero di bit corrisponde al numero di qubit richiesto per il problema.
ansatz
Tipo: `str`
Valore predefinito: `epa`
Questo specifica l'ansatz quantistico da ottimizzare per generare nuovi stati. "epa" seleziona l'ansatz che preserva l'eccitazione. "hea" seleziona l'approccio efficiente dal punto di vista hardware. "lucj" seleziona l'ansatz di Jastrow per il cluster unitario locale.
- Intervallo valido:
"epa","hea", oppure"lucj"
convergence_count
Tipo: `int`
Valore predefinito: `3`
Il numero di iterazioni senza variazioni significative dell'energia calcolata che deve trascorrere prima che l'algoritmo sia considerato convergente.
- Almeno 2
convergence_abstol
Tipo: `float`
Valore predefinito: `1e-4`
L'entità della variazione dell'energia calcolata che viene considerata significativa ai fini delle verifiche di convergenza.
- Intervallo valido: compreso tra 0 e 1
reset_convergence_count
Tipo: `bool`
Valore predefinito: `True`
Affinché si possa Trueparlare di convergenza, le convergence_count iterazioni devono avvenire senza che si verifichino cambiamenti significativi che le interrompano. Se False, l'algoritmo si interromperà dopo convergence_count se in qualsiasi iterazione durante il processo di ottimizzazione si sono verificati cambiamenti irrilevanti.
- Intervallo valido:
TrueoFalse
configuration_recovery
Tipo: `bool`
Valore predefinito: `True`
Se utilizzare o meno la configurazione recovery del qiskit-addon-sqd pacchetto. Se il valore è True, gli stati non validi rilevati dal dispositivo quantistico vengono corretti in modo classico. Se il valore è falso, vengono scartati.
- Intervallo valido:
TrueoFalse
ansatz_entanglement
Tipo: `str`
Valore predefinito: `circular`
Questo specifica lo schema di entanglement da utilizzare all'interno del circuito quantistico, seguendo le convenzioni standard di Qiskit e ffsim per l'ansatz LUCJ.
- Intervallo valido: uno qualsiasi tra
"linear","reverse_linear","pairwise","circular","full", o"sca". Se si utilizza"lucj"l'ansatz, anche"lucj_default"questa è un'opzione.
ansatz_reps
Tipo: `int`
Valore predefinito: `2`
Il numero di ripetizioni di ciascun strato nel circuito quantistico.
- Intervallo valido: maggiore di 0
amplitude_screening_tolerance
Tipo: `Union[float,int]`
Valore predefinito: `0`
Il margine di tolleranza utilizzato per determinare quali stati debbano essere esclusi dal sottospazio dopo la diagonalizzazione. Specifica la soglia di inclusione per gli stati del sottospazio in base alle loro ampiezze calcolate.
- Intervallo valido: almeno 0 e meno di 1
overlap_screening_tolerance
Tipo: `float`
Valore predefinito: `1e-2`
La tolleranza utilizzata per determinare quali stati debbano essere esclusi dal sottospazio prima della diagonalizzazione. Controlla la precisione delle ampiezze previste per ciascuno stato; un valore più basso comporta previsioni più accurate.
- Intervallo valido: compreso tra
1e-4e1e-1, inclusi
- Obbligatorio: No
- Esempio:
{"shots": 10_000, "max_iter": 10 }
Output
La funzione restituisce un dizionario con quattro chiavi e valori. Le chiavi e i valori sono riportati nella tabella seguente:
Chiave | Tipo valore | Spiegazione |
|---|---|---|
"energy" | float | L'energia approssimativa dello stato fondamentale della molecola. |
"states" | List[str] | I fattori determinanti selezionati che costituiscono il sottospazio utilizzato per calcolare l'energia. Sono in formato alternato alfa-beta. |
"eigenvector" | List[float] | Il vettore proprio corrispondente allo stato fondamentale del sottospazio costituito da "states". |
"energy_variance" | float | La varianza energetica dello stato fondamentale del sottospazio costituito da "states", che fornisce un'indicazione della qualità della soluzione. Questo valore è non negativo e un valore più basso indica che lo stato fondamentale del sottospazio si avvicina maggiormente a uno stato proprio dell'Hamiltoniano del sistema. |
"energy_history" | List[float] | Le energie calcolate ad ogni iterazione durante il processo di ottimizzazione ibrida, nello stesso ordine in cui sono state calcolate. Nell'ambito del processo di ottimizzazione SPSA vengono calcolate due energie per ogni iterazione. |