Resultats Intermedis

Quan un funcional es construeix amb store_intermediate_results=True (actualment compatible amb AnalogEvolution i QuantumReservoir), o mitjançant mesures a mig circuit en un Circuit, el backend emmagatzema un resultat de readout per a cada pas de temps. Els mateixos mètodes de readout s’apliquen a cada pas.

from qilisdk.analog import Schedule, Z, X
from qilisdk.core import ket
from qilisdk.functionals import AnalogEvolution
from qilisdk.readout import Readout
from qilisdk.backends import QiliSim

T = 5.0
schedule = Schedule(
    hamiltonians={"driver": X(0), "problem": Z(0)},
    coefficients={
        "driver": {(0.0, T): lambda t: 1.0 - t / T},
        "problem": {(0.0, T): lambda t: t / T},
    },
    dt=0.1,
)

backend = QiliSim()
functional = AnalogEvolution(schedule, initial_state=ket(0), store_intermediate_results=True)
spec = Readout().with_expectation(observables=[Z(0)]).with_state_tomography()
result = backend.execute(functional, readout=spec)

# Per-step expectation values (intermediate steps + final step)
all_evs     = result.get_intermediate_expectation_values()  # list[list[float]]
all_states  = result.get_intermediate_states()              # list[QTensor]
all_probs   = result.get_intermediate_probabilities()       # list[dict[str, float]]
all_samples = result.get_intermediate_samples()             # list[dict[str, int]]

Propietat

Tipus

Requereix

result.get_intermediate_samples()

list[dict[str, int]]

.with_sampling()

result.get_intermediate_probabilities()

list[dict[str, float]]

.with_sampling() o .with_state_tomography()

result.get_intermediate_expectation_values()

list[list[float]]

.with_expectation()

result.get_intermediate_states()

list[QTensor]

.with_state_tomography()

Totes les llistes intermèdies contenen una entrada per pas de temps en ordre cronològic, amb el pas final afegit al final. result[i] retorna el ReadoutCompositeResults per al pas i.