Riferimento API di Kipu Quantum Iskay Quantum Optimizer
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 Iskay Quantum Optimizer per Qiskit
Input
problem
Tipo: Dict[str, float]
I coefficienti del problema di ottimizzazione formulato in formato QUBO/HUBO o in formato spin. Per ulteriori informazioni sulla definizione del problema, consultare la sezione «Formati di problema ammessi ».
- Obbligatorio: sì
- Esempio:
{"()": -21.0, "(0, 4)": 0.5,"(0, 2)": 0.5,"(0, 1)": 0.5,"(1, 3)": 0.5}
problem_type
Tipo: str
Specificare se i coefficienti del problema sono in formato binario (QUBO/HUBO) o in formato di spin. Le due possibilità sono "spin" o "binary". Per ulteriori informazioni sulla definizione del problema, consultare la sezione «Formati di problema accettati ».
- Obbligatorio: sì
- Esempio:
"spin"
backend_name
Tipo: str
Nome del backend su cui eseguire la query
- Obbligatorio: sì
- Esempio:
"ibm_fez"
Opzioni
Tipo: Dict[str, Any]
Opzioni per la gestione dell'invio dei dati hardware, come il numero di scatti. Le opzioni per questa funzione sono specificate come un dizionario annidato. Consulta l 'elenco completo delle opzioni e i relativi valori predefiniti.
- Obbligatorio: No
- Esempio:
{"shots": 5000, "num_iterations": 3, "use_session": True, "seed_transpiler": 42}
Gli problem``problem_type argomenti e codificano un problema di ottimizzazione della forma
Dove
- Selezionando questa opzione
problem_type = "binary", si specifica che la funzione di costo è inbinaryformato, il che significa che , ovvero che la funzione di costo è scritta nella formulazione QUBO/HUBO. - D'altra parte, scegliendo
problem_type = "spin", la funzione di costo viene espressa nella formulazione di Ising, dove .
I coefficienti del problema devono essere inseriti in un dizionario come segue:
- Si prega di notare che le chiavi del dizionario devono essere stringhe contenenti una tupla valida di numeri interi non ripetuti.
Elenco opzioni
Iskay offre funzionalità di regolazione fine tramite parametri opzionali. Sebbene le impostazioni predefinite funzionino bene nella maggior parte dei casi, è possibile personalizzare il comportamento in base a esigenze specifiche:
shots
Tipo: `int`
Valore predefinito: 10000
Misurazioni quantistiche per iterazione (più alto = maggiore precisione)
num_iterations
Tipo: `int`
Valore predefinito: 10
Iterazioni dell'algoritmo (un numero maggiore di iterazioni può migliorare la qualità della soluzione)
use_session
Tipo: `bool`
Valore predefinito: True
Utilizza le sessioni " IBM " per ridurre i tempi di attesa
seed_transpiler
Tipo: `int`
Valore predefinito: None
Set per la compilazione di circuiti quantistici riproducibili.
Ottimizzazione dei semi : si noti che seed_transpiler è impostato su None per impostazione predefinita. Ciò consente l'avvio del processo di ottimizzazione automatica del transpiler. In tal caso None, il sistema avvierà una prova con più seed e selezionerà quello che produce la migliore profondità del circuito, sfruttando appieno la potenza del max_trials parametro per ciascun livello di transpile.
direct_qubit_mapping
Tipo: `bool`
Valore predefinito: False
Mappare direttamente i qubit virtuali ai qubit fisici
job_tags
Tipo: `List[str]`
Valore predefinito: None
Tag personalizzati per il monitoraggio delle attività
preprocessing_level
Tipo: `int`
Valore predefinito: 0
Intensità della pre-elaborazione del problema (0-3).
Livelli di pre-elaborazione (0-3) : particolarmente importanti per problemi di grandi dimensioni che attualmente non rientrano nei tempi di coerenza dell'hardware. Livelli di pre-elaborazione più elevati consentono di ottenere profondità di circuito inferiori grazie alle approssimazioni nella trasposizione del problema:
- Livello 0 : Percorsi precisi e più lunghi
- Livello 1 : buon equilibrio tra precisione e approssimazione, con l'esclusione solo dei cancelli con angoli che rientrano nel decimo percentile più basso
- Livello 2 : approssimazione leggermente più accurata, che esclude i gate con angoli nel 20° percentile più basso e utilizza
approximation_degree=0.95nella transpilazione - Livello 3 : Livello massimo di approssimazione, con l'eliminazione dei gate nel 30° percentile più basso e l'utilizzo
approximation_degree=0.90di nella transpilazione
postprocessing_level
Tipo: `int`
Valore predefinito: 2
Livello di affinamento della soluzione (0-2).
Livelli di post-elaborazione (0-2) : controlla l'intensità dell'ottimizzazione classica, compensando gli errori di inversione di bit con un numero variabile di passaggi avidi di una ricerca locale:
- Livello 0 : 1 passaggio
- Livello 1 : 2 passaggi
- Livello 2 : 3 passaggi
transpilation_level
Tipo: `int`
Valore predefinito: 0
Prove di ottimizzazione del transpiler (0-5).
Livelli di transpilazione (0-5) : controllano le impostazioni avanzate di ottimizzazione del transpiler per la compilazione dei circuiti quantistici. Ciò può comportare un aumento dei costi generali tradizionali e, in alcuni casi, potrebbe non modificare la complessità del circuito. Il valore 2 predefinito, in genere, consente di ottenere il circuito più piccolo ed è relativamente veloce.
- Livello 0 : Ottimizzazione del circuito DCQO scomposto (layout, instradamento, pianificazione)
- Livello 1 : Ottimizzazione di
PauliEvolutionGatee successivamente del circuito DCQO scomposto ( max_trials=10 ) - Livello 2 : Ottimizzazione di
PauliEvolutionGatee successivamente del circuito DCQO scomposto ( max_trials=15 ) - Livello 3 : Ottimizzazione del
PauliEvolutionGatecircuito DCQO e del circuito risultante dalla sua scomposizione ( max_trials=20 ) - Livello 4 : Ottimizzazione del
PauliEvolutionGatecircuito DCQO e del circuito risultante dalla sua scomposizione ( max_trials=25 ) - Livello 5 : Ottimizzazione di
PauliEvolutionGatee successivamente del circuito DCQO scomposto ( max_trials=50 )
transpile_only
Tipo: `bool`
Valore predefinito: False
Disponibile per gli utenti che desiderano analizzare l'ottimizzazione dei circuiti senza eseguire l'algoritmo quantistico nella sua interezza. Utile per l'analisi dei circuiti, gli studi di ottimizzazione della profondità e la comprensione degli effetti della transpilazione prima di procedere all'esecuzione completa.
Aumentare il numero di max_trials con valori più elevati per transpilation_level comporterà inevitabilmente un aumento del tempo di transpilazione, ma potrebbe non modificare sempre il circuito finale: ciò dipende in larga misura dalla struttura e dalla complessità specifiche del circuito. Per alcuni circuiti o problemi, tuttavia, la differenza tra 10 tentativi (livello 1) e 50 tentativi (livello 5) può essere notevole, quindi sperimentare questi parametri potrebbe essere la chiave per trovare una soluzione.
Emissione
Tipo: `Dict[str, Any]`
Soluzione e metadati. La struttura varia a seconda transpile_only dell'opzione scelta.
Dizionario dei risultati
La struttura del dizionario dei risultati dipende dalla modalità di esecuzione:
solution
Tipo: `Dict[str, int]`
La soluzione ordinata della mappa in cui le chiavi sono indici di variabili (sotto forma di stringhe) ordinati numericamente e i valori sono i corrispondenti valori delle variabili (1/-1 per i problemi di spin, 1/0 per i problemi binari).
- Modalità: Standard
- Esempio:
{'0': -1, '1': -1, '2': -1, '3': 1, '4': 1}
solution_info
Tipo: `Dict[str, Any]`
Informazioni dettagliate sulla soluzione.
- Modalità: Standard
- Esempio:
{'bitstring': '11100', 'cost': -13.8, 'seed_transpiler': 42, 'mapping': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}} - Esecuzione standard : quando il parametro opzionale
transpile_only=False, consultare il dizionario riportato di seguito.
bitstring
Tipo: `str`
La rappresentazione come stringa di bit grezza della soluzione.
cost
Tipo: `float`
Il rapporto costo/energia associato alla soluzione.
seed_transpiler
Tipo: `int`
Il seme casuale utilizzato dal transpiler che ha generato questo risultato.
mapping
Tipo: `Dict[int, int]`
La mappatura originale da qubit a variabile utilizzata nel calcolo.
qpu_time
Tipo: `float`, optional
Il tempo di esecuzione della QPU in secondi.
- Il
solutiondizionario viene ricavato dalla stringa di bit della soluzione, utilizzandomappingl'oggetto per indicizzare le variabili. - Quando
problem_type=spinutilizziamo l'assegnazione . - Le chiavi nel dizionario delle soluzioni sono indici variabili ordinati numericamente come stringhe.
prob_type
Tipo: `str`
Il tipo di problema di ottimizzazione (spin o binary)
- Modalità: Standard
- Esempio:
'spin'
transpilation_info
Tipo: `Dict[str, Any]`
Analisi del circuito e dettagli sulla transpilazione.
- Modalità: Solo transpilazione
- Esempio:
{'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}}} - Analisi della transpilazione : quando si utilizza il parametro opzionale
transpile_only=True, consultare il dizionario riportato di seguito:
best_seed
Tipo: `int`
Il seme ottimale individuato per la trapiantatura.
transpilation_time_seconds
Tipo: `float`
Tempo impiegato per il processo di transpilazione.
transpiled_circuit
Tipo: `Dict`
Analisi del circuito comprendente quanto segue:
depth
Tipo: `int`
Spessore del circuito (numero di strati)
gate_count
Tipo: `int`
Numero totale di porte nel circuito.
num_qubits
Tipo: `int`
Numero di qubit utilizzati.
width
Tipo: `int`
Larghezza del circuito.
operations
Tipo: `Dict[str, int]`
Conta di ciascun tipo di porta utilizzato.