Solving with classical heuristics
Several classical heuristics are made available for solving QUBOs such as tabu search or simulated annealing.
Quickstart: Solving a QUBO with Tabu Search
Section titled “Quickstart: Solving a QUBO with Tabu Search”Below, we show how to solve a QUBO problem using the Tabu Search solver.
In [ ]:
from qubosolver import QUBOInstancefrom qubosolver.solver import QuboSolverfrom qubosolver.config import SolverConfig, ClassicalConfig
qubo = QUBOInstance(coefficients=[[-2.0, 1.0], [1.0, -2.0]])
# we can return at most max_bitstrings solutions.config = SolverConfig(use_quantum = False, classical=ClassicalConfig(classical_solver_type="tabu_search", max_bitstrings=2))
solver = QuboSolver(qubo, config)
solution = solver.solve()print(solution)QUBOSolution(bitstrings=tensor([[1, 0]], dtype=torch.int32), costs=tensor([-2.]), counts=tensor([2]), probabilities=tensor([1.]), solution_status=<SolutionStatusType.UNPROCESSED: 'unprocessed'>)
Quickstart: Solving a QUBO with Simulated Annealing
Section titled “Quickstart: Solving a QUBO with Simulated Annealing”Below, we show how to solve a QUBO problem using the Simulated Annealing solver.
In [ ]:
from qubosolver import QUBOInstancefrom qubosolver.solver import QuboSolverfrom qubosolver.config import SolverConfig, ClassicalConfig
qubo = QUBOInstance(coefficients=[[-2.0, 1.0], [1.0, -2.0]])config = SolverConfig(use_quantum = False, classical=ClassicalConfig(classical_solver_type="simulated_annealing", max_bitstrings=2))
solver = QuboSolver(qubo, config)
solution = solver.solve()print(solution)QUBOSolution(bitstrings=tensor([[0, 1],
[1, 1]], dtype=torch.int32), costs=tensor([-4., -4.], dtype=torch.float64), counts=tensor([1, 1]), probabilities=tensor([0.5000, 0.5000]), solution_status=<SolutionStatusType.UNPROCESSED: 'unprocessed'>)
Quickstart: Solving a QUBO with Simulated Annealing followed by tabu search
Section titled “Quickstart: Solving a QUBO with Simulated Annealing followed by tabu search”Below, we show how to solve a QUBO problem using the Simulated Annealing solver, followed by Tabu Search.
In [ ]:
from qubosolver import QUBOInstancefrom qubosolver.solver import QuboSolverfrom qubosolver.config import SolverConfig, ClassicalConfig
qubo = QUBOInstance(coefficients=[[-2.0, 1.0], [1.0, -2.0]])config = SolverConfig(use_quantum = False, classical=ClassicalConfig(classical_solver_type="simulated_annealing_tabu_search", max_bitstrings=2))
solver = QuboSolver(qubo, config)
solution = solver.solve()print(solution)QUBOSolution(bitstrings=tensor([[0, 1]], dtype=torch.int32), costs=tensor([-2.]), counts=tensor([2]), probabilities=tensor([1.]), solution_status=<SolutionStatusType.UNPROCESSED: 'unprocessed'>)