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

Bases : ModelSolve

Résout l'équation ModelData tout en minimisant la positivité des taux de Pauli-Lindblad.

Exige que le Fit utilise un PauliLindbladModel.

Pour un ensemble de portes G\mathcal{G}, notons {rG,P}\{r_{G, P}\} les taux de Pauli-Lindblad sur les ensembles de générateurs dépendants des portes K(G)\mathcal{K}(G), AA la matrice de conception et bb les données observées. En ce qui concerne les paramètres de l'algorithme définis par l'utilisateur :

  • Coefficients de porte {cG∈R:G∈G}\{c_G \in \mathbb{R} : G \in \mathcal{G}\},
  • Limites de l'ajustement global ϵ>0\epsilon > 0, et
  • Limites d'ajustement local δP\delta_P pour chaque chemin PP mesurées dans la matrice de conception,

Cette classe résout le problème d'optimisation convexe suivant :

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})

sous réserve de :

  • ∥W(Ar−b)∥2≤ϵ\|W (A r - b)\|_2 \leq \epsilon
  • ∣(Ar−b)i∣≤δi|(Ar - b)_i| \leq \delta_i pour chaque ligne ii
  • r≥0r \geq 0 (facultatif)

Consultez cette section pour ModelSolve plus de détails sur le rôle général d'un solveur de modèles dans cette bibliothèque.

Les limites des contraintes sont définies sous forme de politiques : des fonctions appelables qui reçoivent l'heure de résolution et LinearSystemData renvoient la limite correspondante.

Paramètres

  • coefficients – Coefficients par porte pour la fonction objectif, sous la forme d'une correspondance entre le nom de la porte et une valeur de type float.
  • epsilon – Politique renvoyant la tolérance pour la contrainte globale de norme d’ L2 e pondérée. Il faut deltas indiquer au moins l’un des éléments suivants : ou epsilon .
  • deltas – Politique renvoyant les tolérances par ligne sous la forme d’une correspondance entre Path et un nombre à virgule flottante. Elle doit couvrir toutes les lignes du système linéaire, car une ligne absente de la correspondance resterait sans contrainte. Il faut deltas indiquer au moins l'un des éléments suivants : ou epsilon .
  • poids – Politique renvoyant la matrice de poids pour W la contrainte « L2 » sous la forme d’un objet IndexedMatrix dont les indices de lignes et de colonnes sont des objets Path . La valeur par défaut est IDENTITY. Une ligne ou une colonne du système linéaire qui n'apparaît pas dans W est pondérée zéro, ce qui fait disparaître son résidu de la norme. Utilisé uniquement lorsque epsilon est fourni.
  • non_negative – Indique s'il faut appliquer cette règle x >= 0.

Augmentations

  • TypeError : si epsilon, ou deltas weights est spécifié comme une valeur fixe plutôt que comme une politique. Utilisez from_constants() pour les valeurs fixes.
  • ValueError : lors de la résolution, si la politique weights deltas ou génère une étiquette qui n'est pas une ligne du système linéaire, ou si en deltas omet une.
  • RuntimeError : lors du calcul de la solution, si le solveur convexe ne renvoie pas de solution, par exemple parce que les contraintes ne sont pas réalisables.

__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)


Méthodes

Chronique « 1 »
Chronique « 2 »
__init__(coefficients[, epsilon, deltas, ...])
from_constants(coefficients[, epsilon, ...])Construire à partir de limites constantes fixes plutôt que de politiques basées sur les données.
from_data_scaled_deltas(coefficients[, ...])Construire à l'aide d'une politique « delta-only » fondée sur l'incertitude statistique des grandeurs observables.
run(adapté)Exécutez cette étape, qui renvoie un nouvel objet Fit dont le champ « niveau de sortie » est renseigné.

Attributs

Chronique « 1 »
Chronique « 2 »
input_levelLe niveau de données lu à cette étape.
output_levelLe niveau de données sur lequel cette étape effectue l'écriture.

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

Construire à partir de limites constantes fixes plutôt que de politiques basées sur les données.

Chaque constante fournie est encapsulée dans une politique qui ignore les données et les renvoie telles quelles. Consultez la chaîne de documentation de la classe pour connaître la signification de chaque argument; ici, il s'agit de valeurs fixes et non d'objets appelables.

from_data_scaled_deltas

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

Construire à l'aide d'une politique « delta-only » fondée sur l'incertitude statistique des grandeurs observables.

La tolérance de chaque ligne est déterminée à partir de l'incertitude statistique propre à cette ligne et de l'indice d'adéquation de son ajustement exponentiel. Pour la ligne ii e, avec 1le sigma statistique et sigma_b le chi carré réduit tirés chi2_red de l'entrée "reduced_chi_squared" de 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}

Le réglage proportionnel delta_i à sigma respecte le principe de divergence de Morozov (en prévoyant une marge d'environ écarts-types scale ). Comme les rapports curve_fit sigma_b avec absolute_sigma=True, il ne tient pas compte des écarts de modèle; le sqrt(chi2_red) facteur assouplit les lignes dont l'ajustement exponentiel est médiocre, et la max(1, .) limite signifie que les écarts ne peuvent qu'assouplir une ligne, sans jamais la resserrer en dessous de son incertitude statistique. Les lignes dont la valeur est indéfinie ( chi2_red``nan par exemple, les lignes moyennées) et toutes les lignes pour lesquelles le système ne fournit aucun "reduced_chi_squared" diagnostic ne subissent aucune inflation. Si le modèle ne peut pas être ajusté dans les limites des tolérances obtenues, le programme signale un problème irréalisable, et scale permet de desserrer toutes les rangées en une seule fois.

Une ligne dont l'incertitude est non positive ou non finie ne fournit aucune information statistique permettant de la mettre à l'échelle; par conséquent, au lieu d'être considérée comme une ligne extrêmement précise, on lui attribue la tolérance médiane des lignes qui présentent une incertitude exploitable. Cela permet de conserver une telle ligne dans l'ajustement à une échelle typique sans qu'elle ne contraigne la solution à une quasi-égalité, et la tolérance d'aucune ligne ne dépend jamais de l'incertitude d'une autre ligne, sauf par le biais de cette substitution.

Paramètres

  • coefficients – Coefficients par porte pour la fonction objectif, sous la forme d'une correspondance entre le nom de la porte et une valeur de type float.
  • échelle – Coefficient multiplicateur de la tolérance par ligne, exprimé en écarts-types (gonflés).
  • non_negative – Indique s'il faut appliquer cette règle x >= 0.

Augmentations

ValueError : au moment de la résolution, si aucune ligne du système linéaire ne présente d'incertitude positive et finie, il n'y a donc rien à partir de quoi calculer les tolérances.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.