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
Repository
๐ฆ JuMP ToQUBO Automatic Reformulation
Basic Info
- Host: GitHub
- Owner: JuliaQUBO
- License: other
- Language: Julia
- Default Branch: master
- Homepage: https://juliaqubo.github.io/ToQUBO.jl/
- Size: 2 MB
Statistics
- Stars: 31
- Watchers: 10
- Forks: 2
- Open Issues: 12
- Releases: 12
Topics
Metadata Files
README.md
ToQUBO.jl ๐ฅ๐ฉ๐ช๐ฆ
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}
}
Owner
- Name: JuliaQUBO
- Login: JuliaQUBO
- Kind: organization
- Repositories: 1
- Profile: https://github.com/JuliaQUBO
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
Pull Request Labels
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
- Homepage: https://juliaqubo.github.io/ToQUBO.jl/
- Documentation: https://docs.juliahub.com/General/ToQUBO/stable/
- License: MPL-2.0
-
Latest release: 0.1.10
published 11 months ago