ModelCostFunction
La classe ModelCostFunction fa de pont entre els models d’optimització clàssics i els objectes de resultat quàntic. Accepta qualsevol Model (incloent subclasses de conveniència com ara QUBO) i l’avalua contra les cadenes de bits mesurades o les amplituds d’un estat quàntic final.
Quan el model proporcionat és un QUBO, la funció de cost el converteix automàticament en un Hamiltonian i calcula el valor d’expectació. En cas contrari, mapeja cada mostra a les variables del model, les processa a través de evaluate(), i agrega els valors objectiu i de restricció resultants.
Exemple: puntuació de mostres d’un circuit variacional
from qilisdk.backends import QiliSim
from qilisdk.core.model import Model
from qilisdk.core.variables import BinaryVariable, LEQ
from qilisdk.cost_functions import ModelCostFunction
from qilisdk.digital import Circuit, RX, RZ, CNOT, M
from qilisdk.functionals import DigitalPropagation
from qilisdk.readout import Readout
import numpy as np
# Simple 2-qubit ansatz
circuit = Circuit(2)
circuit.add(RX(0, theta=np.pi / 2))
circuit.add(CNOT(0, 1))
circuit.add(RZ(1, phi=np.pi / 3))
circuit.add(M(0))
circuit.add(M(1))
functional = DigitalPropagation(circuit)
# Build a toy knapsack-like model
b0, b1 = (BinaryVariable("b0"), BinaryVariable("b1"))
model = Model("toy")
model.set_objective(2 * b0 + 3 * b1, label="obj")
model.add_constraint("limit", LEQ(b0 + b1, 1))
cost_fn = ModelCostFunction(model)
backend = QiliSim()
backend_result = backend.execute(functional, readout=Readout().with_sampling(nshots=1_000))
score = cost_fn.compute_cost(backend_result)
print("Aggregated model evaluation =", score)