ModelCostFunction
The ModelCostFunction bridges classical optimization models with
quantum result objects. It accepts any Model (including convenience subclasses such as
QUBO) and evaluates it against measured bitstrings or the amplitudes of a final quantum
state.
When the provided model is a QUBO, the cost function automatically converts it into a
Hamiltonian and computes the expectation value. Otherwise, it maps each sample to the model’s variables, feeds them
through evaluate(), and aggregates the resulting objective and constraint values.
Example: scoring samples from a variational circuit
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)