Skip to main content
IBM Quantum Platform

ColibriTD Riferimento API QUICK-PDE

  • Qiskit Functions

    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.


Input

use_case

Tipo: `Literal['MD', 'CFD']`

Seleziona il sistema di equazioni differenziali da risolvere

  • Specifico per un caso d'uso: No
  • Esempio: "CFD"

parameters

Tipo: `dict[str, Any]`

I parametri dell'equazione differenziale (parametri fisici e condizioni al contorno), che devono rispettare il formato indicato:

Caso d'uso
Chiave
Tipo di valore
Descrizione
Esempio
CFDafloatCoefficiente dei valori iniziali di uu1.0
CFDbfloatOffset dei valori iniziali di uu1.0
MPtfloattensione superficiale12.0
MPKfloatmodulo di compressibilità100.0
MPnintlegge di potenza4.0
MPbfloatforza per unità di massa10.0
MPepsilon_0floatlimite di sollecitazione proporzionale0.1
MPsigma_0floatlimite di deformazione proporzionale5.0
  • Specifico per un caso d'uso: No
  • Esempio: {"a": 1.0, "b": 1.0}

nb_qubits

Tipo: `Optional[dict[str, dict[str, int]]]`

Numero di qubit per funzione e per variabile. I valori ottimizzati vengono selezionati dalla funzione, ma se desideri provare a trovare una combinazione migliore, puoi sovrascrivere i valori predefiniti.

  • Specifico per un caso d'uso: No
  • Esempio: {"u": {"x": 1, "t":3}}

depth

Tipo: `Optional[dict[str, int]]`

Profondità dell'ansatz per funzione. I valori ottimizzati vengono selezionati dalla funzione, ma se desideri provare a trovare una combinazione migliore, puoi sovrascrivere i valori predefiniti.

  • Specifico per un caso d'uso: No
  • Esempio: {"u": 4}

optimizer

Tipo: `Optional[list[str]]`

Ottimizzatori da utilizzare: "CMAES" della libreria cma Python oppure uno degli ottimizzatori di SciPy

  • Specifico per il caso d'uso: MD
  • Esempio: "SLSQP"

shots

Tipo: `Optional[list[int]]`

Numero di colpi utilizzati per completare ogni circuito. Poiché sono necessarie diverse fasi di ottimizzazione, la lunghezza dell'elenco deve essere pari al numero di ottimizzatori utilizzati (4 nel caso del CFD). I valori predefiniti sono [50_000] * nb_optimizers per MD e [5_00, 2_000, 5_000, 10_000] per CFD.

  • Specifico per un caso d'uso: No
  • Esempio: [15_000, 30_000]

optimizer_options

Tipo: `Optional[dict[str, Any]]`

Opzioni da passare all'ottimizzatore. I dettagli di questo input dipendono dall'ottimizzatore utilizzato; per ulteriori informazioni, consultare la documentazione dell'ottimizzatore in uso.

  • Specifico per il caso d'uso: MD
  • Esempio: {"maxiter": 50 }

initialization

Tipo: `Optional[Literal['RANDOM', 'PHYSICALLY_INFORMED']]`

Valore predefinito: `PHYSICALLY_INFORMED`

Se iniziare con angolazioni casuali o con angolazioni scelte con cura. Attenzione: anche le angolazioni scelte con cura potrebbero non funzionare nel 100% dei casi.

  • Specifico per un caso d'uso: No
  • Esempio: "RANDOM"

backend_name

Tipo: `Optional[str]`

Il nome del backend da utilizzare.

  • Specifico per un caso d'uso: No
  • Esempio: ibm_torino

mode

Tipo: `Optional[Literal['job', 'session', 'batch']]`

Valore predefinito: `job`

La modalità di esecuzione da utilizzare.

  • Specifico per un caso d'uso: No
  • Esempio: "job"

Emissione

Il risultato è un dizionario contenente l'elenco dei punti di campionamento e i valori delle funzioni in ciascuno di questi punti:

from numpy import array
solution = {
    "functions": {
        "u": array(
            [
                [0.01, 0.1, 1],
                [0.02, 0.2, 2],
                [0.03, 0.3, 3],
                [0.04, 0.4, 4],
            ]
        ),
    },
    "samples": {
        "t": array([0.1, 0.2, 0.3, 0.4]),
        "x": array([0.5, 0.6, 0.7]),
    },
}

La forma di un array di soluzioni dipende dai campioni delle variabili:

assert len(solution["functions"]["u"].shape) == len(solution["samples"])
for col_size, samples in zip(
    solution["functions"]["u"].shape, solution["samples"].values()
):
    assert col_size == len(samples)

La corrispondenza tra i punti campione delle variabili della funzione e la dimensione dell'array delle soluzioni viene effettuata in ordine alfanumerico in base al nome della variabile. Ad esempio, se le variabili sono "t" e "x", una riga di solution["functions"]["u"] rappresenta i valori della soluzione per un valore fisso "t"di, mentre una colonna di solution["functions"]["u"] rappresenta i valori della soluzione per un valore fisso "x"di.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.