ToQUBO

๐ŸŸฆ JuMP ToQUBO Automatic Reformulation

https://github.com/juliaqubo/toqubo.jl

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • โœ“
    CITATION.cff file
    Found CITATION.cff file
  • โœ“
    codemeta.json file
    Found codemeta.json file
  • โœ“
    .zenodo.json file
    Found .zenodo.json file
  • โœ“
    DOI references
    Found 3 DOI reference(s) in README
  • โœ“
    Academic publication links
    Links to: arxiv.org, zenodo.org
  • โ—‹
    Academic email domains
  • โ—‹
    Institutional organization owner
  • โ—‹
    JOSS paper metadata
  • โ—‹
    Scientific vocabulary similarity
    Low similarity (12.9%) to scientific vocabulary

Keywords

julia jump optimization qubo
Last synced: 6 months ago · JSON representation ·

Repository

๐ŸŸฆ JuMP ToQUBO Automatic Reformulation

Basic Info
Statistics
  • Stars: 31
  • Watchers: 10
  • Forks: 2
  • Open Issues: 12
  • Releases: 12
Topics
julia jump optimization qubo
Created over 4 years ago · Last pushed 11 months ago
Metadata Files
Readme License Citation

README.md

ToQUBO.jl ๐ŸŸฅ๐ŸŸฉ๐ŸŸช๐ŸŸฆ

ToQUBO.jl
arXiv CI JuliaCon 2022 Docs DOI

Introduction

ToQUBO.jl is a Julia package to reformulate general optimization problems into QUBO (Quadratic Unconstrained Binary Optimization) instances. This tool aims to convert a broad range of JuMP problems for straightforward application in many physics and physics-inspired solution methods whose normal optimization form is equivalent to the QUBO. These methods include quantum annealing, quantum gate-circuit optimization algorithms (Quantum Optimization Alternating Ansatz, Variational Quantum Eigensolver), other hardware-accelerated platforms, such as Coherent Ising Machines and Simulated Bifurcation Machines, and more traditional methods such as simulated annealing. During execution, ToQUBO.jl encodes both discrete and continuous variables, maps constraints, and computes their penalties, performing a few model optimization steps along the process. A simple interface to connect various annealers and samplers as QUBO solvers is defined in QUBODrivers.jl.

ToQUBO.jl was written as a MathOptInterface (MOI) layer that automatically maps between input and output models, thus providing a smooth JuMP modeling experience.

Getting Started

Installation

ToQUBO is available via Julia's Pkg:

```julia julia> using Pkg

julia> Pkg.add("ToQUBO") ```

Simple Example

```julia using JuMP using ToQUBO using QUBODrivers

model = Model(() -> ToQUBO.Optimizer(ExactSampler.Optimizer))

@variable(model, x[1:3], Bin) @constraint(model, 0.3x[1] + 0.5x[2] + 1.0x[3] <= 1.6) @objective(model, Max, 1.0x[1] + 2.0x[2] + 3.0x[3])

optimize!(model)

for i = 1:resultcount(model) xi = value.(x, result = i) yi = objectivevalue(model, result = i)

println("f($xi) = $yi")

end ```

List of Interpretable Constraints

Below, we present a list containing allโด MOI constraint types and their current reformulation support by ToQUBO.

Linear constraints

| Mathematical Constraint | MOI Function | MOI Set | Status | | -------------------------------------------- | -------------------- | ------------ | :----: | | $\vec{a}' \vec{x} \le \beta$ | ScalarAffineFunction | LessThan | โœ”๏ธ | | $\vec{a}' \vec{x} \ge \alpha$ | ScalarAffineFunction | GreaterThan | โ™ป๏ธ | | $\vec{a}' \vec{x} = \beta$ | ScalarAffineFunction | EqualTo | โœ”๏ธ | | $\alpha \le \vec{a}' \vec{x} \le \beta$ | ScalarAffineFunction | Interval | โ™ป๏ธ | | $xi \le \beta$ | VariableIndex | LessThan | โœ”๏ธ | | $xi \ge \alpha$ | VariableIndex | GreaterThan | โœ”๏ธ | | $xi = \beta$ | VariableIndex | EqualTo | โœ”๏ธ | | $\alpha \le xi \le \beta$ | VariableIndex | Interval | โœ”๏ธ | | $A \vec{x} + b \in \mathbb{R}{+}^{n}$ | VectorAffineFunction | Nonnegatives | โ™ป๏ธ | | $A \vec{x} + b \in \mathbb{R}{-}^{n}$ | VectorAffineFunction | Nonpositives | โ™ป๏ธ | | $A \vec{x} + b = 0$ | VectorAffineFunction | Zeros | โ™ป๏ธ |

Conic constraints

| Mathematical Constraint | MOI Function | MOI Set | Status | | ----------------------------------------------------------------------------------------------------------------- | -------------------- | -------------------------------- | :----: | | $\left\lVert{}{A \vec{x} + b}\right\rVert{}{2} \le \vec{c}' \vec{x} + d$ | VectorAffineFunction | SecondOrderCone | ๐Ÿ“– | | $y \ge \left\lVert{}{\vec{x}}\right\rVert{}{2}$ | VectorOfVariables | SecondOrderCone | ๐Ÿ“– | | $2 y z \ge \left\lVert{}{\vec{x}}\right\rVert{}{2}^{2}; y, z \ge 0$ | VectorOfVariables | RotatedSecondOrderCone | ๐Ÿ“– | | $\left( \vec{a}'1 \vec{x} + b1,\vec{a}'2 \vec{x} + b2,\vec{a}'3 \vec{x} + b3 \right) \in E$ | VectorAffineFunction | ExponentialCone | โŒ | | $A(\vec{x}) \in S{+}$ | VectorAffineFunction | PositiveSemidefiniteConeTriangle | โŒ | | $B(\vec{x}) \in S{+}$ | VectorAffineFunction | PositiveSemidefiniteConeSquare | โŒ | | $\vec{x} \in S{+}$ | VectorOfVariables | PositiveSemidefiniteConeTriangle | โŒ | | $\vec{x} \in S_{+}$ | VectorOfVariables | PositiveSemidefiniteConeSquare | โŒ |

Quadratic constraints

| Mathematical Constraint | MOI Function | MOI Set | Status | | ----------------------------------------------------- | ----------------------- | ------------------------ | :----: | | $\vec{x} Q \vec{x} + \vec{a}' \vec{x} + b \ge 0$ | ScalarQuadraticFunction | GreaterThan | โ™ป๏ธ | | $\vec{x} Q \vec{x} + \vec{a}' \vec{x} + b \le 0$ | ScalarQuadraticFunction | LessThan | โœ”๏ธ | | $\vec{x} Q \vec{x} + \vec{a}' \vec{x} + b = 0$ | ScalarQuadraticFunction | EqualTo | โœ”๏ธ | | Bilinear matrix inequality | VectorQuadraticFunction | PositiveSemidefiniteCone | โŒ |

Discrete and logical constraints

| Mathematical Constraint | MOI Function | MOI Set | Status | | ------------------------------------------------------------------------------------ | -------------------- | -------------- | :----: | | $xi \in \mathbb{Z}$ | VariableIndex | Integer | โœ”๏ธ | | $xi \in \left\lbrace{0, 1}\right\rbrace$ | VariableIndex | ZeroOne | โœ”๏ธ | | $xi \in \left\lbrace{0}\right\rbrace \cup \left[{l, u}\right]$ | VariableIndex | Semicontinuous | โŒ› | | $xi \in \left\lbrace{0}\right\rbrace \cup \left[{l, l + 1, \dots, u - 1, u}\right]$ | VariableIndex | Semiinteger | โŒ› | | ยน | VectorOfVariables | SOS1 | โœ”๏ธ | | ยฒ | VectorOfVariables | SOS2 | ๐Ÿ“– | | $y = 1 \implies \vec{a}' \vec{x} \in S$ | VectorAffineFunction | Indicator | ๐Ÿ“– |//////

ยน At most one component of x can be nonzero

ยฒ At most two components of x can be nonzero, and if so they must be adjacent components

| Symbol | Meaning | | :----: | ---------------------------------- | | โœ”๏ธ | Available | | โ™ป๏ธ | Available through Bridgesยณ | | โŒ | Unavailable | | โŒ› | Under Development (Available soon) | | ๐Ÿ“– | Under Research |

ยณ MOI Bridges provide equivalent constraint mapping.

โด If you think this list is incomplete, consider creating an Issue or opening a Pull Request.

Citing ToQUBO.jl

If you use ToQUBO.jl in your work, we kindly ask you to include the following citation: tex @software{toqubo:2023, author = {Pedro Maciel Xavier and Pedro Ripper and Tiago Andrade and Joaquim Dias Garcia and David E. Bernal Neira}, title = {{ToQUBO.jl}}, month = {feb}, year = {2023}, publisher = {Zenodo}, version = {v0.1.5}, doi = {10.5281/zenodo.7644291}, url = {https://doi.org/10.5281/zenodo.7644291} }


QUBO.jl Collaboration

Owner

  • Name: JuliaQUBO
  • Login: JuliaQUBO
  • Kind: organization

QUBO modelling, solvers & tools. A joint work of @psrenergy and @SECQUOIA

Citation (CITATION.bib)

% If you use this software, please cite it as below.
@software{toqubo:2023,
  author       = {Pedro Maciel Xavier and Pedro Ripper and Tiago Andrade and Joaquim Dias Garcia and David E. Bernal Neira},
  title        = {{ToQUBO.jl}},
  month        = {feb},
  year         = {2023},
  publisher    = {Zenodo},
  version      = {v0.1.5},
  doi          = {10.5281/zenodo.7644291},
  url          = {https://doi.org/10.5281/zenodo.7644291}
}

GitHub Events

Total
  • Create event: 4
  • Commit comment event: 4
  • Release event: 2
  • Issues event: 5
  • Watch event: 3
  • Issue comment event: 5
  • Push event: 11
  • Pull request review comment event: 1
  • Pull request review event: 2
  • Pull request event: 4
Last Year
  • Create event: 4
  • Commit comment event: 4
  • Release event: 2
  • Issues event: 5
  • Watch event: 3
  • Issue comment event: 5
  • Push event: 11
  • Pull request review comment event: 1
  • Pull request review event: 2
  • Pull request event: 4

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 52
  • Total pull requests: 36
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 7 days
  • Total issue authors: 11
  • Total pull request authors: 4
  • Average comments per issue: 1.65
  • Average comments per pull request: 0.89
  • Merged pull requests: 36
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 4
  • Pull requests: 2
  • Average time to close issues: 2 days
  • Average time to close pull requests: about 5 hours
  • Issue authors: 3
  • Pull request authors: 1
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • pedromxavier (23)
  • joaquimg (11)
  • pedroripper (5)
  • bernalde (3)
  • parkyr (2)
  • AndradeTiago (2)
  • alimaala2002 (1)
  • JavalVyas2000 (1)
  • iagoleal (1)
  • YummyPampers2 (1)
  • JuliaTagBot (1)
Pull Request Authors
  • pedromxavier (35)
  • metab0t (1)
  • pedroripper (1)
  • joaquimg (1)
Top Labels
Issue Labels
enhancement (12) bug (6) next steps (6) need tests (5) help wanted (5) urgent (4) documentation (3) idea (3) question (2) -O1 (2)
Pull Request Labels
documentation (4) urgent (3) bug (2) enhancement (2) need tests (1) next steps (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 5 total
  • Total dependent packages: 1
  • Total dependent repositories: 0
  • Total versions: 11
juliahub.com: ToQUBO

๐ŸŸฆ JuMP ToQUBO Automatic Reformulation

  • Versions: 11
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 5 Total
Rankings
Dependent repos count: 9.9%
Stargazers count: 23.4%
Average: 28.2%
Dependent packages count: 38.9%
Forks count: 40.4%
Last synced: 6 months ago