Función de Coste del Modelo

La clase ModelCostFunction conecta los modelos de optimización clásica con los objetos de resultados cuánticos. Acepta cualquier Model (incluidas subclases de conveniencia como QUBO) y lo evalúa frente a cadenas de bits medidas o las amplitudes de un estado cuántico final.

Cuando el modelo proporcionado es un QUBO, la función de coste lo convierte automáticamente en un Hamiltonian y calcula el valor esperado. En caso contrario, asigna cada muestra a las variables del modelo, las procesa a través de evaluate() y agrega los valores resultantes de objetivo y restricciones.

Ejemplo: puntuación de muestras de un circuito 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)