Skip to content
Pasqal Documentation

Solving with a decomposition

from qubosolver import QUBOInstance
from qubosolver.solver import QuboSolver
from qubosolver.config import SolverConfig, DecompositionConfig
import torch
def generate_qubo_matrix(
size: int, density: float, value_range: tuple[int, int], seed: int | None = None
) -> torch.Tensor:
"""Generate a random symmetric qubo matrix with negative diagonal coefficients
and positive off-diagonal elements.
Args:
size (int): Size of qubo.
density (float): Density.
value_range (tuple[int, int]): Value range of elements.
seed (int | None, optional): Random seed for reproducibility. Defaults to None.
Returns:
torch.Tensor: Qubo matrix.
"""
import numpy as np
if seed is not None:
np.random.seed(seed)
matrix = np.zeros((size, size))
for i in range(size):
matrix[i, i] = -np.abs(np.random.uniform(0, 100)) # Negative diagonal
for j in range(i + 1, size):
if np.random.rand() < density:
value = np.abs(
np.random.uniform(value_range[0], value_range[1])
) # Positive off-diagonal
matrix[i, j] = value
matrix[j, i] = value
return torch.tensor(matrix)
decomposable_qubo = QUBOInstance(generate_qubo_matrix(80, 0.30, (0, 20), 1))
config = SolverConfig(use_quantum=True, decompose=DecompositionConfig())
solver = QuboSolver(decomposable_qubo, config)
solver.solve()
solver._solver.number_iterations