QUBODrivers.jl

๐Ÿ”ต Interface and drivers for integrating Solvers and Samplers with the JuMP/MOI ecosystem
Author psrenergy
Popularity
6 Stars
Updated Last
10 Months Ago
Started In
April 2023

QUBODrivers.jl ๐Ÿ”ด๐ŸŸข๐ŸŸฃ๐Ÿ”ต

Introduction

This package aims to provide a common MOI-compliant API for QUBO Sampling and Annealing machines. It also contains a few testing tools, including utility samplers for performance comparison and sanity checks, and some basic analysis features.

QUBO

Problems assigned to solvers defined within QUBODrivers.jl's interface are given by

$$\begin{array}{rl} \text{QUBO}:~ \displaystyle \min_{\mathbf{x}} & \displaystyle \alpha \left[{ \mathbf{x}' Q \mathbf{x} + \ell' \mathbf{x} + \beta }\right] \\ \text{s.t.} & \displaystyle \mathbf{x} \in S \cong \mathbb{B}^{n} \end{array}$$

where $Q \in \mathbb{R}^{n \times n}$ is a strictly upper triangular matrix and $\mathbf{\ell} \in \mathbb{R}^{n}$.

Quick Start

Installation

julia> import Pkg

julia> Pkg.add("QUBODrivers")

Example

using JuMP
using QUBODrivers

model = Model(ExactSampler.Optimizer)

Q = [
    -1.0  2.0  2.0
     2.0 -1.0  2.0
     2.0  2.0 -1.0
]

@variable(model, x[1:3], Bin)
@objective(model, Min, x' * Q * x)

optimize!(model)

for i = 1:result_count(model)
    xi = value.(x; result=i)
    yi = objective_value(model; result=i)
    
    println("f($xi) = $yi")
end

Badge

If your project is using QUBODrivers.jl, consider adding the official badge to your project's README file:

QUBODRIVERS

[![QUBODRIVERS](https://img.shields.io/badge/Powered%20by-QUBODrivers.jl-%20%234063d8)](https://github.com/psrenergy/QUBODrivers.jl)

PSR Quantum Optimization Toolchain

ToQUBO.jl QUBODrivers.jl QUBOTools.jl