Skip to main content
IBM Quantum Platform

qiskit_noise_learning.analysis.PositivityMinSolve

class qiskit_noise_learning.analysis.PositivityMinSolve(coefficients: dict[str, float], epsilon: Callable[[LinearSystemData], float] | None = None, deltas: Callable[[LinearSystemData], Mapping[Hashable, float]] | None = None, weights: Callable[[LinearSystemData], IndexedMatrix] | None = None, non_negative: bool = False)

GitHub

Basi: ModelSolve

Risolve l'equazione minimizzando ModelData al contempo la positività del tasso di Pauli-Lindblad.

Richiede che il Fit utilizzi un PauliLindbladModel.

Per un insieme di gate G\mathcal{G}, si indichi con {rG,P}\{r_{G, P}\} i tassi di Pauli-Lindblad sugli insiemi di generatori dipendenti dai gate K(G)\mathcal{K}(G), con AA la matrice di progettazione e con bb i dati osservati. Per i parametri dell'algoritmo specificati dall'utente:

  • Coefficienti di gate {cG∈R:G∈G}\{c_G \in \mathbb{R} : G \in \mathcal{G}\},
  • Intervallo di adattamento globale ϵ>0\epsilon > 0 e
  • I limiti di adattamento locale δP\delta_P per ciascun percorso PP misurati nella matrice di progettazione,

Questa classe risolve il problema di ottimizzazione convessa:

min⁡∑G∈GcG∑P∈K(G)max⁡(0,rP,G)\min \sum_{G \in \mathcal{G}} c_G \sum_{P \in \mathcal{K}(G)} \max(0, r_{P, G})

a condizione che:

  • ∥W(Ar−b)∥2≤ϵ\|W (A r - b)\|_2 \leq \epsilon
  • ∣(Ar−b)i∣≤δi|(Ar - b)_i| \leq \delta_i per ogni riga ii
  • r≥0r \geq 0 (facoltativo)

Per ModelSolve ulteriori dettagli sulla responsabilità generale di un risolutore di modelli in questa libreria, consultare [...].

I limiti dei vincoli sono specificati come policy : funzioni richiamabili che ricevono il tempo di risoluzione e LinearSystemData restituiscono il limite corrispondente.

Parametri

  • coefficienti – Coefficienti per ciascun gate relativi alla funzione obiettivo, definiti come mappatura dal nome del gate a un valore di tipo float.
  • epsilon – Politica che restituisce la tolleranza per il vincolo complessivo della norma " L2 " ponderata. deltas È necessario specificare almeno uno tra e epsilon .
  • deltas – Politica che restituisce le tolleranze per riga come mappatura da Path a float. Deve coprire ogni riga del sistema lineare, poiché una riga assente dalla mappatura rimarrebbe senza vincoli. deltas È necessario specificare almeno uno tra e epsilon .
  • pesi – Politica che restituisce la matrice dei pesi per W il vincolo “ L2 ” sotto forma di un oggetto i IndexedMatrix cui indici di riga e colonna sono Path oggetti. Il valore predefinito è l'identità. Una riga o una colonna del sistema lineare non presente in W ha peso zero, il che fa sì che il suo residuo venga escluso dalla norma. Viene utilizzato solo quando epsilon è specificato.
  • non_negative – Se applicare o meno la regola x >= 0.

Aumenti

  • TypeError : se epsilon, o deltas weights viene specificato come valore fisso anziché come politica. Utilizzare from_constants() per i valori fissi.
  • ValueError : in fase di risoluzione, se la politica weights deltas o produce un’etichetta che non è una riga del sistema lineare, oppure se ne deltas omette una.
  • RuntimeError : in fase di risoluzione, se il risolutore convesso non restituisce una soluzione, ad esempio perché i vincoli sono infeasibili.

__init__

__init__(coefficients: dict[str, float], epsilon: Callable[[LinearSystemData], float] | None = None, deltas: Callable[[LinearSystemData], Mapping[Hashable, float]] | None = None, weights: Callable[[LinearSystemData], IndexedMatrix] | None = None, non_negative: bool = False)


Metodi

Rubrica 1
Rubrica 2
__init__(coefficienti[, epsilon, deltas, ...])
from_constants(coefficienti[, epsilon, ...])Costruire sulla base di limiti costanti fissi anziché di politiche basate sui dati.
from_data_scaled_deltas(coefficienti[, ...])Costruire una politica basata esclusivamente sul delta, fondandosi sull'incertezza statistica delle grandezze osservabili.
run(adatto)Esegui questa fase, restituendo un nuovo oggetto Fit con il livello di output compilato.

Attributi

Rubrica 1
Rubrica 2
input_levelIl livello di dati letto in questa fase.
output_levelIl livello di dati in cui questa fase effettua la scrittura.

from_constants

classmethod from_constants(coefficients: dict[str, float], epsilon: float | None = None, deltas: Mapping[Path, float] | None = None, weights: IndexedMatrix | None = None, non_negative: bool = False) → Self

Costruire sulla base di limiti costanti fissi anziché di politiche basate sui dati.

Ogni costante fornita è racchiusa in una policy che ignora i dati e li restituisce. Per il significato di ciascun argomento, consultare la stringa di documentazione della classe; in questo caso si tratta di valori fissi anziché di oggetti chiamabili.

from_data_scaled_deltas

classmethod from_data_scaled_deltas(coefficients: dict[str, float], scale: float = 1.0, non_negative: bool = False) → Self

Costruire una politica basata esclusivamente sul delta, fondandosi sull'incertezza statistica delle grandezze osservabili.

La tolleranza di ciascuna riga viene determinata in base all’incertezza statistica della riga stessa e all’indice di adattamento dell’adattamento esponenziale. Per la riga ii e, con il valore statistico 1-sigma e sigma_b il chi-quadrato ridotto ricavati chi2_red dalla voce "reduced_chi_squared" di row_diagnostics:

inflationi=max⁡(1,chi2_redi)δi=scale⋅inflationi⋅σb,i\begin{split}\mathrm{inflation}_i &= \max(1, \sqrt{\mathrm{chi2\_red}_i}) \\ \delta_i &= \mathrm{scale} \cdot \mathrm{inflation}_i \cdot \sigma_{b, i}\end{split}

L'impostazione delta_i proporzionale a sigma segue il principio di discrepanza di Morozov (prevedendo un margine di circa deviazioni standard scale ). Poiché le stime curve_fit sigma_b con absolute_sigma=True, il metodo non tiene conto della discrepanza tra il modello e i dati; il sqrt(chi2_red) fattore allenta le righe il cui adattamento esponenziale è scadente, mentre il max(1, .) limite fa sì che la discrepanza possa solo allentare una riga, senza mai stringere il modello al di sotto della sua incertezza statistica. Le righe con un valore non definito ( chi2_red``nan ad esempio, le righe mediate) e tutte le righe per le quali il sistema non fornisce alcuna informazione diagnostica "reduced_chi_squared" non subiscono alcuna inflazione. Se il modello non può essere adattato entro le tolleranze risultanti, il programma di risoluzione segnala un problema non fattibile, e scale è la manopola che allenta tutte le righe contemporaneamente.

Una riga la cui incertezza non è positiva o non è finita non fornisce alcuna informazione statistica su cui basare la scalatura; pertanto, anziché essere considerata come una riga estremamente precisa, le viene assegnata la tolleranza mediana delle righe che presentano invece un’incertezza utilizzabile. Ciò mantiene tale riga nell'adattamento a una scala tipica senza che essa vincoli la soluzione a una quasi-uguaglianza, e la tolleranza di nessuna riga dipende mai dall'incertezza di un'altra riga se non attraverso questa sostituzione.

Parametri

  • coefficienti – Coefficienti per ciascun gate relativi alla funzione obiettivo, definiti come mappatura dal nome del gate a un valore di tipo float.
  • scala – Moltiplicatore della tolleranza per riga, espresso in deviazioni standard (gonfiate).
  • non_negative – Se applicare o meno la regola x >= 0.

Aumenti

ValueError : al momento della risoluzione, se nessuna riga del sistema lineare presenta un’incertezza positiva e finita, non rimane nulla da cui ricavare le tolleranze.

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